2012-02-26 62 views
0

我想做一個小型的系統托盤程序只有一個上下文菜單作爲其GUI。通知圖標工具提示沒有顯示,儘管設置正確szTip

但是,我無法讓工具提示工作。我正確地設置了NOTIFYICONDATA的szTip並且其他所有東西似乎都能正常工作......什麼能夠防止鼠標懸停時顯示工具提示?

void main() 
{ 
    int result; 

    hinst = GetModuleHandle(NULL); 

    memset(&wnd, 0, sizeof(wnd)); 
    wnd.cbSize = sizeof(wnd); 
    wnd.lpszClassName = "MainWClass"; 
    wnd.lpfnWndProc = MainWProc; 
    wnd.hInstance = hinst; 
    result = RegisterClassEx(&wnd); 

    hwnd = CreateWindowEx 
     (
     0, //extended styles 
     wnd.lpszClassName, //class name 
     "Main Window", //window name 
     WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL | WS_MINIMIZEBOX, //style tags 
     CW_USEDEFAULT, //horizontal position 
     CW_USEDEFAULT, //vertical position 
     CW_USEDEFAULT, //width 
     CW_USEDEFAULT, //height 
     (HWND) NULL, //parent window 
     (HMENU) NULL, //class menu 
     (HINSTANCE) wnd.hInstance, //some HINSTANCE pointer 
     NULL //Create Window Data? 
     ); 

    nid.cbSize = sizeof(nid); 
    nid.hWnd = hwnd; 
    nid.uID = 1; 
    nid.uVersion = NOTIFYICON_VERSION_4; 
    nid.uCallbackMessage = WM_CONTEXTMENU; 
    nid.hIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON1)); 
    strcpy(nid.szTip, "My Tooltip!"); 
    nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; 

    if(! Shell_NotifyIcon(NIM_ADD, &nid)) 
    { 
     printf("Shell_NotifyIcon(NIM_ADD, &nid) failed.\r\n"); 
     Sleep(INFINITE); 
    } 
    if(! Shell_NotifyIcon(NIM_SETVERSION, &nid)) 
    { 
     printf("Shell_NotifyIcon(NIM_SETVERSION, &nid) failed.\r\n"); 
     Sleep(INFINITE); 
    } 

    UpdateWindow(hwnd); 
    while(true) 
    { 
     //Dispatch for main window 
     if(PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE)) 
     { 
      DispatchMessage(&msg); 
     } 
    } 
} 

回答

2

嘗試添加NIF_SHOWTIP標誌,根據MSDNNOTIFYICON_VERSION_4要求工具提示中userdrawn。

+0

謝謝,它修復了它! – Joshua 2012-02-26 06:51:11