描述:
1.关于WM_COMMAND和 M_NOTIFY消息的处理
应该使用 COMMAND_HANDLER ,COMMAND_ID_HANDLER ,COMMAND_CODE_HANDLER和
NOTIFY_HANDLER , NOTIFY_ID_HANDLER ,NOTIFY_CODE_HANDLER 来添加需要的处理函数!
我的问题是:
a. 在VC6和 .NET中是否有相关的支持来自动生成宏,声明和函数框架?
我所知道的,vc6没有任何支持,全都手动! .net有一点支持。希望大虾指教
b. 我的一个程序(不支持MFC的 ATL控件)中 需要响应popup菜单项ID_NEW_207
已经可以弹出菜单,并给出了菜单项相应函数如下。但是debug发现没有进入消息处理 函数。 问题不知道出在那里? 谁有经验不防谈谈!!!我快于闷死了
*******************************************************************************
--- h文件---
COMMAND_ID_HANDLER(ID_NEW_207, OnNew207) //在msg map中添加的条目
LRESULT OnNew207(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); //处理函数的声明
---cpp---
LRESULT CShellFolderTree::OnNew207(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: 在此添加命令处理程序代码
MessageBox("dlg","info");
CKetProp Dlg;
Dlg.Create(m_hWnd);
Dlg.ShowWindow(SW_SHOW);
return 0;
}
*****************************************************
http://community.csdn.net/Expert/topic/3651/3651913.xml?temp=.8704187
是关于这个问题的, 大家给出了WM_COMMAND的处理函数,我也照作了。还是不行!!!
谁有办法,让我的菜单项来点反映阿!??? 我急~~~~~
//////////////////////////////////////////////////////////////////
下面的希望大家就自己理解谈点体会,我找不到相关的具体资料
2.Alternate Message Maps 这个到底用途是什莫?
BEGIN_MSG_MAP(CMyClass)
MESSAGE_HANDLER(WM_PAINT, OnPaint) A
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
B
END_MSG_MAP()
比如说,我要处理WM_PAINT消息,放在A ,B 会有什莫不同?
我已开始要添加一个相应时,如何决定放在那里?
3. Chaining Message Maps
4. Message Reflection
总之,对于各种宏,谁能比较详细的给出消息流的传递路线(纵横)呢?象侯捷MFC一书那样就清楚就好了!
如?
BEGIN_MSG_MAP(CShellFolderTree)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
NOTIFY_HANDLER(100, TVN_KEYDOWN, OnKeyDown)
CHAIN_MSG_MAP(CComControl<CShellFolderTree>) //
CHAIN_MSG_MAP(。。。) 另外一个基类 //是否跟次序有关,纵向传递先到
//上面那个,找不到才到此??
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnButtonDown)
MESSAGE_HANDLER(WM_RBUTTONDOWN, OnButtonDown)
END_MSG_MAP()