2012-01-11 9 views
0

Je veux changer mon application console win32 en mode graphique pour utiliser la fonction SetPixel pour tracer des lignes:commutateur application console win32 en mode graphique

#include "stdafx.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
      //code to switch to graphics mode 

    return 0; 
} 

conseils s'il vous plaît :)

+0

il n'y a pas de "mode console" vs "mode graphique". Vous pouvez utiliser 'CreateWindow' dans une application de console comme n'importe quelle autre application. – tenfour

+0

Il n'y a rien de tel que "passer en mode graphique". Vous devrez réécrire le programme pour fonctionner comme une application Windows. –

+1

@tenfour, CreateWindow n'est que le début. Ensuite, vous devez créer une pompe à message et décoder les messages. Vous devez modifier les paramètres afin qu'il n'ouvre pas une console lorsque vous le démarrez. Etc. C'est plus facile de recommencer. –

Répondre

0

vous pouvez passer à « graphich mode "signifie à Windows forme le mode d'application en utilisant le réglage du projet. mais vous devrez changer la fonction principale winMain

PARAMÈTRES DU PROJET>

LINKER> SYSTÈME> Sous-système> (Windows/SUBSYSTEM: WINDOWS)

C/C++> préprocesseur> Définitions préprocesseur > WIN32; _DEBUG; _WINDOWS;% (PreprocessorDefinitions)

ce qui est la façon dont votre fonction dans ce cas devrait ressembler à:

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR lpCmdLine, int nCmdShow) 
{ 
     ///.... 
} 
1

Voici un bon exemple de.

Créer un projet d'application win32, collez le code et compilez

//header files to include 
#include<windows.h> 
#include<stdlib.h> 
#include<time.h> 

//application title 
#define APPTITLE "Hello World" 

//function prototypes (forward declarations) 
BOOL InitInstance(HINSTANCE, int); 
ATOM MyRegisterClass(HINSTANCE); 
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM); 

//the window event callback function 
LRESULT CALLBACK WinProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    PAINTSTRUCT ps; 
    HDC hdc; 
    char *szHello = "SetPixel"; 
    RECT rt; 
    int x=0, y=0, n=0; 
    COLORREF c; 
    int j; 

    switch (message) 
    { 
    case WM_PAINT: 
     //get the dimensions of the window 
     GetClientRect(hWnd, &rt); 

     //start drawing on devicce context 
     hdc = BeginPaint (hWnd, &ps); 

     //draw some text 
     DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); 
     j = (rand()*100); 

     c = RGB(0, 0, 0); 

     while(x<25000) 
     { 

      SetPixel(hdc, rand()%400, rand()%400, rand()%255); 
      x++; 
     } 

     //stop drawing 
     EndPaint(hWnd, &ps); 
     break; 

    case WM_DESTROY: 
     PostQuitMessage(0); 
     break; 
    } 
    return DefWindowProc(hWnd, message, wParam, lParam); 
} 

//helper function to set up the window properties 
ATOM MyRegisterClass(HINSTANCE hInstance) 
{ 
    //create the window class structure 
    WNDCLASSEX wc; 
    wc.cbSize = sizeof(WNDCLASSEX); 

    //fill the struct with info 
    wc.style     = CS_HREDRAW | CS_VREDRAW; 
    wc.lpfnWndProc   = (WNDPROC)WinProc; 
    wc.cbClsExtra   = 0; 
    wc.cbWndExtra   = 0; 
    wc.hInstance    = hInstance; 
    wc.hIcon     = NULL; 
    wc.hCursor    = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground   = (HBRUSH) GetStockObject(WHITE_BRUSH); 
    wc.lpszMenuName   = NULL; 
    wc.lpszClassName   = APPTITLE; 
    wc.hIconSm    = NULL; 

    //set up the window with the class info 
    return RegisterClassEx(&wc); 
} 

//helper function to create the window and refresh it 
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 
{ 
    HWND hWnd; 

    //create a new window 
    hWnd = CreateWindow(
     APPTITLE,   //window class 
     APPTITLE,  //title bar 
     WS_OVERLAPPEDWINDOW, //window style 
     CW_USEDEFAULT,  //x position of window 
     CW_USEDEFAULT,  //y position of window 
     400,    //width of the window 
     400,    //height of the window 
     NULL,    //parent window 
     NULL,   //menu 
     hInstance,   //application instance 
     NULL);    //window parameters 


    //was there an error creating the window? 
    if(!hWnd) 
     return FALSE; 

    //display the window 
    ShowWindow(hWnd, nCmdShow); 
    UpdateWindow(hWnd); 

    return TRUE; 
} 

//entry point for a Windows program 
int WINAPI WinMain(HINSTANCE hInstance, 
        HINSTANCE hPrevInstance, 
        LPSTR   lpCmdLine, 
        int    nCmdShow) 
{ 
    //declare variables 
    MSG msg; 

    //register the class 
    MyRegisterClass(hInstance); 

    //initialize application 
    if(!InitInstance (hInstance, nCmdShow)) 
     return FALSE; 

    //set random number seed 
    srand(time(NULL)); 

    //main message loop 
    while(GetMessage(&msg, NULL, 0, 0)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
    return msg.wParam; 
} 
Questions connexes