หมายเหตุนี้อธิบายภายใน Windows ข้อความและรูปแบบการทรัพยากรที่ใช้ โดย MFC ข้อมูลนี้อธิบายการใช้งานกรอบ และจะช่วยคุณในการดีบักโปรแกรมประยุกต์ของคุณ สำหรับที่หวาดเสียว แม้ว่าข้อมูลทั้งหมดนี้ได้รับการสนับสนุนทาง คุณอาจใช้ข้อมูลบางส่วนนี้สำหรับการใช้งานขั้นสูง?
หมายเหตุนี้ประกอบด้วยรายละเอียดของการใช้งานส่วนตัวของ MFC เนื้อหาทั้งหมดอยู่ภายใต้การเปลี่ยนแปลงในอนาคต MFC ข้อความ Windows ส่วนตัวมีความหมายในขอบเขตของโปรแกรมประยุกต์ที่หนึ่งเท่านั้น แต่จะเปลี่ยนแปลงในอนาคตจะประกอบด้วยข้อความทั้งระบบ?
ทรัพยากรชนิดและช่วงของ MFC ข้อความ Windows ส่วนตัวอยู่ในช่วงสงวน "ระบบ" กัน โดย Microsoft Windows ใช้หมายเลขทั้งหมดที่ไม่อยู่ในช่วง นั้น ในอนาคต อาจใช้หมายเลขใหม่ในช่วง หมายเลขที่ใช้อยู่ในขณะนี้อาจถูกเปลี่ยนแปลง?
MFC Windows ส่วนตัวข้อความที่อยู่ในช่วงของ 0x360-gt; 0x37F(&G)?
MFC ส่วนทรัพยากรชนิดอยู่ในช่วงของ 0xF0-gt; 0xFF(&G)?
ข้อความ Windows ส่วนตัวของ MFC
ข้อความเหล่านี้ Windows จะใช้ในตำแหน่งของฟังก์ชันเสมือน c ++ที่คลัป loose ค่อนข้างจำเป็น ระหว่างหน้าต่างวัตถุ และต้องที่ฟังก์ชัน c ++เสมือนจะไม่เหมาะสม?
ข้อความส่วนตัวของ Windows และโครงสร้างพารามิเตอร์ที่เกี่ยวข้องเหล่านี้มีประกาศในส่วนหัวของส่วนตัว MFC ' AFXPRIVH'. ได้รับคำเตือนว่า หนึ่งในรหัสของคุณที่มีหัวข้อนี้อาจถูกใช้ในลักษณะการทำงานอย่างชาญฉลาดและจะมีโอกาสแบ่งในอนาคตรุ่น MFC?
ในกรณีหายากของต้องการจัดการกับข้อความเหล่านี้อย่างใดอย่างหนึ่ง คุณควรใช้แมโครการแมปข้อความON_MESSAGEและจัดการข้อความในรูปแบบทั่วไปของ LRESULT/WPARAM/LPARAM?
WM_QUERYAFXWNDPROC
ข้อความนี้ถูกส่งไปยังหน้าต่างที่กำลังสร้าง นี้ส่งเร็วมากในกระบวนการสร้างเป็นการกำหนดถ้าเป็น WndProc AfxWndProc. AfxWndProcส่งกลับค่า 1?
| wParam | ไม่ได้ใช้ |
| lParam | ไม่ได้ใช้ |
| ส่งกลับค่า | 1 ถ้าถูกประมวลผลโดยAfxWndProc |
WM_SIZEPARENT
ข้อความนี้ถูกส่ง โดยหน้าต่างเฟรมของเด็กทันทีในระหว่างการปรับขนาด (CFrameWnd::OnSizeเรียกCFrameWnd::RecalcLayoutซึ่งเรียกCWnd::RepositionBars) เพื่อเปลี่ยนตำแหน่งแถบควบคุมรอบด้านของเฟรม โครงสร้างของAFX_SIZEPARENTPARAMSประกอบด้วยสี่เหลี่ยมพร้อมใช้งานไคลเอ็นต์ปัจจุบันของแม่และ HDWP การ (ซึ่งอาจจะเป็น NULL) ด้วยซึ่งจะเรียกDeferWindowPosในการลด repainting?
| wParam | ไม่ได้ใช้ |
| lParam | ที่อยู่ของโครงสร้างแบบAFX_SIZEPARENTPARAMS |
| ส่งกลับค่า | ไม่ใช้ (0) |
ละเว้นข้อความระบุว่า หน้าต่างไม่มีส่วนร่วมในเค้าโครง?
WM_SETMESSAGESTRING
ข้อความนี้ถูกส่งไปยังหน้าต่างเฟรมเพื่อขอให้ปรับปรุงบรรทัดของข้อความในแถบสถานะ ID เป็นสายอักขระหรือ LPCSTR สามารถระบุ (แต่ไม่ทั้ง)?
| wParam | สตริงที่ ID (หรือศูนย์) |
| lParam | LPCSTR สำหรับสาย (หรือค่า NULL) |
| ส่งกลับค่า | ไม่ใช้ (0) |
WM_IDLEUPDATECMDUI
ข้อความนี้ถูกส่งในเวลาว่างเพื่อใช้การปรับปรุงที่ไม่ได้ใช้เวลาของตัวจัดการ UI คำสั่ง update ถ้าหน้าต่าง (โดยปกติแถบควบคุม) จัดการข้อความดังกล่าวสร้างเป็นCCmdUI (หรือวัตถุของคลาสที่ได้รับ) และโทรCCmdUI::DoUpdateสำหรับแต่ละ "สินค้า" ในหน้าต่าง นี้จะตรวจสอบการจัดการON_UPDATE_COMMAND_UIสำหรับวัตถุในห่วงโซ่ตัวจัดการคำสั่งตามลำดับ?
| wParam | BOOL bDisableIfNoHandler |
| lParam | ไม่ใช้ (0) |
| ส่งกลับค่า | ไม่ใช้ (0) |
bDisableIfNoHandlerคือไม่เป็นศูนย์เพื่อปิดใช้งานวัตถุ UI ถ้ามีทั้งแบบON_UPDATE_COMMAND_UIและการจัดการON_COMMAND?
WM_EXITHELPMODE
ข้อความนี้ถูกลงรายการบัญชีไปCFrameWndที่บริบทการออกจากโหมดวิธีใช้ การรับข้อความนี้สิ้นสุดลงการวนรอบโมดอลที่เริ่มต้นโดยCFrameWnd::OnContextHelp.
| wParam | ไม่ใช้ (0) |
| lParam | ไม่ใช้ (0) |
| ส่งกลับค่า | ไม่ได้ใช้ |
WM_INITIALUPDATE
ข้อความนี้ถูกส่ง โดยแม่แบบเอกสารไปตามทั้งหมดของหน้าต่างเฟรมเมื่อจะปลอดภัยสำหรับทำการปรับปรุงครั้งแรกของพวกเขาเหล่านั้น แผนที่ไปยังการเรียกไปยังCView::OnInitialUpdateแต่ยังสามารถใช้ในการอื่นCWnd-มาเรียนสำหรับการปรับปรุงอื่น ๆ one-shot?
| wParam | ไม่ใช้ (0) |
| lParam | ไม่ใช้ (0) |
| ส่งกลับค่า | ไม่ใช้ (0) |
WM_RECALCPARENT
ข้อความนี้ถูกส่ง โดยมุมมองไปยังหน้าต่างของแม่ (ที่ได้รับผ่านทางGetParent) เพื่อบังคับให้คำนวณใหม่เค้าโครง (ปกติ แม่จะเรียกRecalcLayout) ใช้ในโปรแกรมประยุกต์ของเซิร์ฟเวอร์ OLE ที่เป็นความจำเป็นสำหรับเฟรมจะมีขนาดใหญ่ ตามขนาดรวมของมุมมองการเติบโต?
ถ้าหน้าต่างหลักการประมวลผลข้อความนี้ ควรกลับ TRUE และเติม RECT ส่งผ่านไปใน lParam กับขนาดของพื้นที่ไคลเอนต์ใหม่ นี้ใช้ในCScrollViewเพื่อจัดการอย่างเหมาะสม scrollbars (ทำแล้วด้านนอกของหน้าต่างเมื่อมีเพิ่ม) เมื่อวัตถุเซิร์ฟเวอร์ที่ถูกเปิดใช้งานในสถาน?
| wParam | ไม่ใช้ (0) |
| lParam | LPRECT rectClient อาจเป็น NULL |
| ส่งกลับค่า | ไคลเอ็นต์ที่จริงถ้าใหม่สี่เหลี่ยมกลับ FALSE มิฉะนั้น |
WM_SIZECHILD
ข้อความนี้ถูกส่งโดยCOleResizeBarไปยังหน้าต่างของเจ้าของ (ผ่านGetOwner) เมื่อผู้ใช้ปรับขนาดแถบปรับขนาด มีจับสำหรับปรับขนาด COleIPFrameWndตอบสนองต่อข้อความนี้ โดยพยายามที่จะเปลี่ยนตำแหน่งหน้าต่างเฟรม ตามที่ผู้ใช้ร้องขอ?
สี่เหลี่ยมใหม่ ในไคลเอ็นต์พิกัดสัมพันธ์กับกรอบหน้าต่างซึ่งประกอบด้วยแถบปรับขนาด ชี้ที่ โดย lParam?
| wParam | ไม่ใช้ (0) |
| lParam | LPRECT rectNew |
| ส่งกลับค่า | ไม่ใช้ (0) |
WM_DISABLEMODAL
ข้อความนี้ถูกส่งไปยังหน้าต่างแบบผุดขึ้นทั้งหมดที่เป็นเจ้าของหน้าต่างเฟรมที่มีการยก หน้าต่างเฟรมใช้ผลการตรวจสอบว่าปิดการใช้งานหน้าต่างแบบผุดขึ้นหรือไม่?
คุณสามารถใช้นี้ เพื่อทำการประมวลผลพิเศษในหน้าต่างแบบผุดขึ้นของคุณเมื่อกรอบป้อนรัฐโมดอล หรือเมื่อต้อง การให้หน้าต่างแบบผุดขึ้นบางการปิดการใช้งาน แนะนำเครื่องมือใช้ข้อความนี้เพื่อทำลายตัวเองเมื่อหน้าต่างเฟรมจะเข้าสู่สถานะโมดอล ตัวอย่าง?
| wParam | ไม่ใช้ (0) |
| lParam | ไม่ใช้ (0) |
| ส่งกลับค่า | ไม่ใช่ศูนย์เป็นปิดไม่ใช้หน้าต่าง 0 แสดงหน้าต่างจะถูกปิดใช้งาน |
WM_FLOATSTATUS
ข้อความนี้ถูกส่งไปยังหน้าต่างแบบผุดขึ้นทั้งหมดของหน้าต่างเฟรมเมื่อเฟรมถูกเปิดใช้งาน หรือปิดการใช้งาน โดยหน้าต่างระดับบนเฟรมอื่น ใช้ โดยการใช้งานMFS_SYNCACTIVEในCMiniFrameWndเพื่อให้การเปิดใช้งานหน้าต่างแบบผุดขึ้นเหล่านี้สอดรับการเปิดใช้งานของหน้าต่างเฟรมที่ระดับบนสุด?
| wParam | เป็นหนึ่งในค่าต่อไปนี้: FS_SHOW FS_HIDE FS_ACTIVATE FS_DEACTIVATE FS_ENABLE FS_DISABLE FS_SYNCACTIVE |
| lParam | ไม่ใช้ (0) |
ค่าส่งคืนควรจะไม่เป็นศูนย์ถ้าFS_SYNCACTIVEจะตั้งค่าและการทำหน้าต่างที่เปิดใช้งานกับเฟรมหลัก CMiniFrameWndส่งกลับค่าไม่เป็นศูนย์เมื่อมีการตั้งค่าลักษณะการMFS_SYNCACTIVE.
ดูข้อมูลเพิ่มเติม การใช้งานCMiniFrameWnd?
WM_ACTIVATETOPLEVEL
ข้อความนี้ถูกส่งไปยังหน้าต่างระดับบนสุดเมื่อหน้าต่างใน "ระดับบนกลุ่มของ" ถูกเปิดใช้งาน หรือปิดการใช้งาน หน้าต่างเป็นส่วนหนึ่งของกลุ่มระดับบนสุดหากมีหน้าต่างระดับบนสุด (ไม่มีแม่หรือเจ้าของ), หรือจะเป็นเจ้าของ โดยหน้าต่าง ข้อความนี้เหมือนกับใช้การWM_ACTIVATEAPPแต่ทำงานในสถานการณ์ที่ผสมของกระบวนการต่าง ๆ ของ windows ในลำดับชั้นหน้าต่างเดียว (ทั่วไปในโปรแกรมประยุกต์ OLE)?
WM_QUERY3DCONTROLS
มีส่งข้อความนี้ในระหว่างการสร้างหน้าต่างเพื่อกำหนดว่าถ้าหน้าต่างควรเป็น subclassed โดย CTL3D32DLL โดยเริ่มต้น 3D ควบคุมจะเปิดใช้งานสำหรับCControlBar, CDialog, CPropertySheet และ CFormView.
| wParam | ไม่ใช้ (0) |
| lParam | ไม่ใช้ (0) |
| ส่งกลับค่า | ไม่ใช่เป็นศูนย์เพื่อซับคลาสกับ CTL3D.nbsp ค่าส่งกลับถูกใช้สำหรับการโทรไปยังCtl3dSubclassDlgEx.(&N) |
WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE
ข้อความเหล่านี้จะใช้ในการใช้งานวิธีใช้ตามบริบท กรุณาอ้างอิงถึง28 หมายเหตุทางเทคนิคสำหรับข้อมูลเพิ่มเติม?
รูปแบบของทรัพยากร Private MFC
ในปัจจุบันมีรูปเดียว MFC ทรัพยากรส่วนตัวแบบกำหนดRT_DLGINIT?
รูปแบบของทรัพยากร RT_DLGINIT
รูปแบบส่วนตัวทรัพยากร MFC หนึ่งถูกใช้เพื่อเก็บข้อมูลการเตรียมใช้งานพิเศษการโต้ตอบ ซึ่งรวมถึงสายอักขระเริ่มต้นจัดเก็บไว้ในกล่องคำสั่งผสม รูปแบบของทรัพยากรนี้ไม่ได้ถูกออกแบบมาเพื่อแก้ไขด้วยตนเองได้ แต่ถูกจัดการ โดย Visual c ++?
Visual c ++และทรัพยากรRT_DLGINITนี้ไม่จำเป็นใช้คุณลักษณะที่เกี่ยวข้องของ MFC เนื่องจากมี API ทางเลือกในการใช้ข้อมูลในทรัพยากร ใช้ Visual c ++ง่ายมากเขียน เก็บรักษา และแปลโปรแกรมประยุกต์ของคุณเรียกนาน?
โครงสร้างพื้นฐานของทรัพยากรRT_DLGINITเป็นดังนี้:
+---------------+nbsp; \
| ควบคุม ID | UINT |
+---------------+ |
| ข้อความ# | UINT |
+---------------+ |
|length ข้อมูล | DWORD |
+---------------+ | การทำซ้ำ
| ข้อมูล | ความยาวของตัวแปร | สำหรับตัวควบคุม
| ... | และรูปแบบ | และข้อความ
+---------------+ /
| 0 | ไบต์
+---------------+(&N)
ส่วนซ้ำประกอบด้วย ID ควบคุมการส่งข้อความไป ความ#ส่ง (ปกติ Windows message) และความยาวของข้อมูลตัวแปร มีส่งข้อความ Windows ในแบบฟอร์ม:
SendDlgItemMessage (ltID การควบคุม >, <ข้อความ# >, 0, & <Data>)
นี้เป็นรูปแบบทั่วไปมาก ช่วยให้ข้อความของ Windows และเนื้อหาของข้อมูลใด ๆ การแก้ไขทรัพยากรของ Visual c ++และ MFC เท่านั้นสนับสนุนชุดย่อยจำกัดของข้อความ Windows: CB_ADDSTRING สำหรับการเริ่มต้นรายการเลือกสำหรับกล่องคำสั่งผสม (ข้อมูลเป็นสายอักขระข้อความ)?
หมายเหตุด้านเทคนิคตามหมายเลข|nbsp หมายเหตุด้านเทคนิคตามประเภท(&N)