zoukankan      html  css  js  c++  java
  • 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);

    }

  • 相关阅读:
    导入Spreadsheet到sharepoint2013报错
    WinRM不起作用 Connecting to remote server failed with the following error message : WinRM cannot complete the operation
    安装workflowmanager 1.0 server
    SharePoint 2013 pre-config
    SharePoint 错误集 3
    如何安装/卸载workflow manager 1.0
    IOS 7 Study
    IOS 7 Study
    MVC interview questions with answers
    Android 获取控件相对于屏幕位置
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3199456.html
Copyright © 2011-2022 走看看