C++ - Lustiges Hyper Window

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

C++ - Lustiges Hyper Window

Beitrag von AndyX »

Seht euch mal das an :mrgreen:

Code: Alles auswählen

#include <windows.h>
#define WIN32_LEAN_AND_MEAN 

// Nachrichten verarbeiten
LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch( msg )
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        case WM_PAINT:
            return 0;
    }
    return DefWindowProc(hWnd,msg,wParam,lParam);
}

// WinMain()
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
    //Fensterklasse erstellen und registrieren
    WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(0),0,0,0,0,"WinAPI",0};
    RegisterClassEx( &wc );

    //Fenster erstellen
    HWND hWnd = CreateWindow("WinAPI","Hyper Window",WS_OVERLAPPEDWINDOW,100,100,300,300,GetDesktopWindow(),0,wc.hInstance,0);


    ShowWindow(hWnd, SW_SHOWDEFAULT);
    UpdateWindow(hWnd);

    MSG msg; 
    while(GetMessage(&msg,0,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

	//Weg damit :D
    UnregisterClass( "WinAPI", wc.hInstance );
    return 0;
}

Wenn ihrs langsam nach runter in Schlangenlinien bewegt, siehts drinnen so aus wie ein Tunnel :lol:

PS: Das soll ein WinAPI Test sein...
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

bei mir willer nicht... es öffnet sich eine dos-console und ein fenster... kanns nurnoch schließen... :|
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Rubiko hat geschrieben:bei mir willer nicht... es öffnet sich eine dos-console und ein fenster... kanns nurnoch schließen... :|
Bei mir gehts, versuch die DOS-Konsolen option irgendwo in den Linkereigenschaften abzustellen. Bei mir ist es z.B.

"Werkzeuge">"Compiler Optionen">"Einstellungen">"Linker">"Kein Konsolenfenster erzeugen">"Yes"

Ich nutze die Dev-C++ IDE.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Das liegt daran, dass du keinen Background für das Fenster definiert hast. Daher dieser Effekt, dass man durch das Fenster hindurch sehen kann.

Der Übersichthalber solltest du dir hier angewöhnen, solche vielparametrigen Dinge wie CreateWindow oder WNDCLASS in mehrere Zeilen zu schreiben:

Code: Alles auswählen

    WNDCLASSEX wc = {sizeof(WNDCLASSEX),
                    CS_CLASSDC,
                    MsgProc,
                    0L,
                    0L,
                    GetModuleHandle(0),
                    0,0,0,0,
                    "WinAPI",
                    0};
Ist dann leichter zu erkennen, braucht zwar mehr Platz, aber was spielt schon Platz für eine Rolle wenn's um die Übersicht geht?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Sunny hat geschrieben:Das liegt daran, dass du keinen Background für das Fenster definiert hast. Daher dieser Effekt, dass man durch das Fenster hindurch sehen kann.

Der Übersichthalber solltest du dir hier angewöhnen, solche vielparametrigen Dinge wie CreateWindow oder WNDCLASS in mehrere Zeilen zu schreiben:

Code: Alles auswählen

    WNDCLASSEX wc = {sizeof(WNDCLASSEX),
                    CS_CLASSDC,
                    MsgProc,
                    0L,
                    0L,
                    GetModuleHandle(0),
                    0,0,0,0,
                    "WinAPI",
                    0};
Ist dann leichter zu erkennen, braucht zwar mehr Platz, aber was spielt schon Platz für eine Rolle wenn's um die Übersicht geht?
Das Fenster wird aber erstellt. Bei Rubiko tut sich nichts anscheinend.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

DarkDragon hat geschrieben:
Sunny hat geschrieben:Das liegt daran, dass du keinen Background für das Fenster definiert hast. Daher dieser Effekt, dass man durch das Fenster hindurch sehen kann.

Der Übersichthalber solltest du dir hier angewöhnen, solche vielparametrigen Dinge wie CreateWindow oder WNDCLASS in mehrere Zeilen zu schreiben:

Code: Alles auswählen

    WNDCLASSEX wc = {sizeof(WNDCLASSEX),
                    CS_CLASSDC,
                    MsgProc,
                    0L,
                    0L,
                    GetModuleHandle(0),
                    0,0,0,0,
                    "WinAPI",
                    0};
Ist dann leichter zu erkennen, braucht zwar mehr Platz, aber was spielt schon Platz für eine Rolle wenn's um die Übersicht geht?
Das Fenster wird aber erstellt. Bei Rubiko tut sich nichts anscheinend.
Er schrieb doch, dass sich ein Fenster und die Console öffnet. So soll es doch auch sein. :freak:

Aber das eine hat doch mit meinem Beitrag nichts zu tun. Das war lediglich eine Hilfe für mehr Übersicht im Code, dass man es besser lesen kann. Es ist in der WinAPI durchaus üblich, die Codes mehrzeilig zu schreiben, gerade weil manche dort > 10 Parameter erfordern.
Mein Beitrag oben richtete sich an den Threadersteller mit der Sache, dass das Fenster schliert, weil kein Background definiert ist.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ups, stimmt, liegt vielleicht an der Fußpflege(bin fast in Ohnmacht gefallen), an den Bauch sowie Kopfschmerzen und an der Hitze, dass ich das "ein" als "kein" gesehen hab. Sorry vielmals.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

@Sunny: Das ist bei nem Versuch rausgekommen. Ich hab aus Versehen die Zeile mit ValidateRect() gelöscht und dann wars so :lol:
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

AndyX hat geschrieben:@Sunny: Das ist bei nem Versuch rausgekommen. Ich hab aus Versehen die Zeile mit ValidateRect() gelöscht und dann wars so :lol:
Wo genau war denn die Zeile ValidateRect? Denn die würde ja nur bedeuten, dass der Hintergrund des Fensters mit dem dem Dektop zusammengeschustert werden würde, nicht, dass das Fenster einen Hintergrund hat. Der Effekt wäre immer noch unberechnebar mal flackernd und mal verwaschen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Sunny hat geschrieben:
AndyX hat geschrieben:@Sunny: Das ist bei nem Versuch rausgekommen. Ich hab aus Versehen die Zeile mit ValidateRect() gelöscht und dann wars so :lol:
Wo genau war denn die Zeile ValidateRect? Denn die würde ja nur bedeuten, dass der Hintergrund des Fensters mit dem dem Dektop zusammengeschustert werden würde, nicht, dass das Fenster einen Hintergrund hat. Der Effekt wäre immer noch unberechnebar mal flackernd und mal verwaschen.
Ich glaub er meint InvalidateRect ;) .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten