Bildzittert & Backgroundfarbe ändern klappt nicht



  • [quote="CodeFinder"]

    3.:
    Weiterhin würde ich dir bei WM_COMMAND ein switch der Control IDs empfehlen...das kannst du dann auch ein Switch einbauen...ist übersichtlicher...so: 💡 ➡

    // ...
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case BTN_BUTTON1:
                    // ...
                    break;
                // usw.
            }
            return 0;
    // weitere Nachrichten...
    

    Mir fällt gerade auf...das du die gar nicht festgelegt hast...also das geht entweder direkt bei CreateWindow(Ex):

    in LWORD(wParam) steht die ID des jeweiligen Fensters? Kann ich diese Idee beliebig vergeben oder werden die durch windows automatisch hochgezählt?



  • in LWORD(wParam) steht die ID des jeweiligen Fensters? Kann ich diese Idee beliebig vergeben oder werden die durch windows automatisch hochgezählt?

    Idee oder ID ? 😃

    In LOWORD von wParam steht die ID, ja...aber nur unter WM_COMMAND! Ja du kannst die ID beliebig vergeben, Windows wird dir da nicht reinfuschen^^:

    Das hab ich dir doch schon geschrieben:

    CodeFinder schrieb:

    Mir fällt gerade auf...das du die gar nicht festgelegt hast...also das geht entweder direkt bei CreateWindow(Ex):

    hButNeu = CreateWindow(TEXT("button"), TEXT("Neu"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                           0, 0, 0, 0, hWnd, (HMENU)NUMMER, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    // NUMMER ist eine ganzzahle Konstante = ID des Buttons
    // z.B.: const int BTN_START =  7000; // C++
    // z.B.: #define BTN_START      7000; // C
    //  dann schreibst du statt NUMMER einfach BTN_START (nat. vorher deklarieren)
    

    oder nachträglich (hier nicht empfehlenswert):

    SetWindowLong(hButton, GWL_ID, NUMMER); // NUMMER ist eine ganzzahle Konstante = ID des Buttons
    

    :



  • CodeFinder schrieb:

    in LWORD(wParam) steht die ID des jeweiligen Fensters? Kann ich diese Idee beliebig vergeben oder werden die durch windows automatisch hochgezählt?

    Idee oder ID ? 😃

    In LOWORD von wParam steht die ID, ja...aber nur unter WM_COMMAND! Ja du kannst die ID beliebig vergeben, Windows wird dir da nicht reinfuschen^^:

    Das hab ich dir doch schon geschrieben:

    CodeFinder schrieb:

    Mir fällt gerade auf...das du die gar nicht festgelegt hast...also das geht entweder direkt bei CreateWindow(Ex):

    hButNeu = CreateWindow(TEXT("button"), TEXT("Neu"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                           0, 0, 0, 0, hWnd, (HMENU)NUMMER, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    // NUMMER ist eine ganzzahle Konstante = ID des Buttons
    // z.B.: const int BTN_START =  7000; // C++
    // z.B.: #define BTN_START      7000; // C
    //  dann schreibst du statt NUMMER einfach BTN_START (nat. vorher deklarieren)
    

    oder nachträglich (hier nicht empfehlenswert):

    SetWindowLong(hButton, GWL_ID, NUMMER); // NUMMER ist eine ganzzahle Konstante = ID des Buttons
    

    :

    Hm......... bei mir klappts nicht :(, wenn ich jetzt auf den Button klicke passiert nichts mehr.

    Noch eine Frage, ich caste ja die ID(ee) 😉 mit (HMENU), was ist den wenn ich jetzt mal ein menu angeben möchte? Wie vergebe ich den dann die ID des Steuerelements.

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	HDC			hDC;
    	PAINTSTRUCT ps;
    	HBRUSH	hBrush;
    	RECT	clientRect;
    	HDC		hDCBkBuf;
    	HBITMAP hBM;
    	HRGN	hRgn;
    	static HWND	hButNeu;
    	static HWND	hButAbort;
    	static HWND	hWndNeu;
    	static int	cxClient;
    	static int	cyClient;
    
    	switch (message)
    	{
    	case WM_CREATE:
    		{
    			hButNeu = CreateWindow(TEXT("button"), TEXT("Neu"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    				0, 0, 0, 0, hWnd, (HMENU) 700, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    
    			hButAbort = CreateWindow(TEXT("button"), TEXT("Abbrechen"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    								0, 0, 0, 0, hWnd, (HMENU) 2, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
    
    		return 0;
    		}
    
    	case WM_COMMAND:
    		{
    
    		if(LOWORD(wParam) == 700)
    		{
    			if(HIWORD(wParam) == BN_CLICKED)
    				{
    					hWndNeu = CreateWindow(TEXT("SUB"), TEXT("Erfassung der Mitarbeiterdaten"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 320, 240, CW_USEDEFAULT, CW_USEDEFAULT,
    											NULL, (HMENU) 3, NULL, NULL);
    
    				}
    		}
    return 0;
    


  • Olaf323 schrieb:

    Noch eine Frage, ich caste ja die ID(ee) 😉 mit (HMENU), was ist den wenn ich jetzt mal ein menu angeben möchte? Wie vergebe ich den dann die ID des Steuerelements.

    Du erzeugst doch ein Child-Fenster, eben einen Button; Die haben keine Menüs!

    Dann:

    Lass das:

    if(HIWORD(wParam) == BN_CLICKED)
    

    mal weg...vllt. gehts dann

    Olaf323 schrieb:

    Hm......... bei mir klappts nicht :(, wenn ich jetzt auf den Button klicke passiert nichts mehr.

    Bau da mal ne MessageBox(...) ein, um zu checken, ob dein Klick überhaupt ankommt 😉

    case WM_COMMAND:
        {
    
            if(LOWORD(wParam) == 700)
            {
                        MessageBox(0,"Button-ID: 700",0,0);
                        hWndNeu = CreateWindow(TEXT("SUB"), TEXT("Erfassung der Mitarbeiterdaten"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 320, 240, CW_USEDEFAULT, CW_USEDEFAULT,
                                                NULL, (HMENU) 3, NULL, NULL);
            }
        }
    


  • Olaf323 schrieb:

    Noch eine Frage, ich caste ja die ID(ee) 😉 mit (HMENU), was ist den wenn ich jetzt mal ein menu angeben möchte? Wie vergebe ich den dann die ID des Steuerelements.

    Wer möchte denn einem BUTTON (falls das überhaupt möglich ist - ich bezweifle es) ein Menü verpassen!?

    Greetz, Swordfish



  • Versuch 'mal:

    case WM_COMMAND:
    
        switch( LOWORD( wParam ) ) {
    
            case 700:
                MessageBox( 0, TEXT( "700" ), TEXT( "ID:" ), MB_OK );
                return 0;
    
            case 2:
                MessageBox( 0, TEXT( "700" ), TEXT( "ID:" ), MB_OK );
                return 0;
        }
        break;
    

    Was hältst du eigentlich davon, für deine Buttons Konstante ID's a`la IDC_SONSTWAS zu definieren?

    Greetz, Swordfish



  • Swordfish schrieb:

    Versuch 'mal:

    case WM_COMMAND:
    
        switch( LOWORD( wParam ) ) {
    
            case 700:
                MessageBox( 0, TEXT( "700" ), TEXT( "ID:" ), MB_OK );
                return 0;
    
            case 2:
                MessageBox( 0, TEXT( "700" ), TEXT( "ID:" ), MB_OK );
                return 0;
        }
        break;
    

    Jo genau das meinte...hatte nur kein Bock das zu tippen 😃 ...

    Swordfish schrieb:

    Was hältst du eigentlich davon, für deine Buttons Konstante ID's a`la IDC_SONSTWAS zu definieren?

    Greetz, Swordfish

    Jo sinnvoll, dann is es übersichtlicher:

    #define   BTN_SEIZE_WORKER   6000 // das wär C
    const int BTN_SEIZE_WORKER = 6000; // das wär C++
    

    Diese Konstante setzt du dann überall ein, wo sie gebraucht wird 👍

    PS: Die Leerzeichen sind nur für die Optik 🕶



  • CodeFinder schrieb:

    Jo genau das meinte...hatte nur kein Bock das zu tippen 😃 ...

    Fauler Sack!

    CodeFinder schrieb:

    #define   BTN_SEIZE_WORKER   6000 // das wär C
    const int BTN_SEIZE_WORKER = 6000; // das wär C++
    

    [...]
    PS: Die Leerzeichen sind nur für die Optik 🕶

    Tja, Layout ist ALLES! 😃 😃 😃

    Greetz, Swordfish

    PS @ CodeFinder: Wo bist du eigentl. beheimatet?



  • Danke, funktioniert 🙂



  • Swordfish schrieb:

    PS @ CodeFinder: Wo bist du eigentl. beheimatet?

    NRW, du ?


Anmelden zum Antworten