Первое приложение на 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);

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

  1. Создаем окно с помощью функции CreateWindow
  2. В качестве класса окна указываем szClassName
  3. В качестве заголовка окна указываем szTitle
  4. Устанавливаем стиль окна WS_OVERLAPPEDWINDOW | WS_VISIBLE
  5. Устанавливаем начальные координаты окна CW_USEDEFAULT, 0
  6. Устанавливаем начальные размеры окна CW_USEDEFAULT, 0
  7. Устанавливаем родительское окно NULL
  8. Устанавливаем параметры меню и полосы прокрутки NULL
  9. Устанавливаем дескриптор экземпляра hInstance
  10. Устанавливаем параметр загрузки окна NULL

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


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

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

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