Загрузка...

Помогите исправить ошибку. C++ WinApi

Тема в разделе C/C++ создана пользователем Checkerchin 31 мар 2018. (поднята 31 мар 2018) 503 просмотра

Загрузка...
  1. Checkerchin
    Checkerchin Автор темы 31 мар 2018 178 16 апр 2017
    Код

    #include <windows.h>

    // объявление функций
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    ATOM RegMyWindowClass(HINSTANCE, LPCTSTR);

    //////////////////////////////////////////////////////////////////////////
    // функция вхождений программы WinMain
    int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
    {

    // имя будущего класса
    LPCTSTR lpzClass = TEXT("My Window Class!");

    // регистрация класса
    if (!RegMyWindowClass(hInstance, lpzClass))
    return 1;

    // вычисление координат центра экрана
    RECT screen_rect;
    GetWindowRect(GetDesktopWindow(),&screen_rect); // разрешение экрана
    int x = screen_rect.right / 2 - 150;
    int y = screen_rect.bottom / 2 - 75;

    // создание диалогового окна
    HWND hWnd = CreateWindow(lpzClass, TEXT("Dialog Window"),
    WS_OVERLAPPEDWINDOW | WS_VISIBLE, x, y, 300, 150, NULL, NULL,
    hInstance, NULL);

    // если окно не создано, описатель будет равен 0
    if(!hWnd) return 2;

    // цикл сообщений приложения
    MSG msg = {0}; // структура сообщения
    int iGetOk = 0; // переменная состояния
    while ((iGetOk = GetMessage(&msg, NULL, 0, 0 )) != 0) // цикл сообщений
    {
    if (iGetOk == -1) return 3; // если GetMessage вернул ошибку - выход
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }

    return msg.wParam; // возвращаем код завершения программы
    }

    //////////////////////////////////////////////////////////////////////////
    // функция регистрации класса окон
    ATOM RegMyWindowClass(HINSTANCE hInst, LPCTSTR lpzClassName)
    {
    WNDCLASS wcWindowClass = {0};
    // адрес ф-ции обработки сообщений
    wcWindowClass.lpfnWndProc = (WNDPROC)WndProc;
    // стиль окна
    wcWindowClass.style = CS_HREDRAW|CS_VREDRAW;
    // дискриптор экземпляра приложения
    wcWindowClass.hInstance = hInst;
    // название класса
    wcWindowClass.lpszClassName = lpzClassName;
    // загрузка курсора
    wcWindowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    // загрузка цвета окон
    wcWindowClass.hbrBackground = (HBRUSH)COLOR_APPWORKSPACE;
    return RegisterClass(&wcWindowClass); // регистрация класса
    }

    //////////////////////////////////////////////////////////////////////////
    // функция обработки сообщений
    LRESULT CALLBACK WndProc(
    HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    // выборка и обработка сообщений
    switch (message)
    {
    case WM_LBUTTONUP:
    // реакция на сообщение
    MessageBox(hWnd, TEXT("Вы кликнули!"), TEXT("событие"), 0);
    break;
    case WM_DESTROY:
    PostQuitMessage(0); // реакция на сообщение
    break;
    default:
    // все сообщения не обработанные Вами обработает сама Windows
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }

    Ошибки:
    Код

    1>------ Build started: Project: tt, Configuration: Debug Win32 ------
    1> Source.cpp
    1>MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
    1>D:\Users Data\Tvoy Bat9\Documents\Visual Studio 2015\Projects\tt\Debug\tt.exe : fatal error LNK1120: 1 unresolved externals
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
     
  2. AMiKZ
    AMiKZ 6 апр 2018 4 14 апр 2017
    просто используй main () вместо WinMain


    Код

    #include <iostream>
    #include <conio.h>
    #include <Tl32Help.h>
    #include <string>

    /* инклуды на всякий случай =) */

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    ATOM RegMyWindowClass(HINSTANCE, LPCTSTR);

    int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
     
    6 апр 2018 Изменено
  3. Checkerchin
    Checkerchin Автор темы 7 апр 2018 178 16 апр 2017
    не помогло.
    Ошибки:
    Код

    1>MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
    1>D:\Users Data\Paul\Documents\Visual Studio 2015\Projects\tt\Debug\tt.exe : fatal error LNK1120: 1 unresolved externals
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

     
Top