2012-10-01 105 views
-1

你好我開始使用掛鉤在c和我想做一個程序,做一個消息框
掛鉤,即時通訊新的掛鉤,但經過大量的閱讀之後,足夠理解,使一個創建一個窗口,並做了鉤,但我的問題是,即時通訊無法看到窗口消息框掛鉤在c問題

任何幫助,將不勝感激
這裏的程序是休耕代碼:

static HHOOK hMsgBoxHook; 

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 

    switch(msg) 
    { 
     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; 

    //Step 1: Registering the Window Class 
    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 = L"Csam"; 
    wc.hIconSm  = LoadIcon(NULL, IDI_APPLICATION); 

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

    // Step 2: Creating the Window 
    hwnd = CreateWindowEx(
     WS_EX_CLIENTEDGE, 
     L"myWindowClass", 
     L"The title of my window", 
     WS_OVERLAPPEDWINDOW, 
     CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, 
     NULL, NULL, hInstance, NULL); 

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

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

    // Step 3: The Message Loop 
    while(GetMessage(&Msg, NULL, 0, 0) > 0) 
    { 
     TranslateMessage(&Msg); 
     DispatchMessage(&Msg); 
    } 
    return Msg.wParam; 
} 
+0

創建窗口時是否出現錯誤?你應該和'GetLastError'應該給出具體原因。 – chris

+0

你使用古董技術如消息框掛鉤的任何原因?它有點像我寫的DOS TSR;) – paulsm4

+0

請認識到有一個代碼格式化工具。你所要做的就是粘貼你的代碼,突出顯示它,然後點擊格式化程序。 – chris

回答

1

類的名字你」已註冊您的課程與您用來創建的課程不匹配e您的窗口,而您用來創建窗口的窗口不是現有的系統類。因此,CreateWindowEx不知道如何建立您的窗口。

因此,您將收到錯誤消息框,並且在調用時GetLastError將返回ERROR_CANNOT_FIND_WND_CLASS。如果您遇到問題,請始終使用適當的錯誤工具。

+0

非常感謝你現在嘗試修復它 – david1597