CWnd::OnDSCNotify

afx_msg BOOL OnDSCNotify (DSCSTATE nState, DSCREASON nReason, BOOL pBool );

ส่งกลับค่า

ส่งกลับค่าTRUEถ้าการดำเนินการแทน โดยnReasonและnStateถูกจัดการ มิฉะนั้น ส่งกลับค่าเป็น FALSE?

พารามิเตอร์

nState

ค่าตั้งชื่อคงพบในตัวแจงนับDSCSTATEซึ่งอยู่ภายใต้ข้อสังเกตหนึ่ง?

nReason

ค่าตั้งชื่อคงพบในตัวแจงนับDSCREASONซึ่งอยู่ภายใต้ข้อสังเกตหนึ่ง?

pBool

คำตอบแบบบูลีที่บ่งชี้ว่า ควรดำเนินการดำเนินการแทน โดยnStateและnReason?

หมายเหตุ

การแจ้งเตือนของอ่างนี้เรียกว่าในการตอบสนองต่อเหตุการณ์ที่ตัวควบคุมแหล่งข้อมูล fires เมื่อตัวควบคุมถูกผูกตัวควบคุมแหล่งข้อมูลปรับเปลี่ยน หรือความพยายามที่จะปรับเปลี่ยนเคอร์เซอร์เป็นต้น ใช้มันเพื่อดักจับสาเหตุ (nReason) และอเมริกา (nState) สร้างขึ้น โดยตัวควบคุมแหล่งข้อมูล ชุดทั้งหมดของอเมริกาและสาเหตุที่ได้รับอนุญาต โดยค่าเริ่มต้น เขียนโค้ดของคุณในการทดสอบอเมริกาและสาเหตุที่สำคัญสำหรับโปรแกรมประยุกต์ของคุณ และส่งกลับค่าTRUEหรือFALSEตามความเหมาะสม?

การใช้OnDSCNotifyประกาศแผนที่อ่างและตัวจัดการสำหรับการแจ้งเตือนของอ่างในส่วนหัวของชั้นที่ต้องการได้รับการแจ้งเตือนของอ่างเป็นดังนี้:

คลา CMyDlg: CDialog สาธารณะ
{
   ...
   DECLARE_EVENTSINK_MAP()
   BOOL OnDSCNotify(DSCSTATE nState,
             DSCREASON nReason, BOOL * pBool);
   ...
}

แล้ว ในการใช้งานของคลาส กำหนดแผนที่อ่าง และระบุฟังก์ชันการรับเหตุการณ์เป็นดังนี้:

BEGIN_EVENTSINK_MAP (CMyDlg, CDialog)
   ON_DSCNOTIFY (CMyDlg, IDC_RDCCTRL1, OnDSCNotify)
END_EVENTSINK_MAP()

เรียกกลับฟังก์ชันการแจ้งเตือนOnDSCNotifyงานของคุณจะถูกเรียกเมื่อมีเหตุการณ์ต่อไปนี้เกิดขึ้นภายในตัวควบคุมแหล่งข้อมูล:

enum DSCREASON
{
   dscNoReason = 0
   dscClose, dscCommit, dscDelete
   dscEdit, dscInsert, dscModify, dscMove
}

มันจะยังเรียกหลายครั้งสำหรับแต่ละสถานะต่อไปนี้:

enum DSCSTATE
{
   dscNoState = 0
   dscOKToDo
   dscCancelled
   dscSyncBefore
   dscAboutToDo
   dscFailedToDo
   dscSyncAfter
   dscDidEvent
}

การโทรหลายอนุญาตให้คุณเพื่อดักจับเหตุการณ์ในช่วงเวลาที่แตกต่างกัน ตัวอย่างเช่น ตั้งแต่สร้างเหตุการณ์ปกติขึ้นตอบสนองต่อการปรับเปลี่ยนสถานะเคอร์เซอร์ โดยตัวควบคุม สิ่งแรกที่จะทำตัวควบคุมแหล่งข้อมูลคือการ ปล่อยเหตุการณ์ที่ถามว่า ถ้า มันจะถูกดำเนินการที่กระทำ จริง ๆ เพราะเหตุผลสำหรับสถานะdscOKToDo ถ้าไคลเอนต์ทั้งหมดที่ตรวจสอบเหตุการณ์ (ตัวควบคุมข้อมูล การประยุกต์ และอื่น ๆ) รับเหตุการณ์ ตัวควบคุมแหล่งข้อมูลแล้วจะย้ายเข้าสู่สถานะdscSyncBeforeเวลาที่ข้อมูลค้างชำระทั้งหมดจะสามารถล้างข้อมูล ถ้าจำเป็น ตัวอย่างเช่น ถ้ามีการเปลี่ยนแปลงเนื้อหาของเขตข้อมูลแก้ไข การเปลี่ยนแปลงจะมุ่งมั่นที่จะเคอร์เซอร์ ต่อเหตุการณ์นี้ ตัวควบคุมแหล่งข้อมูลย้ายลงในอเมริกาdscAboutToDoและdscSyncAfterและสุดท้ายเข้าสู่สถานะdscDidEvent เหล่านี้ให้คุณ มีโอกาสเพิ่มเติมเพื่อรับการแจ้งเตือนจากตัวควบคุมแหล่งข้อมูล?

ภาพรวม CWnd |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)

ดูเพิ่มเติมnbspCWnd::GetDSCCursor, CWnd::BindDefaultProperty, CWnd::BindProperty(&N)

Index