DialogBox: Icon fehler
-
Hi @ All.
In dem folgenden Dialog wird das Icon hProgramIcon (in WinMain) nicht geladen.
warum??? es ist in der Resource, die ist da, aber nix ladet!
#include <windows.h> #include <math.h> #include "res.h" #include "DisplaySettings.h" TCHAR AppName[] = "FreeHome"; NOTIFYICONDATA nidTray; HICON hProgramIcon; INT_PTR CALLBACK DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: // As first make icon load // Make the dialog icon SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hProgramIcon); SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hProgramIcon); // Prepare Tray icon to be shown by minimizing nidTray.cbSize = sizeof(nidTray); nidTray.hIcon = hProgramIcon; nidTray.hWnd = hDlg; nidTray.uCallbackMessage = (WM_USER + 1); nidTray.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nidTray.uID = 0x0200; lstrcpy(nidTray.szTip,AppName); nidTray.szTip[lstrlen(nidTray.szTip)] = '\0'; return 0; case WM_CLOSE: EndDialog(hDlg,IDOK); return 0; case WM_COMMAND: switch (LOWORD(wParam)) { return 0; } return 0; case WM_SYSCOMMAND: switch (wParam) { case SC_MINIMIZE: // Hide window ShowWindow(hDlg,SW_HIDE); // make to tray Shell_NotifyIcon(NIM_ADD, &nidTray); return 0; case SC_RESTORE: // make window in foreground SetForegroundWindow(hDlg); // Remove tray Shell_NotifyIcon(NIM_DELETE, &nidTray); return 0; } return 0; } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { hProgramIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_ICN1)); if (!hProgramIcon) { MessageBox(NULL,"Could not load main application icon.","Fatal Error", MB_OK | MB_ICONERROR); return 1; } DialogBox(hInstance,MAKEINTRESOURCE(IDD_DLG1),NULL,DialogProc); return 0; }Außerdem: es erscheint ein TrayIcon, aber es ist leer! durchsichtig.
aber es ist immernoch der Button in der Task leiste.
das möchte ich nicht. ich möchte nur, dass das TrayIcon da ist.Woran könnte das liegen?
Danke.
-
naja, das prob mit dem Icon habe ich geölst.
aber kann es sein, dass ich die Minimier-Message abfangen muss, so dass er nicht mehr minimiert, sondern nur noch das Fenster unsichtbar macht???
Danke.
-
Script-Styler schrieb:
aber kann es sein, dass ich die Minimier-Message abfangen muss, so dass er nicht mehr minimiert, sondern nur noch das Fenster unsichtbar macht???
Kannst du so machen, wird dann aber halt nicht mehr unten in der Taskleiste angezeigt... Ich versteh den Nutzen nicht ganz

-
Der Nutzen ist, dass das Programm im Hintergrund läuft und man es nur ausm tray wieder aufrufen kann. es hat ein Menü, wo man dann noch aktionen machen kann.
Aber das Prob ist gelöst^^.
thx.
-
Script-Styler schrieb:
Aber das Prob ist gelöst^^.
thx.
Erst Fragen, dann suchen, was?

-
nein nein, das ist quatch.
ich hab schon gesucht und probiert.
aber dann ist mir der Fehler beim Weiterarbeiten aufgefallen.
Ich hatte einfach die falsche Message benutzt.^^
naja, ist ja auch egal.
thx jedenfalls.