windows编程初级问题,请指教
小弟近日开始学习WINDOWS的编程,首选当然是先写一个最简单的窗口啦。我按照书上的代码,一字一字的敲进电脑,COMPLIES时没问题,但BUILD时提示有错误。下面是照书上抄的代码,请各位大哥指点一二:)
#include <windows.h>
LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);
char szWinName[]="MyWin";
int WINAPI WinMain(HINSTANCE hThisInst,HINSTANCE hPrevInst,LPSTR lpszArgs,int nWinMode)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wcl;
wcl.hInstance=hThisInst;
wcl.lpszClassName=szWinName;
wcl.lpfnWndProc=WindowFunc;
wcl.style=0;
wcl.cbSize=sizeof(WNDCLASSEX);
wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wcl.hIconSm=LoadIcon(NULL,IDI_WINLOGO);
wcl.hCursor=LoadCursor(NULL,IDC_CROSS);
wcl.lpszMenuName=NULL;
wcl.cbClsExtra=0;
wcl.cbWndExtra=0;
wcl.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH);
if(!RegisterClassEx(&wcl)) return 0;
hwnd=CreateWindow(
szWinName,
"Windows 95 Skeleton",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
HWND_DESKTOP,
NULL,
hThisInst,
NULL
);
ShowWindow(hwnd,nWinMode);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) {
switch(message) {
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
我用的编译器是VC++6.0
BUILD时提示错误为:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Cpp1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Cpp1.exe - 2 error(s), 0 warning(s)
还请各位大哥指出错误所在。
要知道,如果连一个最简单的窗口都建立不了的话,我真的是没有信心学下去了。
PS:在下愿献上我能给的最高分49分。(不好意思,我太菜了)
问题点数:49、回复次数:14Top
1 楼warrior(不断领悟)回复于 2001-10-08 20:48:19 得分 1
你的工程是不是WIN32应用程序,还是CONSOLE程序,检查一下吧。。。Top
2 楼A_KID(A_KID)回复于 2001-10-08 20:50:29 得分 0
我是直接——新建——C/C++ SOURSE的Top
3 楼A_KID(A_KID)回复于 2001-10-08 20:52:04 得分 0
在COMPILE时提示要新建工作区,我就点YES。Top
4 楼A_KID(A_KID)回复于 2001-10-08 20:56:47 得分 0
^&^%*(&(
我得好像有些乱,不好意思。
我是点”新建“——”文件“——”C/C++ SOURCE FILE“
然后连接,提示要我建立新的工作区,我就点YES。在BUILD时就提示上述错误了。
请问:是否我新建工程的方法不对,如果是,应该怎样建立新工程呢?
总而言之,我写这个程序的目的就是建立一个WINODWS下的EXE文件,双击打开后就是一个最简单的窗口。
请各位指教,不胜感激。Top
5 楼lj9852(Loading)回复于 2001-10-08 21:20:00 得分 30
这样:先new,选projects下的Win32 Application,在右边project name填入工程名,下面location是工程路径,然后一直ok就可以了。
接下来new,然后选files下的c++ Source file,在file里填入文件名,注意把Add To project打上勾,然后就可以写程序编译了。Top
6 楼Only_I(我)回复于 2001-10-08 21:23:15 得分 0
upTop
7 楼A_KID(A_KID)回复于 2001-10-08 21:40:52 得分 0
TO:lj9852(老实狼)
我的问题是不是出在建立工程的方法不对?
另:请大家推荐几本WINDOWS编程入门书(本人已有一定的C基础——虽然不算高)
我现在用的是Herbert Schildt著,亦鸥翻译组译的《windows95程序设计必读》,此书原名为:《windows95 Programming Nuts&Bots:For Experienced Programmes》——这是在我们学校图书馆里找到的最好的一本了:)
Top
8 楼lj9852(Loading)回复于 2001-10-08 21:46:55 得分 0
你建立的是一个win32 api应用程序,要用Win32 Application,其他的我没试过。
WINDOWS编程入门书大家都推荐《windows程序设计》,我用的也是这本,确实不错。
Top
9 楼Viper()回复于 2001-10-08 22:20:50 得分 5
你的方法一般,也没什么不对,
关键在于Project Setting中,
在Link选项卡中,找到/subsystem:windows或/subsytem:console将其全部删除,再试试,
通常会成功。Top
10 楼QQrack(QQquick)回复于 2001-10-08 22:41:17 得分 10
兄弟,你的程序完全是正确的。
你这样试试:
file->new->工程->Win32 Application 选择 工程名和path-> An empty project
->finish.
然后在source files 中 Add files to folder ->加入程序就OK了!
Top
11 楼PineGreen(海岛雪浪)回复于 2001-10-08 22:52:23 得分 0
找本VC++的入门书浏览浏览吧。Top
12 楼xrbeck(ALEK)回复于 2001-10-09 11:27:55 得分 3
工程选错了。要选“Win 32 Application".
否则编译器去连接main主函数当然出错了。Top
13 楼A_KID(A_KID)回复于 2001-10-09 13:45:37 得分 0
谢谢各位的帮助
按照lj9852(老实狼) 的方法,已经解决了问题。
终于知道怎样建立应用程序了:)
本来这种问题用不着来烦大家的,只是我用的书上只给出了代码,没有给出建立工程的方法,所以我才会犯这样的错误。
另:请问《WINDOWS程序设计》的作者是谁?哪个出版社出版的?Top
14 楼Viper()回复于 2001-10-09 21:13:30 得分 0
160RMB,全国各大书店有售,分上,下两册,Win32 SDK编程的必备经典。
Author : charles petzold,北京大学出版社。
Top




