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;
}winapi
最小化到托盘我已经完成,为什么点击鼠标左键不能显示出窗口
见下面代码,主要是红色部份:#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;
}winapi
case WM_LBUTTONDOWN:
//加个消息响应的函数会响应
MessageBob(hWnd,"","",MB_OK); //会弹出消息框,所以不是消息响应的问题//点击鼠标左键不会显示出窗口
ShowWindow(hWnd,SW_SHOWNORMAL);
break;
::ShowWindow(hWnd,SW_SHOWNORMAL);//然后在恢复
::ShowWindow(hWnd,SW_SHOWNORMAL);//然后在恢复不行,显示不出来,最小化和隐藏是一个道理