C++ Vollbild

xtrars

Ensign
Registriert
Juni 2010
Beiträge
148
Ich habe da ein Problem.
Ich soll ein kleines Programm schreiben welches man nicht wegklicken kann.
Da hab ich mir gedacht im Vollbildmodus kann man ja nirgends anders hinklicken.
Jetzt weis ich aber nicht wie man "Vollbild" programmiert...
Kann mir jemand auf die Sprünge helfen?
Danke
 
normale Anwendung (nur ein ganz kleines Programm)
 
Der Vorschlag von Ebie ist besser, wenn du sonst einen eigenen Screen erstellst hast du keine Fenster verwaltung mehr und alles mittels GDI selbst zeichnen ist für ein "kleines Programm" sicher zu viel Aufwand
 
wie wird topmost verwendet?
 
Du stellst die Eigenschaft deines VC++ Fensters eben auf diesen Wert

Form1.Topmost = True
 
In der Window Class bzw. CreateWindow das System Menu ggf. aus Overlapped Window abschalten mit raus-NOR-en...

Code:
#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW ^ WS_SYSMENU, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

der Knackpunkt liegt hier:
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW ^ WS_SYSMENU, /* default window */

...du haust das Systemmenü raus mit dem NOR ^ Operator...somit kann der User das Fenster nicht mehr schließen...
willst du daß das Fenster immer "vorne" bleibt must du noch was machen wurde weiter oben bereits angesprochen...

http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx


...zum Bleistift so:
.
.
.
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

SetWindowPos(hwnd,HWND_TOPMOST,50,50,400,400,SWP_SHOWWINDOW);
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
.
.
.
 
Zuletzt bearbeitet:
Zurück
Oben