Text auf Transparenten Fenster



  • Man das geht ja schnell mit dir *G* 🙂

    ich teste das mal mit den spiel hehe dann muss ich das ja echt mitn timer machen *G* naja was solls

    binma gespannt ob du das schaffst hehe *hoff*



  • Ja, war rein zufällig mal online... bin das ja nur so 28 Stunden am Tag ;)...



  • hehe lol 😉

    na kommst auch net weiter??? *fg* ich auch net 😞 grml is doch ein sch**** hehe



  • Was? Meinst du das der Text auch in Spielen angezeigt wird? Wart... ich kann's ja mal probieren... *amcoderumfuhrwerk* 😃



  • OK.. hier ist der Code und er funktioniert sogar :):

    // winapi_test: main.cpp
    #include <windows.h>
    
    // ------------------------------------------------------------------------------------------- //
    
    LRESULT CALLBACK MainProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam);
    
    // ------------------------------------------------------------------------------------------- //
    
    #define MY_TIMER 5000
    
    // ------------------------------------------------------------------------------------------- //
    
    HINSTANCE hInst;
    HWND hMainWnd;
    
    int timer_count = 0;
    
    // ------------------------------------------------------------------------------------------- //
    
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
    {
        hInst = hInstance;
    
        WNDCLASSEX main;
        main.cbSize = sizeof(main);
        main.cbClsExtra = 0;
        main.cbWndExtra = 0;
        main.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
        main.hCursor = LoadCursor(0,IDC_ARROW);
        main.hIcon = LoadIcon(0,IDI_APPLICATION);
        main.hIconSm = LoadIcon(0,IDI_APPLICATION);
        main.hInstance = hInst;
        main.lpfnWndProc = MainProc;
        main.lpszClassName = "test_wnd";
        main.lpszMenuName = 0;
        main.style = CS_HREDRAW | CS_VREDRAW;
    
        RegisterClassEx(&main);
        hMainWnd = CreateWindowEx(WS_EX_TRANSPARENT,"test_wnd","Transparenter Test",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,200,200,0,0,hInst,0);
        ShowWindow(hMainWnd,SW_HIDE);
        UpdateWindow(hMainWnd);
    
        SetTimer(hMainWnd,MY_TIMER,200,0);
    
        MSG msgMain;
        while(GetMessage(&msgMain,0,0,0))
        {
            TranslateMessage(&msgMain);
            DispatchMessage(&msgMain);
        }
    
        return msgMain.wParam;
    }
    
    // ------------------------------------------------------------------------------------------- //
    
    LRESULT CALLBACK MainProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
    {
        switch(nMsg)
        {
    
        case WM_TIMER:
            {
                switch(wParam)
                {
    
                case MY_TIMER:
                    {
                        timer_count++;
                        if(timer_count <= 10)
                        {
                            if(GetForegroundWindow() != hMainWnd)
                            {
                                ShowWindow(GetForegroundWindow(),SW_SHOWMINIMIZED);
                            }
    
                            HDC hDC = CreateDC("DISPLAY",0,0,0);
    
                            TextOut(hDC,300,300,"TEST!!!",strlen("TEST!!!"));
    
                            DeleteDC(hDC);
                        }
                        else
                        {
                            KillTimer(hMainWnd,MY_TIMER);
                            ShowWindow(hMainWnd,SW_SHOW);
                            MoveWindow(hMainWnd,290,290,200,200,TRUE);
                            ShowWindow(hMainWnd,SW_HIDE);
                            exit(0);
                        }
                    } break;
    
                }
                return 0;
            }
    
        case WM_DESTROY:
            {
                KillTimer(hMainWnd,MY_TIMER);
                PostQuitMessage(0);
                return 0;
            } break;
    
        }
    
        return DefWindowProc(hWnd,nMsg,wParam,lParam);
    }
    

    Hat sich eigentlich nicht viel geändert, nur jetzt lässt das Programm in den 2 Sekunden, in denen der Text angezeigt wird, kein anderes Programm in den Vordergrund!

    cu 🙂



  • LoooL du malst einfach ein fenster üben den Text 😉 *G* verkraftet das ein spiel oder springt der gleich zurück in windows???

    will ich nich hoffen *G* ich probier das ma 🙂

    ansonsten schonma thx 🙂

    gibs da nich ne möglichkeit windows zusagen den "display" neu zu zeichnen???? das gleiche macht er ja auch wenn man ein fenster drüber legt 🙂



  • Ich hab's schon mit Spiel probiert... das Spiel wird einfach minimiert! Das war einfach die beste Lösung, die ich gefunden habe.

    cu 😃



  • Rofl neee nich so schön 😉 man soll ja weiter spielen können hehe
    habs ma probiert ohne minimieren der text erscheint einmal und das wars egal was für einen timer ich nehme 1min oder 0.0000000ns 😉

    na was solls dann muss eben die game engine dran glauben und das machen 😃

    ich such noch immer nach einer eleganten lösung um den text vom display zu bekommen ohne ein was drüber zu legen hehe
    ich hoffe das is überhaubt möglich 🙂

    cya



  • Keine Ahnung... da muss glaub ich mal'n Profi her :D!

    Das mit dem Spiel war bei mir auch so... deshalb hab ich's ja auch minimieren lassen :)!

    cu 🕶



  • Genau her mit den profis 🙂

    *loool* ich weiss ja nich, aber wenn da irgendeiner am spielen is und plötzlich minimiert sich alles ;P nene

    Die software von logitech macht sowas ähnliches ich glaub sogar das gleiche kp wie die den text wieder wegbekommen.



  • Ja... CMatt -King- wir flehen euch an! 😉



  • Ja genau bitte bitte helft mir oder uns 🙂

    Es gibt doch für Fenster die funktion InvalidateRect() die das fenster dazu veranlasst sich neu zuzeichnen (WM_PAINT sendet) gibt es sowas ähnliches nicht auch fürs "Display" ??????!!!!?!!



  • Kenn mich zwar noch nicht wirklich gut aus mit der WINAPI und bin mit Sicherheit auch kein Profi *lol*, aber meiner Ansicht nach führt das zu nichts... lieber nochmal darüber nachdenken wie man text auf einem transparenten fenster anzeigt... das sollte sicher irgendwie gehen (der einfachste weg is nicht immer der beste)
    So, genug fachgesimpelt, geholfen hats wahrscheinlich sowieso nicht, dazu hätt ich euch den Code liefern müsssen.. naja mal sehen was die Library dazu zu sagen hat 🙂



  • nene also transparentes fenster is nicht gut, da so immer ein anderes fenster im vordergrund ist und grade das kann ich schlecht gebrauchen.

    Wie gesagt die Logitech software verwendet die gleiche lösung 🙂



  • Schreib doch ne E-Mail an Logitech und frag nach :D!

    cu 🕶



  • Ich hab jetzt nicht alles gelesen, aber ich denke mal, daß Ihr das hier sucht:

    InvalidateRect(NULL, NULL, FALSE);
    

    [ Dieser Beitrag wurde am 31.10.2002 um 19:59 Uhr von -King- editiert. ]



  • AHHH goil das geht ja *G* argh so einfach is das??? grml ich ARGH ach egal

    THX THX THX :))



  • Geht's jetzt auch mit Spiel?



  • Mhhhh sollte man vieleicht mal testen nich ?? *G* daran hab ich net gedacht ich teste ma 🙂 meld mich dann



  • Ja.. testen sollte man das schon... 😃


Anmelden zum Antworten