Первое приложение на WinAPI - C (СИ)
Формулировка задачи:
Всем привет. Написал по методичке код программы, даже сверил его с кодом при создании обычного решения. В итоге окно просто не появляется при запуске. Вот код:
#include <windows.h> wchar_t szClassName[]=L"MainWindow"; wchar_t szTitle[]=L"Программа 1-1"; LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); BOOL InitInstance(HINSTANCE hInstance, int nCmdShow); void MyRegisterClass(HINSTANCE hInstance) { WNDCLASS w; memset( &w, 0, sizeof (WNDCLASS) ); w.style = CS_HREDRAW | CS_VREDRAW; w.lpfnWndProc = WndProc; w.hInstance = hInstance; w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); w.lpszClassName = L"MyClass"; w.hIcon = LoadIcon(NULL, IDI_APPLICATION); w.hCursor = LoadCursor(NULL,IDC_IBEAM); RegisterClass(&w); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; MyRegisterClass(hInstance); if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int) msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hwnd,message,wParam,lParam); } } BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; //hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной hWnd = CreateWindow(szClassName, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; }
Решение задачи: «Первое приложение на WinAPI»
textual
Листинг программы
hWnd = CreateWindow(szClassName, szTitle, WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
Объяснение кода листинга программы
- Создаем окно с помощью функции CreateWindow
- В качестве класса окна указываем szClassName
- В качестве заголовка окна указываем szTitle
- Устанавливаем стиль окна WS_OVERLAPPEDWINDOW | WS_VISIBLE
- Устанавливаем начальные координаты окна CW_USEDEFAULT, 0
- Устанавливаем начальные размеры окна CW_USEDEFAULT, 0
- Устанавливаем родительское окно NULL
- Устанавливаем параметры меню и полосы прокрутки NULL
- Устанавливаем дескриптор экземпляра hInstance
- Устанавливаем параметр загрузки окна NULL
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д