SendMessage 注意事项与消息映射

博客内容介绍了SendMessage在多线程环境中与窗口交互的注意事项,强调了SendMessage的消息函数在创建窗口线程中运行,并指出当创建窗口的线程退出时,继续使用SendMessage将失效。此外,还提到了消息映射的定义及其在窗口初始化过程中的应用。
摘要由CSDN通过智能技术生成

 TRACE(   "The   value   of   x   is  MyThreadFunction  %d/n",   de); 只在debug中打印,release版本中是不会输出的。

绘图相关的函数,只能在创建窗口的线程中调用才会生效。

在其他线程中调用需要 SendMessage;  SendMessage调用的消息函数运行在创建窗口的线程中。当创建窗口的线程退出时,再SendMessage就没效了。

int iRet = 5;
    if(IsWindow(m_pDlg->GetSafeHwnd())) //当创建窗口的线程退出时, 返回false
        iRet = ::SendMessage(m_pDlg->GetSafeHwnd(), WM_PRINT_PIC, 0, (LPARAM)this);
    else
        iRet = 80;

消息映射:

#define WM_PRINT_PIC  (WM_USER + 1234)

 

创建初始化窗口:

    AFX_MANAGE_STATE(AfxGetStaticModuleState()); 
    CoInitialize(NULL);
    AfxEnableControlContainer();
    if(AfxOleInit())
    {
        m_pDlg = NULL;
        m_pDlg = new CAdobeDlg();
        m_pDlg->Create(IDD_DIALOG1,NULL);
        m_pDlg->ShowWindow(SW_HIDE);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值