win32 最小化到托盘 然后点击托盘图标还原原窗口
一亿光年 2013-02-25 05:34:26 win32 最小化到托盘 然后点击托盘图标还原原窗口
最小化到托盘我已经完成,为什么点击鼠标左键不能显示出窗口
见下面代码,主要是红色部份:
#include "stdafx.h"
#include "resource.h"
#include <Shellapi.h>
#define UWM_MSG (WM_USER+100)
HINSTANCE gInstance;
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
gInstance=hInstance;
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
return 0;
}
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//运行程序后将窗口隐藏
ShowWindow(hWnd,SW_HIDE);
NOTIFYICONDATA nti;
switch(uMsg)
{
// 请看这个
case UWM_MSG:
switch(lParam)
{
case WM_LBUTTONDOWN:
//点击鼠标左键不会显示出窗口
ShowWindow(hWnd,SW_SHOWNORMAL);
break;
}
break;
case WM_INITDIALOG
nti.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
nti.hIcon = LoadIcon(gInstance, MAKEINTRESOURCE(IDI_ICON1));
nti.hWnd=hWnd;
strcpy(nti.szTip,"hello");
nti.uCallbackMessage = UWM_MSG;
Shell_NotifyIcon(NIM_ADD, &nti);
break;
case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDOK:
EndDialog (hWnd, TRUE) ;
break ;
case IDCANCEL:
EndDialog(hWnd, FALSE);
break ;
}
break;
}
return FALSE;
}