DialogBox Anfänger
-
Guten Morgen

habe mit der Windows Programmierung angefangen, nur meine DialogBox will nicht so ganz.
Sie erscheint mit buttons, eingabefelder,.. aber der hintergrund ist tansparent.
kann die box auch nicht schliesen.EINGABEMASKE DIALOG 100,100,200,200 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "test" FONT 8, "MS Sans Serif" BEGIN .... ENDBOOL APIENTRY eingabemaske(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)){ switch(msg){ case EINGABEMASKE_ABBRECHEN: PostMessage(hwnd, WM_CLOSE, 0 , 0); break } }int WINAPI WinMain(....){ return DialogBox(hInst, MAKEINTRESOURCE(EINGABEMASKE), NULL, eingabemaske); }Compiler: DevC++
sorry, dass ich nur Codeschnipsel anbieten kann (am Programmierrechner hab ich kin inet)
hab mich an der Vorlage vom Lcc Compiler gehalten und auch schon mit anderen Codes verglichen die ich im Netz gefunden habeBin fuer jeden Tipp dankbar

Sascha
-
wie wäre es mit so einem aufruf :
Wie für das hauptfenster benötigst du ebenfalls WM_COMMAND[cpp] INT_PTR CALLBACK eingabemaske(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return TRUE; } break; } return FALSE; } [/cpp]MFG Ascharan

-
danke erstmal
WM_COMMAND hab ich drin.
mit EndDialog(hDlg, LOWORD(wParam)) kann ich den Dialog wenigstens schonmal schliessen
Nur hab ich noch ein Problem mit dem Aussehen. Hier mal ein Screenshot klickEINGABEMASKE DIALOG 100, 100, 200, 200 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Test" FONT 8, "MS Sans Serif" BEGIN EDITTEXT EINGABEMASKE_EINGABEFELD_1, 10, 25, 30, 10, ES_AUTOHSCROLL EDITTEXT EINGABEMASKE_EINGABEFELD_2, 10, 60, 30, 10, ES_AUTOHSCROLL PUSHBUTTON "Zeichnen", EINGABEMASKE_KNOPF_1, 80, 10, 50, 25 PUSHBUTTON "Abbrechen", EINGABEMASKE_KNOPF_2, 80, 45, 50, 25 LTEXT "Anzahl" EINGABEMASKE_INFOTEXT_1, 10, 10, 15, 10 LTEXT "c" EINGABEMASKE_INFOTEXT_2, 10, 50, 15, 10 END
-
wie genau willst es aussehen lassen es gibt ne menge möglichkeiten
-
mit einem grauen standard fenster wie bei der message box waere ich fuer den anfang schon voll zufrieden

-
Du Meinst nen Grauen Hintergrund
SO:
[cpp] case WM_CTLCOLORBTN: // für Button case WM_CTLCOLORDLG: // für Dialog case WM_CTLCOLORSTATIC: // für Static Controls SetBkMode((HDC)wParam,TRANSPARENT); SetBkColor ((HDC) wParam, RGB ( 128, 128, 128)); SetTextColor((HDC) wParam, RGB ( 0, 0, 0)); return (long)CreateSolidBrush(RGB( 128, 128, 128)); [/cpp]ODER SO:
[cpp] case WM_ERASEBKGND: { RECT rc; HBRUSH hbr = CreateSolidBrush(RGB ( 128, 128, 128)); GetClientRect(hDlg, &rc); FillRect((HDC)wParam, &rc, hbr); DeleteObject(hbr); } [/cpp]Weiteres hier Ändern der Farben von Controls

-
@Ascharan: Dein erstes Code-Beispiel erzeugt ein GDI-Leak
.@sash: Du solltest, um Dein Programm auch von den gewählten Systemfarben anhängig zu machen, die entsprechende Funktion dafür verwenden (und die Farbwerte nicht statisch setzen), sonst könnten Deine Controls theoretisch (z.B. auf anderen Systemen) anders aussehen und es würde nicht passen.
Siehe: GetSysColor
-
@CodeFinder
lol
(hab nur versucht zu helfen immerhin funktioniert der code, das problem des GDI-Leak's habs vergessen
sry)
-
Joar, ne ist ja auch sonst in Orndung
. Mein Post war ja nur ne Ergänzung zu Deinem und baut ja auf Deinem Vorschlag auf
.
-
Hey CodeFinder! Wo warst du denn so lange?!

-
@CodeFinder jap is ja auch ok wuste das da etwas kommt aber dein Post is wohl
sogar die bessere lösung :p
CodeOriginator: hat recht wo warstn so lange

-
hehe^^, öhm naja geht so langsam Richtung Abitur(-Vorbeitungen) und da nimmt die Schule schnell Überhand
. Hab das Forum irgendwie n bissl vernachlässigen müssen, kamen halt n paar Dinge zusammen. Werd mal versuchen, in nächster Zeit etwas öfters mal reinzuschauen.Aber danke der Nachfrage (Euch beiden)
!