2011-09-27 42 views
0

當在應用程序窗口中按下鼠標左鍵時,該程序運行良好,但我需要的是當該按鈕被按下應用程序時程序也會註冊。我在Windows 7下運行。當另一個程序擁有焦點時檢測到鼠標點擊

 #include <windows.h>  

    const char g_szClassName[] = "myWindowClass"; 

    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
    { 
     switch(msg) 
     { 
      case WM_LBUTTONDOWN: 
      { 
       char szFileName[MAX_PATH]; 
       HINSTANCE hInstance = GetModuleHandle(NULL); 

       GetModuleFileName(hInstance, szFileName, MAX_PATH); 
       MessageBox(hwnd, szFileName, "This program is:", 
       MB_OK | MB_ICONINFORMATION); 
      } 
      break; 
      case WM_CLOSE: 
       DestroyWindow(hwnd); 
      break; 
      case WM_DESTROY: 
       PostQuitMessage(0); 
      break; 
      default: 
       return DefWindowProc(hwnd, msg, wParam, lParam); 
     } 
     return 0; 
     } 

     int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
     LPSTR lpCmdLine, int nCmdShow) 
    { 
     WNDCLASSEX wc; 
     HWND hwnd; 
     MSG Msg; 

     wc.cbSize  = sizeof(WNDCLASSEX); 
     wc.style   = 0; 
     wc.lpfnWndProc = WndProc; 
     wc.cbClsExtra = 0; 
     wc.cbWndExtra = 0; 
     wc.hInstance  = hInstance; 
     wc.hIcon   = LoadIcon(NULL, IDI_APPLICATION); 
     wc.hCursor  = LoadCursor(NULL, IDC_ARROW); 
     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); 
     wc.lpszMenuName = NULL; 
     wc.lpszClassName = g_szClassName; 
     wc.hIconSm  = LoadIcon(NULL, IDI_APPLICATION); 

     if(!RegisterClassEx(&wc)) 
     { 
      MessageBox(NULL, "Window Registration Failed!", "Error!", 
       MB_ICONEXCLAMATION | MB_OK); 
      return 0; 
     } 

     hwnd = CreateWindowEx(
      WS_EX_CLIENTEDGE, 
      g_szClassName, 
      "The title of my window", 
      WS_OVERLAPPEDWINDOW, 
      CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, 
      NULL, NULL, hInstance, NULL); 

     if(hwnd == NULL) 
     { 
      MessageBox(NULL, "Window Creation Failed!", "Error!", 
       MB_ICONEXCLAMATION | MB_OK); 
      return 0; 
     } 

     ShowWindow(hwnd, nCmdShow); 
     UpdateWindow(hwnd); 

     while(GetMessage(&Msg, NULL, 0, 0) > 0) 
     { 
      TranslateMessage(&Msg); 
      DispatchMessage(&Msg); 
     } 
     return Msg.wParam; 
    } 

回答