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

解决方案 »

  1.   

    有响应
    case WM_LBUTTONDOWN:
     //加个消息响应的函数会响应
     MessageBob(hWnd,"","",MB_OK);  //会弹出消息框,所以不是消息响应的问题//点击鼠标左键不会显示出窗口
    ShowWindow(hWnd,SW_SHOWNORMAL);
                       break;
      

  2.   

    早试过了,SW_SHOWNORMAL  和 SW_SHOW 都不行
      

  3.   

    ::ShowWindow(hWnd,SW_SHOWMINIMIZED);//先最小化
    ::ShowWindow(hWnd,SW_SHOWNORMAL);//然后在恢复
      

  4.   

    ::ShowWindow(hWnd,SW_SHOWMINIMIZED);//先最小化         
    ::ShowWindow(hWnd,SW_SHOWNORMAL);//然后在恢复不行,显示不出来,最小化和隐藏是一个道理
      

  5.   

    自己发现问题了,ShowWindow(hWnd,SW_HIDE) 函数放置位置错误,放置在该位置显示后马上又被隐藏