Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.63
Кувалда
1 / 1 / 0
Регистрация: 09.10.2009
Сообщений: 40
#1

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

07.04.2010, 21:10. Просмотров 5657. Ответов 10
Метки нет (Все метки)

error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2010, 21:10     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку?
Посмотрите здесь:
Выдает ошибку [Linker error] undefined reference to `WinMain@16' C++
Как хидер может повлиять на поведение линковщика, ищущего WinMain@16? C++
Правильно ли перегружена функция? C++
C++ может ли рекурсивная функция быть встроенной?
Не могу найти ошибку, может быть дело даже не в коде, но все же C++
C++ Подскажите пожалуйста в чем может быть трабл при компиляции класса выдает ошибку
C++ Функция swap. error C2106: =: левый операнд должен быть левосторонним значением
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
08.04.2010, 04:28     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #2
Не перегружать ее
Вонх
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 124
08.04.2010, 09:01     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #3
Не делать ошибки... Что вы пишите?
Кувалда
1 / 1 / 0
Регистрация: 09.10.2009
Сообщений: 40
08.04.2010, 10:58  [ТС]     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #4
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
#include <windows.h>  
#include "mditest.h"  
 
 
HWND      hWndClient = NULL;
HINSTANCE hInst;   // current instance
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);  
LPCTSTR lpszAppName  = L"MyMDIApp";
LPCTSTR lpszChild    = L"MDIChild";
LPCTSTR lpszTitle    = L"MDI Test Application"; 
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow)
{
   MSG        msg;
   HWND       hWnd; 
   WNDCLASSEX wc;
 
   // Register the main application window class.
   //............................................
   wc.style         = CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc   = (WNDPROC)WndProc;       
   wc.cbClsExtra    = 0;                      
   wc.cbWndExtra    = 0;                      
   wc.hInstance     = hInstance;              
   wc.hIcon         = LoadIcon( hInstance, lpszAppName ); 
   wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
   wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1);
   wc.lpszMenuName  = lpszAppName;              
   wc.lpszClassName = lpszAppName;              
   wc.cbSize        = sizeof( WNDCLASSEX );
   //wc.hIconSm       = LoadImage( hInstance, lpszAppName, 
   //                              IMAGE_ICON, 16, 16,
   //                              LR_DEFAULTCOLOR );
 
   if ( !RegisterClassEx( &wc ) )
      return( FALSE );
 
   // Register the window class for the MDI child windows.
   //.....................................................
   wc.lpfnWndProc   = (WNDPROC)ChildWndProc;
   wc.hIcon         = LoadIcon( hInstance, lpszChild );
   wc.hCursor       = LoadCursor( NULL, IDC_ARROW );
   wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
   wc.lpszMenuName  = NULL;
   wc.lpszClassName = lpszChild;
   wc.cbSize        = sizeof( WNDCLASSEX );
   //wc.hIconSm       = LoadImage( hInstance, lpszChild, 
   //                              IMAGE_ICON, 16, 16,
   //                              LR_DEFAULTCOLOR );
 
   if ( !RegisterClassEx( &wc ) )
      return( FALSE );
 
   hInst = hInstance; 
 
   // Create the main application window.
   //....................................
   hWnd = CreateWindow( lpszAppName, 
                        lpszTitle,    
                        WS_OVERLAPPEDWINDOW, 
                        CW_USEDEFAULT, 0, 
                        CW_USEDEFAULT, 0,  
                        NULL,              
                        NULL,              
                        hInstance,         
                        NULL               
                      );
 
   if ( !hWnd ) 
      return( FALSE );
 
   ShowWindow( hWnd, nCmdShow ); 
   UpdateWindow( hWnd );         
 
   while( GetMessage( &msg, NULL, 0, 0) )   
   {
      if ( hWndClient && TranslateMDISysAccel( hWndClient, &msg ) )
         continue;
 
      TranslateMessage( &msg ); 
      DispatchMessage( &msg );  
   }
 
   return( msg.wParam ); 
}
 
// An ID that is different than all menu ids.
//...........................................
#define ID_CHILDWINDOW 1000 
 
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
   switch( uMsg )
   {
      case WM_CREATE :
              {
                 CLIENTCREATESTRUCT ccs;
    
                 // Assign the 'Window' menu.
                 //..........................             
                 ccs.hWindowMenu  = GetSubMenu( GetMenu( hWnd ), 1 );
                 ccs.idFirstChild = ID_CHILDWINDOW;
 
                 // Create the client window.
                 //..........................
                 hWndClient = CreateWindowEx( WS_EX_CLIENTEDGE, 
                                              L"MDICLIENT", NULL,
                                              WS_CHILD | WS_CLIPCHILDREN, 
                                              0, 0, 0, 0,
                                              hWnd, (HMENU)0xCA0, hInst, &ccs);
 
                 ShowWindow( hWndClient, SW_SHOW );
              }
              break;
 
      case WM_SIZE :
              // Size the client window to the size of the client
              // area of the main application window.
              //.................................................
              MoveWindow( hWndClient, 0, 0, LOWORD( lParam ), 
                                            HIWORD( lParam ), TRUE );
              break;
     
      case WM_COMMAND :
              switch( LOWORD( wParam ) )
              {
                 case IDM_NEW :
                     {
                        HWND hWndChild;
 
                        // Create a new child window.
                        //...........................
                        hWndChild = CreateMDIWindow( (LPTSTR)lpszChild, 
                                         L"Document", 0L,
                                         CW_USEDEFAULT, CW_USEDEFAULT, 
                                         CW_USEDEFAULT, CW_USEDEFAULT,
                                         hWndClient, hInst, 0L);
 
                        ShowWindow( hWndChild, SW_SHOW );
                     }
                     break;
 
                 case IDM_CLOSE :
                     {
                        HWND hActiveWnd;
                        
                        // Close the active child window.
                        //...............................
                        hActiveWnd = (HWND)SendMessage( hWndClient, 
                                                        WM_MDIGETACTIVE, 0, 0 );
                        if ( hActiveWnd )
                           SendMessage( hWndClient, WM_MDIDESTROY, (WPARAM)hActiveWnd, 0 );
                     }
                     break;
 
                 case IDM_CASCADE :
                        CascadeWindows( hWndClient, MDITILE_SKIPDISABLED,
                                        NULL, 0, NULL );
                        break;
 
                 case IDM_TILEHORZ :
                        TileWindows( hWndClient, MDITILE_HORIZONTAL, 
                                     NULL, 0, NULL );
                        break;
 
                 case IDM_TILEVERT :
                        TileWindows( hWndClient, MDITILE_VERTICAL, 
                                     NULL, 0, NULL );
                        break;
 
                 case IDM_ARRANGE :
                        ArrangeIconicWindows( hWndClient );
                        break;
 
                 case IDM_ABOUT :
                        DialogBox( hInst, L"AboutBox", hWnd, (DLGPROC)About );
                        break;
 
                 case IDM_EXIT :
                        DestroyWindow( hWnd );
                        break;
 
                 default :
                        return( DefFrameProc( hWnd, hWndClient, 
                                              uMsg, wParam, lParam ) );      
              }
              break;
      
      case WM_DESTROY :
              PostQuitMessage(0);
              break;
 
      default :
            return( DefFrameProc( hWnd, hWndClient, uMsg, wParam, lParam ) );
   }
 
   return( 0L );
}
 
 
LRESULT CALLBACK ChildWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
   //switch( uMsg )
   //{
   //   default :
   //         return( DefMDIChildProc( hWnd, uMsg, wParam, lParam ) );
   //}
 
   return( 0L );
}
 
 
LRESULT CALLBACK About( HWND hDlg,           
                        UINT message,        
                        WPARAM wParam,       
                        LPARAM lParam)
{
   switch (message) 
   {
       case WM_INITDIALOG: 
               return (TRUE);
 
       case WM_COMMAND:                              
               if (   LOWORD(wParam) == IDOK         
                   || LOWORD(wParam) == IDCANCEL)    
               {
                       EndDialog(hDlg, TRUE);        
                       return (TRUE);
               }
               break;
   }
 
   return (FALSE); 
}
Добавлено через 1 минуту
Цитата Сообщение от Вонх Посмотреть сообщение
Не делать ошибки... Что вы пишите?
выше код написал

Добавлено через 10 минут
понимаю что наверно ламерский какой-то вопрос, но новичку сложно разобраться
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.04.2010, 11:00     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #5
Не знаю, входит ли это в уже объявленное, но CALLBACK нехватает.
Кувалда
1 / 1 / 0
Регистрация: 09.10.2009
Сообщений: 40
08.04.2010, 23:59  [ТС]     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Не знаю, входит ли это в уже объявленное, но CALLBACK нехватает.
добавил CALLBACK - стало ругаться дважды на перегрузку функции. И все, неужели никто не знает как побороть?
Вонх
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 124
09.04.2010, 12:46     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #7
Чесно сказать, я не понил что за программа и что она делает или должна делать... Вы скорее всего качнули где-то код...
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.04.2010, 12:58     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #8
Добавил после WINAPI и сла ругаться дважды? А на оконную процедуру не ругался? Значит я прогнал. Типы параметров правильные. Может порядок типов самой функции?
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
09.04.2010, 18:15     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #9
А если написать LPSTR вместо LPTSTR, лучше не станет? А то есть у меня подозрение, что опять юникод виноватый...
Даемоник
42 / 42 / 3
Регистрация: 22.05.2009
Сообщений: 97
09.04.2010, 19:09     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #10
А что лежит в .h файле посмотреть можно? В коде приведенном выше с функцией WinMain все в порядке, может в прототипе ошибка закралась..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2010, 21:07     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку?
Еще ссылки по теме:
C++ Error С2664. Параметр 1 не может быть преобразован из 'int' в 'int [][10]'
C++ [ERROR] id returned 1 exit status | main.c:(text.startup+0xa7):undefined reference to 'WinMain@16'
Не могу убрать ошибку: "error LNK2001: неразрешенный внешний символ" C++
Как такое может быть? C++

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

Или воспользуйтесь поиском по форуму:
Кувалда
1 / 1 / 0
Регистрация: 09.10.2009
Сообщений: 40
09.04.2010, 21:07  [ТС]     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? #11
Цитата Сообщение от Даемоник Посмотреть сообщение
А что лежит в .h файле посмотреть можно? В коде приведенном выше с функцией WinMain все в порядке, может в прототипе ошибка закралась..
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define IDM_EXIT           100
#define IDM_NEW            200
#define IDM_CLOSE          201
#define IDM_CASCADE        202
#define IDM_TILEHORZ       203
#define IDM_TILEVERT       204
#define IDM_ARRANGE        205
#define IDM_ABOUT          300
 
#define DLG_VERFIRST        400
#define DLG_VERLAST         404
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ChildWndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About  (HWND, UINT, WPARAM, LPARAM);
Добавлено через 29 секунд
я пробовал комментировать "//LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);" - не помогло

Добавлено через 6 минут
Цитата Сообщение от Nick Alte Посмотреть сообщение
А если написать LPSTR вместо LPTSTR, лучше не станет? А то есть у меня подозрение, что опять юникод виноватый...
ошибка с перегрузкой функции ушла - огромное спасибо. Только окно mdi-приложения все равно не появилось. В чем может быть загвоздка?
Yandex
Объявления
09.04.2010, 21:07     error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru