Kid Napisano Grudzień 12, 2018 Autor Zgłoś Udostępnij Napisano Grudzień 12, 2018 Napisałem kod który jest poniżej. W momencie kiedy zminimalizuję okno pojawia się ikonka w Tray-u. (jest OK), ale w momencie kiedy przejadę myszką nad tą ikonką to automatycznie ona znika, zdarzenie WM_TRAY nie zachodzi, a przogram działa jakby nic się nie stało. co jest nie tak? może to przez to ze mam system win NT? #include <windows.h> # define WM_TRAY WM_USER+1 LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); char szClassName[ ] = "WindowsApp"; NOTIFYICONDATA nid; HWND hwnd, thwnd; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof (WNDCLASSEX); wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hwnd; nid.uID = 1001; nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; nid.uCallbackMessage = WM_TRAY;; nid.hIcon = LoadIcon(NULL, IDI_APPLICATION); lstrcpyn(nid.szTip, szClassName, sizeof(nid.szTip)); if (!RegisterClassEx (&wincl)) return 0; hwnd = CreateWindow (szClassName, "Windows App", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, HWND_DESKTOP, NULL, hThisInstance, NULL ); ShowWindow (hwnd, nFunsterStil); while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage (0); break; case WM_SIZE: if (LOWORD(wParam)==1) Shell_NotifyIcon(NIM_ADD, &nid); break; case WM_TRAY: MessageBox (NULL, "l","k", MB_OK); default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Law Napisano Grudzień 12, 2018 Zgłoś Udostępnij Napisano Grudzień 12, 2018 Wydaje mi się że powinieneś wpisywać dane do nid dopiero po CreateWindow. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Grudzień 12, 2018 Zgłoś Udostępnij Napisano Grudzień 12, 2018 Ja tak offtopicowo do chmielaczka: Jak piszesz post i chcesz wstawic kawalek kodu źródłowego to użyj takiego przycisku jak (Code) wtedy to lepiej wyglada dla czytajacych. A jak nie wiesz gdzie jest ten guzik (Code) to poprostu umieść twój kod miedzy tym <code> a tym </code> (zamiast < uzyj [ a zamiast tego > uzyj tego ]) i wtedy to bedzie wygladalo tak ladnie: #include <stdio.h> int main() { printf("Hello World!"); return 0; } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Gloom Napisano Styczeń 9, 2019 Zgłoś Udostępnij Napisano Styczeń 9, 2019 jak już to skromnie szatkus ujął nie powinieneś inicjować struktury nid jeśli jeszcze nie stworzyłeś okna. przecież pobiera ona do jego uchwyt. najlepiej zrób tak jak to jest podane w artykule na ten temat tzn. stwórz ikonkę w trayu podzczas komunikatu WM_CREATE. no i dobrze by było gdybyś pozbył się jej podczas usuwania okna.....[/img] Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.