Реализовать окно - 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 );
}
Объяснение кода листинга программы
- Программа создает окно с заголовком
Typicalи размером 555x444 пикселей. - Переменная
szProgNameсодержит строкуHello Win32, а переменнаяmessageсодержит строкуHello from Win32. - Код регистрирует класс окна с именем
WNDCLASS1. - Код создает экземпляр окна с использованием зарегистрированного класса
WNDCLASS1. - Код отображает окно.
- Код обрабатывает сообщение WM_PAINT, которое возникает при необходимости рисования окна. В этом случае он очищает окно и рисует текст
Hello from Win32в верхнем левом углу. - Код обрабатывает сообщение WM_DESTROY, которое возникает при закрытии окна. В этом случае он отправляет сообщение WM_QUIT, чтобы завершить работу программы.
- Код обрабатывает все остальные сообщения с помощью функции
DefWindowProc. - Программа завершается, когда окно закрывается.