黄白混血儿歧视:给托盘图标增加气球提示 - cleverd - CSDN博客
来源:百度文库 编辑:九乡新闻网 时间:2024/05/08 06:05:33
给托盘图标增加气球提示 收藏
先看一下下面这篇文章,可能对你会有帮助
http:blog.csdn.net/XXKKFF/archive/2007/05/06/1598526.aspx
在vc 6.0里要给托盘增加气球提示的确要费一番工夫
首先要到下面
http:www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
下载新的sdk进行安装
安装之后,还要把这个新的sdk和visual studio关联起来
在开始菜单里有这样一个菜单项.手工关联的话,比较麻烦,这里就不说了
剩下的使用方法请看下面的注释#define _WIN32_IE 0x0501 //必须定义这个,NOTIFYICONDATA的某些属性才可用
#define WM_TRAYMESSAGE WM_USER + 1 //我托盘图标相关的消息
#include
#include //Shell_NotifyIcon
#include "resource.h"//过程函数的返回值都是LRESULT,类型都是CALLBACK
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd; //主窗口句柄,在CreateWindow中赋值
MSG msg; //消息变量,在GetMessage中使用
WNDCLASS wndclass; //窗口类
TCHAR* szAppName = TEXT("Tray"); //类名和窗口名
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //鼠标
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //图标
wndclass.lpszClassName = szAppName; //类名
wndclass.cbClsExtra = 0; //类的额外参数
wndclass.cbWndExtra = 0; //窗口的额外参数.用于基于同一窗口类的窗口各自区分.
//在自定义对话框类时必须指定为DLGWINDOWEXTRA的大小
wndclass.lpszMenuName = NULL; //菜单名.可以用作子窗口的id
wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口风格
wndclass.lpfnWndProc = WndProc; //窗口过程
wndclass.hInstance = hInstance; //包含窗口过程的实例句柄 if( !RegisterClass(&wndclass) ) //注册窗口类
return 0;
hwnd = CreateWindow( //创建窗口
szAppName, //窗口类名
szAppName, //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格
CW_USEDEFAULT, //初始的x坐标
CW_USEDEFAULT, //初始的y坐标
CW_USEDEFAULT, //初始的宽度
CW_USEDEFAULT, //初始的高度
NULL, //父窗口
NULL, //菜单
hInstance, //和窗口相关的实例句柄
NULL //额外参数
);
ShowWindow( hwnd,nCmdShow ); //显示窗口
UpdateWindow( hwnd ); //更新窗口
while( GetMessage(&msg,NULL,0,0) ) //消息循环
{
TranslateMessage(&msg); //将WM_XXXKEYXXX消息翻译为WM_CHAR消息
DispatchMessage(&msg); //传递消息到窗口过程
}
return msg.wParam; //返回
}
LRESULT WINAPI WndProc( HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )
{
static NOTIFYICONDATA nid; //代表一个托盘图标的结构
static HMENU hMainMenu; //主菜单,主要是为了得到下面这个菜单
static HMENU hPopupMenu; //在托盘图标上右击时显示的菜单
static HINSTANCE hInstance;
switch( message )
{
case WM_TIMER:
//NIF_INFO,NIIF_ERROR,szInfo等都只有在新的sdk中才有定义,且
//只有 _WIN32_IE >= 0x0501时才有定义
nid.uFlags = NIF_INFO; //这个标志使得可以显示气球提示
lstrcpy(nid.szInfo, TEXT("This is a Tray Icon!"));
nid.dwInfoFlags = NIIF_ERROR;
lstrcpy(nid.szInfoTitle, TEXT("TrayIcon")); Shell_NotifyIcon(NIM_MODIFY, &nid); //显示气球提示
return 0;
case WM_CREATE:
{
hInstance = ((LPCREATESTRUCT)lParam)->hInstance; //加载菜单
hMainMenu = (HMENU)LoadMenu(hInstance, TEXT("TRAYMENU"));
hPopupMenu = GetSubMenu(hMainMenu, 0); nid.cbSize = sizeof(nid);
//指定托盘的图标
nid.hIcon = (HICON)LoadIcon( hInstance, TEXT("TRAYICON") );
nid.hWnd = hwnd;
//和我们的托盘图标相关的消息
//例如鼠标的单击,右击.
//以及由气球提示触发的消息
nid.uCallbackMessage = WM_TRAYMESSAGE;
nid.uID = 1;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
lstrcpy( nid.szTip, TEXT("This is a Tray Icon!")); //添加一个托盘图标
Shell_NotifyIcon(NIM_ADD, &nid); //每5秒显示一次气球
SetTimer(hwnd, 0, 10000, NULL);
return 0;
}
case WM_DESTROY:
//删除托盘图标
Shell_NotifyIcon(NIM_DELETE, &nid);
PostQuitMessage(0);
return 0;
case WM_TRAYMESSAGE:
{
switch( lParam )
{
case WM_LBUTTONDOWN:
MessageBox(hwnd, TEXT("LBUTTONDOWN in TrayIcon!"),
TEXT("TrayIcon"), MB_OK);
return 0;
case WM_RBUTTONDOWN:
{
POINT point;
GetCursorPos( &point );
SetForegroundWindow(hwnd);
TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN,
point.x, point.y, 0, hwnd, NULL);
return 0;
}
//处理由气球提示产生的通知
case NIN_BALLOONUSERCLICK:
MessageBox(hwnd, "click in ballon!", "ballon", MB_OK);
return 0;
case NIN_BALLOONSHOW:
MessageBox(hwnd, "ballon shown!", "ballon", MB_OK);
return 0;
case NIN_BALLOONTIMEOUT:
MessageBox(hwnd, "ballon timeout!", "ballon", MB_OK);
return 0;
}
}
case WM_COMMAND:
switch( LOWORD(wParam) )
{
case IDM_TRAY_MESSAGEBOX:
MessageBox(hwnd, TEXT("Menu Selected in TrayIcon!"),
TEXT("TrayIcon"), MB_OK);
return 0;
case IDM_TRAY_QUIT:
//删除托盘图标
Shell_NotifyIcon(NIM_DELETE, &nid);
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc( hwnd,message,wParam,lParam );
}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/XXKKFF/archive/2007/05/11/1605182.aspx
先看一下下面这篇文章,可能对你会有帮助
http:blog.csdn.net/XXKKFF/archive/2007/05/06/1598526.aspx
在vc 6.0里要给托盘增加气球提示的确要费一番工夫
首先要到下面
http:www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
下载新的sdk进行安装
安装之后,还要把这个新的sdk和visual studio关联起来
在开始菜单里有这样一个菜单项.手工关联的话,比较麻烦,这里就不说了
剩下的使用方法请看下面的注释#define _WIN32_IE 0x0501 //必须定义这个,NOTIFYICONDATA的某些属性才可用
#define WM_TRAYMESSAGE WM_USER + 1 //我托盘图标相关的消息
#include
#include
#include "resource.h"//过程函数的返回值都是LRESULT,类型都是CALLBACK
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd; //主窗口句柄,在CreateWindow中赋值
MSG msg; //消息变量,在GetMessage中使用
WNDCLASS wndclass; //窗口类
TCHAR* szAppName = TEXT("Tray"); //类名和窗口名
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //鼠标
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //图标
wndclass.lpszClassName = szAppName; //类名
wndclass.cbClsExtra = 0; //类的额外参数
wndclass.cbWndExtra = 0; //窗口的额外参数.用于基于同一窗口类的窗口各自区分.
//在自定义对话框类时必须指定为DLGWINDOWEXTRA的大小
wndclass.lpszMenuName = NULL; //菜单名.可以用作子窗口的id
wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口风格
wndclass.lpfnWndProc = WndProc; //窗口过程
wndclass.hInstance = hInstance; //包含窗口过程的实例句柄 if( !RegisterClass(&wndclass) ) //注册窗口类
return 0;
hwnd = CreateWindow( //创建窗口
szAppName, //窗口类名
szAppName, //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格
CW_USEDEFAULT, //初始的x坐标
CW_USEDEFAULT, //初始的y坐标
CW_USEDEFAULT, //初始的宽度
CW_USEDEFAULT, //初始的高度
NULL, //父窗口
NULL, //菜单
hInstance, //和窗口相关的实例句柄
NULL //额外参数
);
ShowWindow( hwnd,nCmdShow ); //显示窗口
UpdateWindow( hwnd ); //更新窗口
while( GetMessage(&msg,NULL,0,0) ) //消息循环
{
TranslateMessage(&msg); //将WM_XXXKEYXXX消息翻译为WM_CHAR消息
DispatchMessage(&msg); //传递消息到窗口过程
}
return msg.wParam; //返回
}
LRESULT WINAPI WndProc( HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )
{
static NOTIFYICONDATA nid; //代表一个托盘图标的结构
static HMENU hMainMenu; //主菜单,主要是为了得到下面这个菜单
static HMENU hPopupMenu; //在托盘图标上右击时显示的菜单
static HINSTANCE hInstance;
switch( message )
{
case WM_TIMER:
//NIF_INFO,NIIF_ERROR,szInfo等都只有在新的sdk中才有定义,且
//只有 _WIN32_IE >= 0x0501时才有定义
nid.uFlags = NIF_INFO; //这个标志使得可以显示气球提示
lstrcpy(nid.szInfo, TEXT("This is a Tray Icon!"));
nid.dwInfoFlags = NIIF_ERROR;
lstrcpy(nid.szInfoTitle, TEXT("TrayIcon")); Shell_NotifyIcon(NIM_MODIFY, &nid); //显示气球提示
return 0;
case WM_CREATE:
{
hInstance = ((LPCREATESTRUCT)lParam)->hInstance; //加载菜单
hMainMenu = (HMENU)LoadMenu(hInstance, TEXT("TRAYMENU"));
hPopupMenu = GetSubMenu(hMainMenu, 0); nid.cbSize = sizeof(nid);
//指定托盘的图标
nid.hIcon = (HICON)LoadIcon( hInstance, TEXT("TRAYICON") );
nid.hWnd = hwnd;
//和我们的托盘图标相关的消息
//例如鼠标的单击,右击.
//以及由气球提示触发的消息
nid.uCallbackMessage = WM_TRAYMESSAGE;
nid.uID = 1;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
lstrcpy( nid.szTip, TEXT("This is a Tray Icon!")); //添加一个托盘图标
Shell_NotifyIcon(NIM_ADD, &nid); //每5秒显示一次气球
SetTimer(hwnd, 0, 10000, NULL);
return 0;
}
case WM_DESTROY:
//删除托盘图标
Shell_NotifyIcon(NIM_DELETE, &nid);
PostQuitMessage(0);
return 0;
case WM_TRAYMESSAGE:
{
switch( lParam )
{
case WM_LBUTTONDOWN:
MessageBox(hwnd, TEXT("LBUTTONDOWN in TrayIcon!"),
TEXT("TrayIcon"), MB_OK);
return 0;
case WM_RBUTTONDOWN:
{
POINT point;
GetCursorPos( &point );
SetForegroundWindow(hwnd);
TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN,
point.x, point.y, 0, hwnd, NULL);
return 0;
}
//处理由气球提示产生的通知
case NIN_BALLOONUSERCLICK:
MessageBox(hwnd, "click in ballon!", "ballon", MB_OK);
return 0;
case NIN_BALLOONSHOW:
MessageBox(hwnd, "ballon shown!", "ballon", MB_OK);
return 0;
case NIN_BALLOONTIMEOUT:
MessageBox(hwnd, "ballon timeout!", "ballon", MB_OK);
return 0;
}
}
case WM_COMMAND:
switch( LOWORD(wParam) )
{
case IDM_TRAY_MESSAGEBOX:
MessageBox(hwnd, TEXT("Menu Selected in TrayIcon!"),
TEXT("TrayIcon"), MB_OK);
return 0;
case IDM_TRAY_QUIT:
//删除托盘图标
Shell_NotifyIcon(NIM_DELETE, &nid);
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc( hwnd,message,wParam,lParam );
}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/XXKKFF/archive/2007/05/11/1605182.aspx
给托盘图标增加气球提示 - cleverd - CSDN博客
汽车内部图标提示
汽车内部图标提示---车辆
如何在proc目录下增加设备文件 - farsky16的专栏 - CSDN博客
杀软这样玩,DIY毒霸托盘小图标_新手无毒
【托盘专家讲托盘】什么是IPPC标识 阿里巴巴 cxsjianqiang的博客 BLOG
给老板汇报技术规划的一些要点 - ShaHuShaBoJue的专栏 - CSDN博客
实用博客技术总汇图标
bbbbbbj的专栏 - CSDN博客
10种经典的错误提示信息 - CSDN.NET - CSDN软件研发频道
如何增加博客访问量?
给图片增加画框代码
给生活增加些快乐
vc++ - lonelytreebjfu的专栏 - CSDN博客
2010年度CSDN十大博客文章
ASCII码表 - heruibin的专栏 - CSDN博客
程序员能力矩阵 - 帐前卒 专栏 - CSDN博客
┢┦ī М ī - CSDN博客
Java排序汇总 - XuHaiPeng - CSDN博客
tcp cwnd - linweixuan的专栏 - CSDN博客
MSP430开发笔记 - 人在旅途 - CSDN博客
RTMP是什么 - Thinkor2k8的专栏 - CSDN博客
常用RGB色值表 - 饮马长江 - CSDN博客
awk中文手册 - FreeXploiT - CSDN博客