คุณต้องเพิ่มฟังก์ชันตัวจัดการสำหรับเรียกใช้ปุ่มคุณสร้างขึ้นในแฟ้มทรัพยากรการโต้ตอบ?
เมื่อต้องการสร้างตัวจัดการปุ่ม Run
CTRL และคลิกสองครั้งที่ปุ่มเรียกใช้งาน ฟังก์ชันCTestProvDlg::OnRunปรากฏขึ้นในหน้าต่างแหล่งที่มา?เมื่อต้องการสร้างตัวจัดการ คุณต้องใช้คลาสที่ OLE DB Consumer แม่ต่อไป:
แต่ละชั้นเรียนเหล่านี้สอดคล้องกับวัตถุ COM ในผู้ให้บริการ?
เพิ่มรหัสที่แสดงด้านล่าง ในรหัสนี้จัดการ วัตถุCCommandใช้คลาสCProviderเป็นพารามิเตอร์แม่ พารามิเตอร์นี้แสดงถึงการรวมใช้ตัวให้บริการการเข้าถึงข้อมูล?
///////////////////////////////////////////////////////////////////////
/ / TestProvDlg.cpp
โมฆะ CTestProvDlg::OnRun()
{
CCommandltCAccessor <CProvider> > ตาราง
แหล่งที่มาของ CDataSource
CSession เซสชัน
ถ้า (แหล่งที่มาOpen("MyProvider.MyProvider.1", NULL) ! = S_OK)
กลับ
ถ้า (เซสชันนี้Open(source) ! = S_OK)
กลับ
ถ้า (ตารางเปิด (เซสชัน _T("c:\\public\\testprf2\\gloo.txt")) ! = S_OK)
กลับ
ในขณะที่ (ตารางMoveNext() == S_OK)
{
m_ctlString1.AddString(table.szCommand)
m_ctlString2.AddString(table.szText)
}
}
ตัวจัดการการใช้สามเปิดสาย แสดงอยู่ด้านล่าง ซึ่งสอดคล้องกับวัตถุ COM สามในผู้ให้บริการ หาตำแหน่งที่จะตั้งตัวให้บริการ โดยใช้ProgIDของ คุณสามารถขอรับProgIDจากรีจิสทรีของระบบ หรือ โดยการหาในตัวให้บริการ rgs แฟ้ม ( MyProvider.rgs สำหรับผู้ให้บริการแบบง่ายแสดงในการนำเป็นผู้ให้บริการแบบง่าย ๆ) ผู้ให้บริการเปิดแฟ้มข้อความที่ชื่อ gloo.txt ซึ่งประกอบด้วยเป็นจำนวนคู่ของสายอักขระที่ถูกคั่น ด้วยอักขระขึ้นบรรทัดการส่งกลับ เปิดผ่าน pathname ในแฟ้มไปยังผู้ให้บริการเป็นสตริการผู้ให้บริการ?
ถ้า (แหล่งที่มาOpen("MyProvider.MyProvider.1", NULL) ! = S_OK)
กลับ
ถ้า (เซสชันนี้Open(source) ! = S_OK)
กลับ
ถ้า (ตารางเปิด (เซสชัน _T("c:\\public\\testprf2\\gloo.txt")) ! = S_OK)
กลับ
การดึงข้อมูล การจัดการโทร table.MoveNext ดังแสดงด้านล่าง เมื่อมี ไม่มีแถวเพิ่มเติมจากผู้ให้บริการส่งกลับค่าDB_S_ENDOFROWSETและสิ้นสุดลงของการวนรอบ คำสั่งควบคุมการวนรอบเปรียบเทียบค่าส่งคืนS_OK ถ้ารหัสใช้แมโครสำเร็จแล้วการวนรอบจะไม่สิ้นสุดเนื่องจากDB_S_ENDOFROWSETจะถือว่ารหัสส่งกลับประสบความสำเร็จ?
ในขณะที่ (ตารางMoveNext() == S_OK)
{
m_ctlString1.AddString(table.szCommand)
m_ctlString2.AddString(table.szText)
}
ผู้บริโภคที่มีพร้อมสำหรับการทดสอบกับผู้ให้บริการวิ (ถูกสร้างขึ้นในการใช้ตัวให้บริการแบบง่าย ๆ)?
หัวข้อถัดไปแสดงวิธีการแก้ไขที่ผู้บริโภคใช้กับการปรับปรุงการให้บริการที่ใช้อินเทอร์เฟซสำหรับIRowsetLocate?