计算机二级C语言辅导:VC增加自定义消息

2026-03-23
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,ClassWizard就可以象处理其它消息一样处理你自定义的消息了。
  下面是增加自定义消息的步骤:
  第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。
  第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LRESULT。
  LRESULTCMainFrame::OnMyMessage(WPARAMwParam,LPARAMlParam) //Lonefox转注:若是通过MFC添加的函数,必须把类定义中的函数头删除,否则和下面的消息映射定义重叠,编译时报重定义错误
  {
  //TODO:处理用户自定义消息
  ...
  return0;
  }
  第三步:在类头文件的AFX_MSG块中说明消息处理函数:
  classCMainFrame:publicCMDIFrameWnd
  {
  ...
  //一般消息映射函数
  protected:
  //{{AFX_MSG(CMainFrame)
  afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
  afx_msgvoidOnTimer(UINTnIDEvent);
  afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);
  //}}AFX_MSG
  DECLARE_MESSAGE_MAP()
  }
  第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中。
  BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)
  //{{AFX_MSG_MAP(CMainFrame)
  ON_WM_CREATE()
  ON_WM_TIMER()
  ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
  //}}AFX_MSG_MAP
  END_MESSAGE_MAP
  =======================
  Lonefox:我用于在多线程全部完成时发送自定义消息到主窗口,主窗口接收。