在编写 OCX 的过程中,因为希望线程执行结束后给主线程发送一个消息,但是总是没反应。
1. 消息定义了
cpp
#define MSG_FIRE (WM_USER+100)
2. Message maps
*.h
cpp
// Message maps //{{AFX_MSG(COcxFileCtrl) afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo); afx_msg BOOL OnQueryEndSession(); afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized); //}}AFX_MSG afx_msg LRESULT OnMsgFire(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP()
*.cpp
cpp
// Message map BEGIN_MESSAGE_MAP(COcxFileCtrl, COleControl) //{{AFX_MSG_MAP(COcxFileCtrl) ON_WM_HELPINFO() ON_WM_QUERYENDSESSION() ON_WM_ACTIVATE() //}}AFX_MSG_MAP ON_MESSAGE(MSG_FIRE,OnMsgFire) ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties) END_MESSAGE_MAP()
3. 函数体
cpp
// COcxFileCtrl message handlers LRESULT COcxFileCtrl::OnMsgFire(WPARAM wParam, LPARAM lParam) { logForPrjEx("%d,fire !",__LINE__); FireOptDone("287"); return 0; }
4. 调用,由于多线程调用不了,尝试直接写在对象的方法中也没效果。百思不得骑姐。
cpp
::PostMessage(this->m_hWnd,MSG_FIRE,0,0);
人生最曼妙的风景,竟是内心的淡定与从容!