• MFC中 自定义消息


    想在对话框显示出来后立即执行一段代码。

    方法之一是自定义消息,即添加一个自定义的消息在消息队列中等待对话框初始化之后从消息队列中读取消息执行代码。

    OnInitDialog返回之前post一个自定义的消息,在消息的相应函数里执行代码

    利用类向导添加自定义消息WM_MY_PRIVATE,则生成如下消息响应函数,可以在自定义的消息响应函数里添加自己的代码:

    LRESULT MyAppDlg::OnPrivateMessage(WPARAM,LPARAM)

    {   

    return0;

    }

    当然,在消息映射表里会发现增加了一项: 

    ON_MESSAGE(WM_MY_PRIVATE,&CdummyDlg::OnPrivateMessage)

     

    然后在CPP文件上面添加:

    #define WM_MY_PRIVATE WM_USER + 1551

    OnInitDialog()函数返回之前添加PostMessage(WM_MY_PRIVATE,如下:

    BOOLMyAppDlg::OnInitDialog()

    {    …………………………   

     // TODO: Add extra initialization here   

       PostMessage(WM_MY_PRIVATE);   

     returnTRUE;  // return TRUE  unless you set the focus to a control

    }  

     

    方法二是利用定时器,此方法没验证过。

    OnInitDialog返回之前创建一个只报时一次的定时器,在OnTimer里执行代码

    BOOLMyAppDlg::OnInitDialog()

    {    …………………………  

      // TODO: Add extra initialization here   

       SetTimer(m_nTimerID, 100, NULL);   

     returnTRUE;  // return TRUE  unless you set the focus to a control

     voidMyAppDlg::OnTimer(UINT_PTRnIDEvent)

    {  

      if(nIDEvent == m_nTimerID)  

      {        // 只执行一次,所以一报时就Kill掉了    

    KillTimer(m_nTimerID);     

       m_nTimerID = 0;    

        AfxMessageBox(_T("Hello MFC"));    

        return;   

      }   

     CDialog::OnTimer(nIDEvent);

    }

  • 相关阅读:
    【七款炫酷的页面特效】
    【PHP环境-WampServer踩坑】
    【Elasticsearch在winodws系统启动报could not find java+闪退】
    【Vue-入门笔记-7】
    关于ios的光标和键盘回弹问题
    AES加密然后ajax传输数据
    文件进行MD5计算
    jqGrid 常用 总结 -2
    关于页面传参,decodeURI和decodeURIComponent
    js防抖和节流
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3199456.html
Copyright © 2020-2023  润新知