WINDOWS 的消息的定义?

daqiaofeng 2001-11-20 08:44:59
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanlijing 2001-11-22
  • 打赏
  • 举报
回复
这个函数是自定义的,用于在SDK程序中处理窗口消息的。在MFC中不这么用。
在MFC中,我们先假定有一个基于对话框的MFC程序,主窗口是一个名为CNotifyDlg的
对话框,上面有一个名为Tray的按钮,单击它可使窗口SHOWHIDE并且在任务栏上显示一
个图标:
则:
在文件NotifyDlg.h中:
#define WM_SHELLNOTIFY WM_USER+5 //自定义消息
......
afx_msg LRESULT onShellNotify(WPARAM wParam,LPARAM lParam);//定义处理消息的函数
DECLARE_MESSAGE_MAP()
在文件NotifyDlg.cpp中:
BEGIN_MESSAGE_MAP(CNotifyDlg,CDialog)
ON_MESSAGE(WM_SHELLNOTIFY,onShellNotify) //将自定义消息与其处理的函数联系起来
END_MESSAGE_MAP()
...
void CNotifyiconDlg::OnTray()
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHELLNOTIFY;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"计划任务提醒");//信息提示条为“计划任务提醒”
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
ShowWindow(SW_HIDE);//隐藏主窗口
}

LRESULT CNotifyDlg::onShellNotify(WPARAM wParam,LPARAM lParam)
{ //对自定义消息进行处理的函数体
if(wParam!=IDR_MAINFRAME)
return 1;
switch(lParam){
}
}
yinx 2001-11-21
  • 打赏
  • 举报
回复
先 #define WM_XXXX WM_USER+5
然后试程序响应这个消息
flybusflybus 2001-11-21
  • 打赏
  • 举报
回复
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg){
case WM_CREATE:
....
ntid.uCallbackMessage=WM_SHELLNOTIFY; //使用自定义消息
....
case WM_SHELLNOTIFY: //对自定义消息进行处理
if(wParam==IDI_ICON1){
}
}
}

這個是函數在哪里找啊?怎么加入自己定義的消息到這個case???!!!
yybs 2001-11-21
  • 打赏
  • 举报
回复
消息是由一个32位整数来代表。
window通过sendmessage,postmeesage等一系列函数来通知操作系统响应消息,因此消息可以被外部事件激发,也可以直接通过上述函数来模拟(os无法区分它们)
讲不下去了,因为不知道你到底想问什么。
lanlijing 2001-11-20
  • 打赏
  • 举报
回复
我不知道你指的是不是自定义消息,如果是自定义消息,我这里有一个SDK的托盘程序的例子:
#define WM_SHELLNOTIFY WM_USER+5 //自定义消息
NOTIFYICONDATA ntid;
...
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg){
case WM_CREATE:
....
ntid.uCallbackMessage=WM_SHELLNOTIFY; //使用自定义消息
....
case WM_SHELLNOTIFY: //对自定义消息进行处理
if(wParam==IDI_ICON1){
}
}
}
一个初学者,水平有限,也不知道你讲的是不是这个问题.

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧