大家经常看到 程序 最小化到 托盘 但用C怎么实现呢 本人 试下哈 可以实现的 ~·~
main.cpp 修改如下
#define WM_CLICKBIT (WM_USER + 1) //定义消息
HINSTANCE hApp;
NOTIFYICONDATA nid;
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
//BEGIN MESSAGE CRACK
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
HANDLE_MSG(hWnd, WM_SYSCOMMAND, Main_OnSysCommand); //多了这条消息
case WM_CLICKBIT:
{
if(wParam == IDI_ICONAPP)
{
switch(lParam)
{
case WM_LBUTTONDBLCLK:
ShowWindow(hWnd, SW_SHOWNORMAL);
Shell_NotifyIcon(NIM_DELETE, &nid);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
break;
default:
ShowWindow(hWnd, SW_HIDE);
break;
}
}
}
break;
default:
break;
}
return FALSE;
}
void ShowPlate(HWND hwnd) //最小化到托盘
{
ZeroMemory(&nid, sizeof(NOTIFYICONDATA));
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd;
nid.uID = IDI_ICONAPP;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nid.uCallbackMessage = WM_CLICKBIT; //自定义的消息名称
nid.hIcon = LoadIcon(hApp, MAKEINTRESOURCE(IDI_ICONAPP));
lstrcpy(nid.szTip, TEXT("Close QQ")); //信息提示条
Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标
}
void Main_OnSysCommand(HWND hwnd, UINT cmd, int x, int y)
{
if(SC_MINIMIZE == cmd)
{
ShowPlate(hwnd);
ShowWindow(hwnd, SW_HIDE);
return;
}
else
{
return;
}
}
main.h添加
extern HINSTANCE hApp;
void ShowPlate(HWND hwnd);
void Main_OnSysCommand(HWND hwnd, UINT cmd, int x, int y);
closeProcess.cpp(这是我自己创建的工程哈,这里是你自己创建的工程名)
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
hApp = hInstance; //就多了这句
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
return(0);
}
目前 在C FREE(一个很好用的IDE 下载地址)编译通过
给大家一个 c free 源码下载 工程需要 c free才能打开 但其中的最小化到托盘\MinGW3.4.5\最小化到托盘.exe 是可以用的
等有时间在传个 VC的工程 给大家看看哈 若发现连接失效 请 给我留言 谢谢
VC工程已经实现 下载地址