2012-01-11 4 views
0

Я хочу, чтобы переключить win32 консольное приложение в графическом режиме, чтобы использовать функцию SetPixel для рисования линий:переключатель win32 консольное приложение в графическом режиме

#include "stdafx.h" 

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

    return 0; 
} 

пожалуйста совет :)

+0

нет никакого «консольного режима» против «графического режима». Вы можете использовать 'CreateWindow' в консольном приложении, как и любое другое приложение. – tenfour

+0

Нет такой вещи, как «переход в графический режим». Вам придется переписать программу для работы в качестве приложения Windows. –

+1

@tenfour, CreateWindow - это только начало. Затем вам нужно создать насос сообщений и декодировать сообщения. Вы должны изменить настройки, чтобы не открывать консоль при ее запуске. И т. Д. Легче начать все сначала. –

ответ

0

вы можете переключиться на «graphich mode "означает режим приложения Windows Forms с использованием настройки проекта. но вы должны изменить основную функцию winMain

ПАРАМЕТРЫ ПРОЕКТА>

КОМПОНОВЩИК> SYSTEM> SUBSYSTEM> Окна (/ Subsystem: WINDOWS)

C/C++> Preprocessor> Preprocessor ОПРЕДЕЛЕНИЯ > WIN32; _DEBUG; _WINDOWS;% (PreprocessorDefinitions)

и это, как ваша функция в этом случае должна выглядеть:

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

Вот пример SetPixel().

Создать проект приложения win32, вставьте код и скомпилировать его

//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; 
} 
Смежные вопросы