#include <Windows.h>
#include <ShellAPI.h>
#include <Commctrl.h>
#include "resource.h"
#define NIM_MAIN 1
#define WM_SHOWTASK (WM_USER + 1)
HINSTANCE hInst;
HWND MainhWnd = NULL;
HWND hCtrl = NULL;
HWND hNid = NULL;
NOTIFYICONDATA nid;
INT SliderPos = 60;
INT_PTR CALLBACK DialogProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
LRESULT CALLBACK WindowProc(HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam); // second message parameter
void NidProc(WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow) // show state);
{
HANDLE hmutex = CreateMutex(NULL,FALSE,"One_ctlMF"); //
if (GetLastError() == ERROR_ALREADY_EXISTS) //如果允许多个实例,可以去掉
{
MessageBox(NULL,"已经存在一个实例!","提示",NULL);
return FALSE;
}
hInst = hInstance;
WNDCLASS ws;
ws.cbClsExtra = 0;
ws.cbWndExtra = 0;
ws.hbrBackground = (HBRUSH)COLOR_WINDOW;
ws.hCursor = LoadCursor(hInstance,IDC_APPSTARTING);
ws.hIcon = LoadIcon(hInstance,IDI_APPLICATION);
ws.hInstance = hInstance;
ws.lpfnWndProc = WindowProc;
ws.lpszClassName = "Raise";
ws.lpszMenuName = "Raise";
ws.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&ws);
RECT rt;
GetClientRect(GetDesktopWindow(),&rt);//获取窗口矩形大小,准备生成一个400*400的居中窗口
MainhWnd = CreateWindow("Raise","Raise",WS_OVERLAPPEDWINDOW,rt.right/2-200,rt.bottom/2-200,400,400,
NULL,NULL,hInst,NULL);
if (!MainhWnd)
{
return FALSE;
}
nid.cbSize = sizeof(NOTIFYICONDATA);
//nid.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
nid.hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,0,0,LR_DEFAULTSIZE);
nid.hWnd = MainhWnd;
nid.uCallbackMessage = WM_SHOWTASK;
nid.uID = NIM_MAIN;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,&nid); //向任务栏发送增加图标消息
nid.hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,0,0,LR_DEFAULTSIZE);
Shell_NotifyIcon(NIM_MODIFY,&nid);//修改任务栏图标
ShowWindow(MainhWnd,SW_HIDE); //不设成HIDE可以看到窗口形态
UpdateWindow(MainhWnd);
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Shell_NotifyIcon(NIM_DELETE,&nid);//删除任务栏图标
CloseHandle(hmutex);
return TRUE;
}
LRESULT CALLBACK WindowProc(HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam)
{
switch (uMsg)
{
case WM_SHOWTASK:
NidProc(wParam,lParam);
break;
case WM_COMMAND:
switch (wParam)
{
case IDM_EXIT:
DestroyWindow(hwnd);
break;
case IDM_SHOW:
if (hNid)
{
ShowWindow(hNid,SW_SHOW);
}
else
{
hNid = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),MainhWnd,DialogProc);
}
break;
default:
break;
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
break;
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
void NidProc(WPARAM wParam,LPARAM lParam)
{
if (wParam == NIM_MAIN)
{
switch(lParam)
{
case WM_LBUTTONDOWN:
if (hNid == NULL)
hNid = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG1),MainhWnd,DialogProc);
break;
case WM_RBUTTONDOWN:
{
HMENU hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1));
hMenu = GetSubMenu(hMenu,0);
POINT pos;
GetCursorPos(&pos);
SetForegroundWindow(MainhWnd);
TrackPopupMenu(hMenu,TPM_RIGHTALIGN,pos.x,pos.y,0,MainhWnd,NULL);
}
break;
default:
break;
}
}
}
INT_PTR CALLBACK DialogProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch (uMsg)
{
case WM_COMMAND:
if (wParam == IDOK || wParam == IDCANCEL)
{
EndDialog(hwndDlg,wParam);
return TRUE;
}
case WM_INITDIALOG:
{
HWND hwnd = GetDlgItem(hwndDlg,IDC_SLIDER1);
SendMessage(hwnd, TBM_SETRANGE, TRUE, (LPARAM)MAKELONG(20,100));
SendMessage(hwnd, TBM_SETPOS, (WPARAM)1,(LPARAM)(int)SliderPos);
}
break;
case WM_HSCROLL:
{
HWND hwnd = GetDlgItem(hwndDlg,IDC_SLIDER1);
SliderPos = SendMessage(hwnd,TBM_GETPOS,0,0);
SetDlgItemInt(hwndDlg,IDC_EDIT1,SliderPos,TRUE);
}
break;
case WM_CLOSE:
return EndDialog(hwndDlg,wParam);
default:
break;
}
return (INT_PTR)FALSE;
}
没有合适的资源?快使用搜索试试~ 我知道了~
通知栏,对话框,菜单栏,响应函数的一个简单Demo,纯SDK写的
共28个文件
ico:7个
pdb:2个
res:2个
需积分: 9 27 下载量 74 浏览量
2014-08-30
19:34:18
上传
评论
收藏 5.37MB ZIP 举报
温馨提示
通知栏,对话框,菜单栏,响应函数的一个简单Demo,纯SDK写的.学习之用.
资源推荐
资源详情
资源评论
收起资源包目录
TaskBar.zip (28个子文件)
TaskBar
TaskBar
TaskBar.aps 1.42MB
2.ico 355KB
ctlMF.ico 81KB
TaskBar.rc 3KB
3.ico 355KB
TaskBar.vcproj 4KB
icon5.ico 1KB
resource.h 1KB
TaskBar.cpp 5KB
TaskBar.vcproj.LINSHENG-PC.linsheng.user 1KB
Debug
TaskBar.exe.embed.manifest.res 728B
BuildLog.htm 5KB
TaskBar.exe.intermediate.manifest 621B
TaskBar.obj 32KB
vc90.pdb 116KB
vc90.idb 331KB
TaskBar.res 1.39MB
mt.dep 65B
TaskBar.exe.embed.manifest 663B
nid_cmn.ico 1KB
1.ico 355KB
0.ico 355KB
TaskBar.ncb 13.84MB
TaskBar.suo 19KB
Debug
TaskBar.pdb 499KB
TaskBar.exe 1.71MB
TaskBar.ilk 391KB
TaskBar.sln 887B
共 28 条
- 1
资源评论
Raise
- 粉丝: 329
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功