Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/40: Рейтинг темы: голосов - 40, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 01.08.2019
Сообщений: 12

C2731: Функция WINMAIN не может быть перегруженна

25.09.2019, 12:16. Показов 8959. Ответов 3

Студворк — интернет-сервис помощи студентам
Да я знаю что тема заеженная, но описания этой ошибки нигде нет. Я только начинаю изучать DirectX и не понимаю в чем проблемма.

Вот код-

Main.CPP:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "Main.h"
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, char* lpCmdLine, LPCTSTR nCmdShow, LPSTR WindowName, int WindowWidth, int WindowHeight)
{
    g_hInstance = GetModuleHandle(NULL);
 
    WNDCLASSEX wc;
    wc.cbSize = sizeof(WNDCLASSEX);        //Размер структуры
    wc.style = CS_HREDRAW | CS_VREDRAW;      //Стили класса окна
    wc.lpfnWndProc = WndProc;              //Функция обработки сообщений
    wc.cbClsExtra = 0;                //Количество выделяемой памяти при создании приложения
    wc.cbWndExtra = 0;                //Количество выделяемой памяти при создании приложения
    wc.hInstance = g_hInstance;            //Дескриптор приложения
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);  //Загружаем стандартную иконку
    wc.hCursor = LoadCursor(0, IDC_ARROW);      //Загружаем стандартный курсор
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);//Окно будет закрашено в белый цвет
    wc.lpszMenuName = 0;                //Не используем меню
    wc.lpszClassName = "Lost Days";            //Названия класса
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);  //Загружаем стандартную иконку
 
    if (!RegisterClassEx(&wc))                //Регистрируем класс в Windows
    {
        Shutdown();                    //Освобождаем память
        MessageBox(NULL, "Can`t register window class", "Error", MB_OK | MB_ICONERROR); //Выводим сообщение
        return 0;                    //Завершаем работу приложения
    }
 
    g_hWnd = CreateWindowEx(              //Создаем окно
        WS_EX_APPWINDOW | WS_EX_WINDOWEDGE,        //Расширенный стиль окна
        "Lost Days",                    //Названия класса окна
        WindowName,
        WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,//Стиль окна
        0,                      //Позиция окна по оси Х
        0,                      //Позиция окна по оси У
        WindowWidth,                //Ширина окна
        WindowHeight,              //Высота окна
        NULL,                    //Это наше главное окно
        NULL,                    //Нету меню
        g_hInstance,                //Дескриптор приложения
        NULL);                    //Дополнительный настроек не используем
 
    if (g_hWnd == NULL)                //Если не создали окно
    {
        Shutdown();
        MessageBox(NULL, "Can`t create window", "Error", MB_OK | MB_ICONERROR);//Выводим сообщение
        return 0;                  //Завершаем работу приложения
    }
 
    if (!InitDirect3D(D3DFMT_R5G6B5, D3DFMT_D16, WindowWidth, WindowHeight))    //Если не смогли инициализировать Direct3D
    {
        Shutdown();
        MessageBox(NULL, "Can`t create direct3d", "Error", MB_OK | MB_ICONERROR);//Выводим сообщение
        return 0;                  //Завершаем работу приложения
    }
 
    ShowWindow(g_hWnd, SW_SHOW);            //Отображаем окно  
    UpdateWindow(g_hWnd);              //Обновляем окно
    SetFocus(g_hWnd);                //Устанавливаем фокус на наше окно
    SetForegroundWindow(g_hWnd);          //Устанавливаем приоритет окна выше среднего
 
    MSG msg;
    ZeroMemory(&msg, sizeof(msg));
 
    while (g_bApplicationState)            //Начинаем бесконечный цикл обработки сообщений
    {
        if (PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE))//Получаем сообщения
        {
            TranslateMessage(&msg);          //Обрабатываем сообщения
            DispatchMessage(&msg);          //Обрабатываем сообщения
        }
        else
            DrawFrame();              //Если сообщений нету рисуем кадры
    }
 
    Shutdown();                    //Освобождаем память
    return 0;                    //Завершаем работу приложения
}
Main.H:
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
#include <d3d9.h>
#include <framework.h>
 
int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    char* lpCmdLine,
    LPCTSTR iCmdShow,
    LPSTR WindowName,
    int WindowWidth,
    int WindowHeight);
framework.H:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
 
#define WIN32_LEAN_AND_MEAN             // Исключите редко используемые компоненты из заголовков Windows
 
#include <windows.h>
#include <d3d9.h>
 
HINSTANCE g_hInstance = NULL;      //Дескриптор приложения
HWND g_hWnd = NULL;            //Дескриптор окна
bool g_bApplicationState = true;    //Состояние приложения (true - работает/false - не работает)
IDirect3D9* g_pDirect3D = NULL;      //Интерфейс для создания устройства рендеринга
IDirect3DDevice9* g_pDirect3DDevice = NULL;  //Интерфейс устройства рендеринга
 
long WINAPI WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
bool InitDirect3D(D3DFORMAT ColorFormat, D3DFORMAT DepthFormat, int WindowWidth, int WindowHeight);
void DrawFrame();
void Shutdown();
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2019, 12:16
Ответы с готовыми решениями:

error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку?
error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку?

Может ли быть данная функция быть функцией распределения некоторой случайной величины?
Может ли быть функция F(x)= |sinx| быть функцией распределения некоторой случайной величины? Почему?

Может ли функция быть значением по умолчанию?
День добрый! Правда ли, что нельзя функции назначать как DEFAULT? Например, alter table tv modify colname time default value...

3
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
25.09.2019, 14:13
Лучший ответ Сообщение было отмечено VAX325 как решение

Решение

Проблема в функции WinMain. Эта функция - точка входа в программу, первая функция которая вызывается системой при запуске вашей программы. Что бы система могла вызвать эту функцию она должна соответствовать определённому прототипу известному системе, т.е. иметь определённые аргументы, возвращаемый тип и тому подобное. Уберите свой перегруженный прототип WinMain из Main.H, а в Main.CPP исправьте WinMain в соответствии с системными ожиданиями.
C++
1
2
3
4
//int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, char* lpCmdLine, LPCTSTR nCmdShow, LPSTR WindowName, int WindowWidth, int WindowHeight)
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
//...
1
0 / 0 / 0
Регистрация: 01.08.2019
Сообщений: 12
25.09.2019, 14:16  [ТС]
Спасибо. Тема закрыта.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
25.09.2019, 14:16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/************************************************************************
*                                                                       *
*   winbase.h -- This module defines the 32-Bit Windows Base APIs       *
*                                                                       *
*   Copyright (c) Microsoft Corp. All rights reserved.                  *
*                                                                       *
************************************************************************/
 
int
#if !defined(_MAC)
#if defined(_M_CEE_PURE)
__clrcall
#else
WINAPI
#endif
#else
CALLBACK
#endif
WinMain (
    _In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPSTR lpCmdLine,
    _In_ int nShowCmd
    );
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2019, 14:16
Помогаю со студенческими работами здесь

Ошибка - функция не может быть перегружена
Добрый вечер! Первый раз пишу на этом форуме, я новичок, так что как можно понятнее объясняйтесь, если можно :) Дана вот такая задача: есть...

Может ли функция быть действительной частью
U=x^2+y^2-xy \frac{dU}{dx}=\frac{dV}{dy}=2x-y\rightarrow V=\int(2x-y)dy=2xy-\frac{y^2}{2} \frac{dU}{dy}=-\frac{dV}{dx}=2y-x\rightarrow...

Может ли рекурсивная функция быть встроенной?
сам знаю, что не может, а почему компилится без ошибок; видимо оно компилится как обычная?

Может ли быть вызвана объявленная, но неопределённая функция?
Друзья! Ещё раз прошу иизвнения, если задену чьи-то чувства, но в дельфи я полный профан. ...Итак, качнул исходники Dev-Cpp (IDE C++,...

Функция определяющая может ли быть построен треугольник
Всем привет! Помогите плиз с задачей, нужно создать функцию которая определяет может ли быть построен треугольник из данных отрезков и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru