MFC ActiveX 工程中,自定义消息实现有个的问题找不到。

发布于 2022-09-01 05:16:46 字数 1329 浏览 18 评论 0

在编写 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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文