Dialogbox ohne Hauptfenster ?
-
BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM); // WinMain mit Dialogaufruf int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc); }// Die Nachrichtenschleife des Dialoges. // Ein Dialog bekommt statt WM_CREATE ein WM_INITDIALOG! BOOL CALLBACK DialogProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: return TRUE;// Zum Beenden case WM_CLOSE: EndDialog(hDlg,0); return TRUE;// Hier mal die 2 Buttons abfragen ("Ok" und "Abbrechen") case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: EndDialog(hDlg,0); return TRUE; case IDOK: Beep (1000,1000); return TRUE; default: break; } return FALSE; } return FALSE; }
-
danke ich habs hinbekommen!
jetzt bräuchte ich nurnoch nen tipp, wie ich das icon der exe und das icon vom dialog setze
danke!edit: ok das programmicon hab ich...jetzt brauch ich nurnoch das icon in der systemleiste im programm
-
[code] //Globales handle Setzen HICON hIcon = NULL; //.. anderer Code case WM_INITDIALOG: { // Icon Aus resource laden hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_MAIN_ICON),IMAGE_ICON, 16, 16, LR_SHARED); // ICON setzen SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM) hIcon); } return TRUE; [/code]
-
ja aber das setzt nicht das icon in der systemleiste vom dialogfenster! (links neben dem fenstertitel)
-
Doch tut es.
-
LOL, @pixartist, Du darfst Dir ruhig helfen lassen^^.
PS: Vergiss nicht, das Icon wieder zu löschen; DestroyIcon.
-
http://www.pixartist.de/pchat.jpg
nein tut es nichtBOOL CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: //[...] SendMessage(hDlg,WM_SETICON,ICON_SMALL,(LPARAM)IDI_ICON1); SendMessage(hDlg,WM_SETICON,ICON_BIG,(LPARAM)IDI_ICON1); //[...] } }
-
Welchen Wert hat "IDI_ICON1" ? Gibt es noch weitere Icons ?
-
das ist ne resource..und nein es gibt keine anderen icons
definiert in der resource.h#define IDI_ICON1 110ich weis aber nicht, wofür das wichtig sein sollte, da das icon offensichtlich funktioniert (.exe icon, startleisten icon)
nur wird halt das icon in der dialogbox nicht verändert
-
Und wo Hast du das icon Geladen
-
Warum ladest du das icon net so wie ichs dir gezeigt hab und warum machst du den selben aufruf zweimal
BOOL CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: //[...] SendMessage(hDlg,WM_SETICON,ICON_SMALL,(LPARAM)IDI_ICON1); SendMessage(hDlg,WM_SETICON,ICON_BIG,(LPARAM)IDI_ICON1); //[...] } }Das gehört sich numal so
[code] hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_MAIN_ICON),IMAGE_ICON, 16, 16, LR_SHARED); // ICON setzen SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM) hIcon); [/code]
@Codefinder sorry habs vergessencase WM_DESTROY: // Fenster Zerstoeren DestroyIcon(hIcon); PostQuitMessage(0); break;
-
Ascharan schrieb:
Warum ladest du das icon net so wie ichs dir gezeigt hab und warum machst du den selben aufruf zweimal
BOOL CALLBACK DlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: //[...] SendMessage(hDlg,WM_SETICON,ICON_SMALL,(LPARAM)IDI_ICON1); SendMessage(hDlg,WM_SETICON,ICON_BIG,(LPARAM)IDI_ICON1); //[...] } }Das gehört sich numal so
[code] hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_MAIN_ICON),IMAGE_ICON, 16, 16, LR_SHARED); // ICON setzen SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM) hIcon); [/code]
@Codefinder sorry habs vergessencase WM_DESTROY: // Fenster Zerstoeren DestroyIcon(hIcon); PostQuitMessage(0); break;das ist nicht der gleiche aufruf 2 mal...einmal icon_big, einmal icon_small.
Des weiteren, dein code macht keinen unterschied zu meinem, ausser dass du loadimage benutzt...warum kompliziert, wenns auch einfach geht?
-
möcht mal wissen was du für probleme hast Das erste icon was du einbindest wird in die exe gesetzt wenn ich mich da net vertue du kannst meine grössen Angaben weglassen trotzdessen must du eben erst mal das icon mit MAKEINTRESOURCE(IDI_ICON) erstmal aus deiner resource Laden um es verwenden zu können wenn du das in Pur WinApi machst bsp. wenn du das fenster komplett Zeichnest brauchst du auch erst MAKEINTRESOURCE(IDI_ICON) um ein eigenes icon zu laden
bei mir siehts so aus Hier
übrigens ich lade mein icon mit LoadImage weil man es mir so gezeigt hat
hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_MAIN_ICON),IMAGE_ICON, 16, 16, LR_SHARED);damit lade ich das icon 16 x 16 px für die obere linke ecke

-
oO aber warum gehts denn mit loadimage und nicht so

-
Würd mal behaupten das du nur die ID von deinem Icon Lädst und mit LoadImage Den Interpreter sagst das du ein ICON aus einer Resource laden willst bsp. ein icon aus einem verzeichnis, und MAKEINTRESOURCE aus der programm eigenen resource oder so.

-
pixartist schrieb:
das ist ne resource..und nein es gibt keine anderen icons
definiert in der resource.h#define IDI_ICON1 110ich weis aber nicht, wofür das wichtig sein sollte, da das icon offensichtlich funktioniert (.exe icon, startleisten icon)
nur wird halt das icon in der dialogbox nicht verändert
Das es ne Resource ist, war klar. Es wird immer das Icon angezeigt, was die kleinste ID hat, deswegen hab ich gefragt. Du könntest testweise auchmal für IDI_ICON1 den Wert 101 bzw. 100 setzen (das sind eigentlich die Werte die von der IDE vorgegeben werden). Wobei ich eher nicht glaube, dass es was ändern würde; aber n Versuch isses Wert. (Vergiss nicht das gesamte Projekt zu bereinigen, also alle BuildFiles zu löschen).