Реализовать окно - 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
. - Программа завершается, когда окно закрывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д