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);

    }

  • 相关阅读:
    直接插入排序学习笔记
    选择排序学习笔记
    冒泡排序学习笔记
    阿里云ssl证书申请及域名绑定流程
    Nginx user_agent、if指令及全局变量
    rewrite和return笔记
    rewrite和return的简单需求
    Nginx Rewrite正则表达式案例
    linux下WordPress伪静态规则设置
    集群前后端分离(api接口)
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3199456.html
Copyright © 2011-2022 走看看