📄 csdn_文档中心_wtl for mfc programming实践篇 --- 一个自定义combobox的移植过程(上).htm
字号:
style="mso-tab-count: 2">
</SPAN>lResult = ReflectNotifications(uMsg, wParam, lParam,
bHandled); \<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>if(bHandled) \<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>return TRUE; \<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1">
</SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt">参看<SPAN
lang=EN-US>ATL</SPAN>文件<SPAN
lang=EN-US><atlwin.h><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt">REFLECT_NOTIFICATIONS</SPAN><SPAN
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt">宏调用的是函数<SPAN
lang=EN-US>CWindowImplRoot::ReflectNotifications</SPAN>。这个函数通过参数取得发送事件控件的窗体句柄,并通过该句柄将事件发还给控件,代码如下:<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt">template
<class TBase><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt">LRESULT
CWindowImplRoot< TBase >::ReflectNotifications(UINT uMsg,
WPARAM wParam, LPARAM lParam, BOOL&
bHandled)<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt">{<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>HWND
hWndChild = NULL;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US
style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><o:p> </o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1">
</SPAN>switch(uMsg)<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1">
</SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>case
WM_COMMAND:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>if(lParam != NULL)<SPAN style="mso-tab-count: 1"> </SPAN>//
not from a menu<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>hWndChild = (HWND)lParam;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>case
WM_NOTIFY:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>hWndChild =
((LPNMHDR)lParam)->hwndFrom;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>case
WM_PARENTNOTIFY:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>switch(LOWORD(wParam))<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>case WM_CREATE:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>case WM_DESTROY:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN><SPAN style="mso-tab-count: 1">
</SPAN>hWndChild = (HWND)lParam;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>default:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>hWndChild = GetDlgItem(HIWORD(wParam));<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>case
WM_DRAWITEM:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>if(wParam)<SPAN style="mso-tab-count: 1">
</SPAN>// not from a menu<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>hWndChild =
((LPDRAWITEMSTRUCT)lParam)->hwndItem;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>case
WM_MEASUREITEM:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>if(wParam)<SPAN style="mso-tab-count: 1">
</SPAN>// not from a menu<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 3">
</SPAN>hWndChild =
GetDlgItem(((LPMEASUREITEMSTRUCT)lParam)->CtlID);<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2">
</SPAN>break;<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 1"> </SPAN>case
WM_COMPAREITEM:<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd"><SPAN
lang=EN-US style="FONT-FAMILY: 宋体; FONT-SIZE: 9pt"><SPAN
style="mso-tab-count: 2"> &n
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -