自定义事件不起作用 我在我的MFC控件里面自己定义了一个事件,在BEGIN_MESSAGE_MAP里面定义了,在类里面的Message maps也定义了,并且也定义了消息名字的宏,可是当我通过PostMessage发送小溪的时候,我的消息接收函数总是不能激活,这是怎么回事?还需要在哪里设置吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在CPP中映射,把你的消息ID与消息函数映射! 这是在头文件中// Message maps //{{AFX_MSG(CVierCallCtrl) //}}AFX_MSG afx_msg LPARAM OnFindGatekeeper(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP()在CPP文件中BEGIN_MESSAGE_MAP(CVierCallCtrl, COleControl) //{{AFX_MSG_MAP(CVierCallCtrl) //}}AFX_MSG_MAP ON_MESSAGE(WM_FINDGATEKEEPER, OnFindGatekeeper) ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)END_MESSAGE_MAP() WM_FINDGATEKEEPER 要定义一下吧example:#define WM_FINDGATEKEEPER WM_USER + 100 那还要看看你在哪里 PostMessage 了 我是在一个按钮点击以后PostMessage(WM_FINDGATEKEEPER); 使用GetSaftHwnd和::PostMessage(hWnd,WM_FINDGATEKEEPER),hWnd为使用GetSafeHwnd获得的接收消息的控件或者其他的类的HWND! vcleaner(我没做大哥已经很久了.......) 我用::PostMessage(hWnd,WM_FINDGATEKEEPER),好像还需要另外两个参数吧?wpara和lpara,这两个应该怎么得到呢? 加0,0afx_msg LPARAM OnFindGatekeeper(WPARAM wParam, LPARAM lParam);=>afx_msg LRESULT OnFindGatekeeper(WPARAM wParam, LPARAM lParam); WPARAM和LPARAM可以使用MAKEXXXXXX宏得到,XXXXX就是WPARAM或者WPARAM 解决了这个问题,覆盖COleControl的OnSetClientSite,结贴。不过出现了新问题,:( mfc部署到英文操作系统时报错 SetForegroundWindow后窗口的状态 CFileDialog类获取所有文件名时返回为空的问题,求教 问一下.net中的atl怎样引用com server的头文件 字符串内存初始化的疑问 CdialogBar 的 父窗口是什么? 怎样在对话框上画一条指定粗细及线型的线条。 有谁知道国外的论坛网址 关于MsoCommandBar的应用 socket连接不成功,错误码是10004 我想在一个.h文件里 定义一个 CONST的字符串的二维数组,该怎么做? 一段int* 类型的空间, 如何消掉第一个数据? 求最简洁的方法。
// Message maps
//{{AFX_MSG(CVierCallCtrl)
//}}AFX_MSG
afx_msg LPARAM OnFindGatekeeper(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()在CPP文件中
BEGIN_MESSAGE_MAP(CVierCallCtrl, COleControl)
//{{AFX_MSG_MAP(CVierCallCtrl)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_FINDGATEKEEPER, OnFindGatekeeper)
ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()
example:
#define WM_FINDGATEKEEPER WM_USER + 100
afx_msg LPARAM OnFindGatekeeper(WPARAM wParam, LPARAM lParam);
=>
afx_msg LRESULT OnFindGatekeeper(WPARAM wParam, LPARAM lParam);