Реализовать окно - C (СИ)

Узнай цену своей работы

Формулировка задачи:

pitaius' skompilirovat' etot elementarnii kod na CodeWarrior chtobi poluchit' obichnoe okno prilojeniq no bez resul'tatov(oshibok ne naxodit pri etom) v chem mojet bit' prichina? spasibo
#include <windows.h>
 
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg,
                                WPARAM wParam, LPARAM lParam );

char szProgName[] = "Hello Win32"; /* name of application */
char message[] = "Hello from Win32"; /* message to be printed in client area */

int WINAPI WinMain( HINSTANCE hInst,    /*Win32 entry-point routine */
                    HINSTANCE hPreInst, 
                    LPSTR lpszCmdLine, 
                    int nCmdShow )
{
     
    WNDCLASSEX wc;
 
        wc.lpszClassName    = "WNDCLASS1";
        wc.hInstance        = hInst;
        wc.lpfnWndProc      = WndProc;
        wc.hCursor          = LoadCursor( NULL, IDC_ARROW );
        wc.hIcon            = LoadIcon( NULL, IDI_ASTERISK );
        wc.lpszMenuName     = NULL;
        wc.hbrBackground    = (HBRUSH)GetStockObject( WHITE_BRUSH );
        wc.style            = CS_HREDRAW;
        wc.cbClsExtra       = 0;
        wc.cbWndExtra       = 0;
        wc.cbSize = sizeof(WNDCLASSEX);
 
          RegisterClassEx( &wc );

    HWND hWnd;
    hWnd = CreateWindowEx( 
                            NULL,
                            "WNDCLASS1",
                            "Typical",
                            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                            45, 654,
                            555, 444,
                            NULL,
                            NULL,
                            hInst,
                            NULL);

    ShowWindow(hWnd, nCmdShow );
    UpdateWindow(hWnd);

    return 0;
}

LRESULT CALLBACK WndProc( HWND hWnd, UINT messg,                /*callback procedure */
                                WPARAM wParam, LPARAM lParam )
{
    HDC hdc;                /* handle to the device context */
    PAINTSTRUCT pstruct;    /*struct for the call to BeginPaint */
    
    switch(messg)
    {
        case WM_PAINT:
        hdc = BeginPaint(hWnd, &pstruct ); /* prepare window for painting*/
        
        TextOut( hdc, 0, 0, message, ( sizeof(message) - 1 ) ); /*print hello at upper left corner */
        
        EndPaint(hWnd, &pstruct );  /* stop painting */
        break;
        
        case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
    
        default:
        return( DefWindowProc( hWnd, messg, wParam, lParam ) );
    }
 
    return( 0L );
}

Решение задачи: «Реализовать окно»

textual
Листинг программы
#include <windows.h>
 
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg,
WPARAM wParam, LPARAM lParam );
 
 
char szProgName[] = "Hello Win32"; /* name of application */
char message[] = "Hello from Win32"; /* message to be printed in client area */
 
 
int WINAPI WinMain( HINSTANCE hInst, /*Win32 entry-point routine */
HINSTANCE hPreInst, 
LPSTR lpszCmdLine, 
int nCmdShow )
{
 
WNDCLASSEX wc;
 
wc.lpszClassName = "WNDCLASS1";
wc.hInstance = hInst;
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hIcon = LoadIcon( NULL, IDI_ASTERISK );
wc.lpszMenuName = NULL;
wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
wc.style = CS_HREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.cbSize = sizeof(WNDCLASSEX);
 
RegisterClassEx( &wc );
 
 
 
HWND hWnd;
hWnd = CreateWindowEx( 
NULL,
"WNDCLASS1",
"Typical",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
45, 654,
555, 444,
NULL,
NULL,
hInst,
NULL);
 
 
 
ShowWindow(hWnd, nCmdShow );
UpdateWindow(hWnd);
 
 
 
 
return 0;
}
 
 
 
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, /*callback procedure */
WPARAM wParam, LPARAM lParam )
{
HDC hdc; /* handle to the device context */
PAINTSTRUCT pstruct; /*struct for the call to BeginPaint */
 
switch(messg)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &pstruct ); /* prepare window for painting*/
 
TextOut( hdc, 0, 0, message, ( sizeof(message) - 1 ) ); /*print hello at upper left corner */
 
EndPaint(hWnd, &pstruct ); /* stop painting */
break;
 
case WM_DESTROY:
PostQuitMessage( 0 );
break;
 
default:
return( DefWindowProc( hWnd, messg, wParam, lParam ) );
}
 
return( 0L );
}

Объяснение кода листинга программы

  1. Программа создает окно с заголовком Typical и размером 555x444 пикселей.
  2. Переменная szProgName содержит строку Hello Win32, а переменная message содержит строку Hello from Win32.
  3. Код регистрирует класс окна с именем WNDCLASS1.
  4. Код создает экземпляр окна с использованием зарегистрированного класса WNDCLASS1.
  5. Код отображает окно.
  6. Код обрабатывает сообщение WM_PAINT, которое возникает при необходимости рисования окна. В этом случае он очищает окно и рисует текст Hello from Win32 в верхнем левом углу.
  7. Код обрабатывает сообщение WM_DESTROY, которое возникает при закрытии окна. В этом случае он отправляет сообщение WM_QUIT, чтобы завершить работу программы.
  8. Код обрабатывает все остальные сообщения с помощью функции DefWindowProc.
  9. Программа завершается, когда окно закрывается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы