Aktiv/Inaktiv



  • Hey BitWax,

    mein Wille war es nicht, arrogant zu klingen, aber nun mal ehrlich:
    "Ein kongruent arbeitendes Programm" ist schwer missverständlich, wenn man das Adjektiv "kongruent" übersetzen kann.

    Wie dem auch sei, mein Hauptfenster soll dem in ihm liegenden Edit-Fenster einen Text hinzufügen:

    void Edit_AddText(HWND hWnd,LPCTSTR lpText)
    {
    	DWORD dwStart = 0,dwEnd = 0;
    	int nLen = GetWindowTextLength(hWnd);
    	SendMessage(hWnd,EM_GETSEL,(WPARAM)&dwStart,(LPARAM)&dwEnd);
    	SendMessage(hWnd,EM_SETSEL,(WPARAM)nLen,(LPARAM)nLen);
    	SendMessage(hWnd,EM_REPLACESEL,(WPARAM)FALSE,(LPARAM)lpText);
    	SendMessage(hWnd,EM_SETSEL,(WPARAM)dwStart,(LPARAM)dwEnd);
    	return;
    }
    
    Edit_AddText(hEdit,"Hallo");
    UpdateWindow(hEdit);
    

    So, angenommen jetzt liegt ein anderes Fenster über meinem, aber so, dass ich das Editfeld sehen kann. Dann kommt der Befehl Edit_AddText() aber es passiert nichts. Jetzt fahre ich mit der Maus auf Fenster und schwupp, "Hallo" erscheint. Erscheinen soll es aber sofort, egal ob Vorder- oder Hintergrund.

    Was tun?

    lg Max



  • Zeichnest du das Edit-Feld selber oder veränderst du es in i-einer form? (abgesehen von AddText () usw...)



  • Öhm ich fange die WM_CTLCOLORSTATIC ab und färbe das Fenster, aber das kanns ja wohl nicht sein.

    Der Aufruf sieht ganz einfach so aus:

    hEdit = CreateWindow("EDIT",NULL,
    WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_READONLY|WS_VSCROLL|ES_AUTOVSCROLL,
    10,10,570,300,hWnd,NULL,hInstance,NULL);
    

    Irgendwas problematisch?

    lg Max

    PS: Danke für Deine Antworten.



  • öhhmmm welches Fenster? das Edit-Feld oder das Programmfenster?
    am CreateWindow Aufruf ist nichts problematisch 😃



  • ^^

    Mit WM_CTLCOLORSTATIC färbe ich das hEdit:

    case WM_CTLCOLORSTATIC: //Hauptfenster-MSG
    {
        if ((HWND)lParam == hEdit)
        {
            return (LRESULT)CreateSolidBrush(RGB(255,255,255)); //hEdit weiß färben
        }
        break;
    }
    

    lg Max



  • achso, dann musste wahrscheinlich noch WM_ERASEBKGND abfangen 🙂



  • Hmm gut, sollte kein Problem sein^^

    case WM_ERASEBKGND: break;
    

    Aber was mach ich letztendlich damit?^^

    lg Max



  • wenn ich mich nicht irre, zeichenoperationen ausführen, die dann das edit-feld zeichenen also so mehr oder weniger 😃
    vllt. kommt ja mal jmd. vorbei der sowas schonmal gemacht hat und erklärt dir das genauer 😃



  • Hehe, habt Ihr gehört? 😃

    Vielen Dank schonmal bis hierher! 😃

    lg Max



  • Probier mal noch ein InvalidateRect() vor UpdateWindow().



  • Hey, danke für Deine Antwort.

    Hab ich versucht, bringt aber leider nichts.

    lg Max


Anmelden zum Antworten