#include "windows.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("HelloWin");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszClassName=szAppName;
wndclass.lpszMenuName=NULL;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires WindowsNT!"),szAppName,MB_ICONERROR);
return 0;
}
hwnd=CreateWindow(szAppName,
              TEXT("The Hello Program"),
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  NULL,
  NULL,
  hInstance,
  NULL);
ShowWindow(hwnd,iCmdShow);
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)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch(message)
{
case WM_CREATE:
PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME|SND_ASYNC);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
DrawText(hdc,TEXT("Hello Window98!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
我想有些朋友看见这段程序很熟悉,的确,这就是《windows程序设计》上面的第二个示例,很典型,但是不知道我的VC++6.0为什么不能运行,我已经在程序->设置->link里面连接了winmm.lib和user.lib等必要库文件和头文件,但是在编译的时候还是提示
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/HELLOWIN.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
我想请教一下各位这是为什么?我刚学API,这么简单的程序都不能编译的话,心里很着急~~~~

解决方案 »

  1.   

    #include "Mmsystem.h"加一个Winmm.lib库~
    明白了?
    PlaySound的毛病~
    还有~新建一个Win32 Application~然后选第二项~
      

  2.   

    project->Settings...
    link tab
    Project Options
     /subsystem:console change to  /subsystem:windows
      

  3.   

    估计是工程类型没选对,你可能选的是Dos的工程
      

  4.   

    rengo()茶凉()说的没错,你在创建project的时候选择了win32 console application,而正确的应该是win32 application!!!
      

  5.   

    project->Settings...
    link tab
    Project Options
     /subsystem:console change to  /subsystem:windows
    -----------------------------
    这样就OK了!真是厉害,能告诉我这是为什么吗?结贴
      

  6.   

    编译器的编译选项,可以看得出是选择工程类型的,编译器的选项在msdn里面有说,但是我E文差,没看懂几个
      

  7.   

    极力推见你看一本书<<windows 核心编程>>,好书哪,看完这个你再清楚不过了。
      

  8.   

    subsystem:console
    这不还是工程类型的毛病~
    faint~
      

  9.   

    我确实吧Win32 Application选成Win32 Console Application了~~~