多.cpp文件出错:error LNK2005: _main already defined in winmain.obj

东莞某某某 2010-10-13 11:15:15
Main.c文件如下:
#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
TCHAR szAppName[] = TEXT("NotePad");


int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wndclass;
HWND hwnd;
MSG msg;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (hInstance, szAppName) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = szAppName ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox(NULL,TEXT ("请更新你的系统!"),szAppName, MB_ICONERROR) ;
return 0 ;
}


hwnd = CreateWindow(szAppName, szAppName,
WS_OVERLAPPEDWINDOW,
GetSystemMetrics (SM_CXSCREEN) / 4,
GetSystemMetrics (SM_CYSCREEN) / 4,
GetSystemMetrics (SM_CXSCREEN) / 2,
GetSystemMetrics (SM_CYSCREEN) / 2,
NULL, NULL, hInstance, NULL) ;

ShowWindow (hwnd, nShowCmd) ;
UpdateWindow (hwnd) ;


while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}

return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CREATE:

return 0;

case WM_SIZE:

return 0;

case WM_SETFOCUS:

return 0;

case WM_CLOSE:
DestroyWindow(hwnd);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;

}

return DefWindowProc(hwnd, message, wParam, lParam) ;
}






请问如何将Main.c分割为两个文件?
分割为如下两个文件链接会出错:error LNK2005: _main already defined in winmain.obj

//WinMain.c
#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
TCHAR szAppName[] = TEXT("NotePad");


int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wndclass;
HWND hwnd;
MSG msg;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (hInstance, szAppName) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = szAppName ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox(NULL,TEXT ("请更新你的系统!"),szAppName, MB_ICONERROR) ;
return 0 ;
}


hwnd = CreateWindow(szAppName, szAppName,
WS_OVERLAPPEDWINDOW,
GetSystemMetrics (SM_CXSCREEN) / 4,
GetSystemMetrics (SM_CYSCREEN) / 4,
GetSystemMetrics (SM_CXSCREEN) / 2,
GetSystemMetrics (SM_CYSCREEN) / 2,
NULL, NULL, hInstance, NULL) ;

ShowWindow (hwnd, nShowCmd) ;
UpdateWindow (hwnd) ;


while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}

return msg.wParam ;
}


//EditProc.c
#include <windows.h>



LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CREATE:

return 0;

case WM_SIZE:

return 0;

case WM_SETFOCUS:

return 0;

case WM_CLOSE:
DestroyWindow(hwnd);
return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;

}

return DefWindowProc(hwnd, message, wParam, lParam) ;
}




请问如何处理?
...全文
1159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2010-10-14
  • 打赏
  • 举报
回复
“link”中:(在OK按钮上面框中找)
/subsystem:console改windows
zwfgdlc 2010-10-14
  • 打赏
  • 举报
回复
估计你创建的工程是控制台程序
东莞某某某 2010-10-14
  • 打赏
  • 举报
回复
是不是给的分太少了,所以没人回答?

解决问题了我加分
东莞某某某 2010-10-14
  • 打赏
  • 举报
回复

注:代码是从空工程建立起来的。
东莞某某某 2010-10-14
  • 打赏
  • 举报
回复
up
.
东莞某某某 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 schlafenhamster 的回复:]

“link”中:(在OK按钮上面框中找)
/subsystem:console改windows
[/Quote]

我的设置就是windows

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧