新手windows编程,求教

lhl_2010 2010-05-01 09:44:30
我是新手,自学windows程序设计,写了一个简单的程序,但有两个错误不知道怎么改,求教。

#include <windows.h>//包含文件
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;//Wndproc窗口函数原型.
inline int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)//入口函数,见第一章HelloMsg.c的解释
{ // 1 定义变量
static TCHAR szAppName[] = TEXT ("HelloWin") ; /*程序名放在静态
字符数组,填写窗口类时作为窗口类名*/
HWND hwnd;//定义代号
MSG msg;//定义MSG结构变量
WNDCLASS wndclass;//定义窗口类变量
// 3 根据窗口类结构填写各条款,形成初始化的窗口类
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.lpszMenuName = NULL ;//菜单名
wndclass.lpszClassName = szAppName ;//窗口类名
/*4下面是对填写好的窗口类进行注册,注册失败则输出信息,并返回Windows操作系统。注册成功,则跳过*/
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ; //注册不成功,输出信息,返回操作系统
}
//5下面是注册成功后创建窗口, 根据窗口类建立窗口
hwnd = CreateWindow( szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // 16window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
// 6 在屏幕上显示窗口 重画窗口
ShowWindow (hwnd, iCmdShow) ;//显示Windows窗口
UpdateWindow (hwnd) ;//修改Windows窗口
// 7 消息循环
while (GetMessage (&msg,NULL,0,0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;//带MSG的wpara参数返回操作系统
}
//窗口函数
inline 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, Windows 98!"), -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) ;
}


编译后出现了这样的错误:
1>------ 已启动生成: 项目: hello1, 配置: Debug Win32 ------
1>正在编译...
1>hello1.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(2560) : warning C4008: “WinMain”: 忽略了“inline”属性
1>正在链接...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
1>D:\Study\c++练习\hello1\Debug\hello1.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://d:\Study\c++练习\hello1\hello1\Debug\BuildLog.htm”
1>hello1 - 2 个错误,1 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhl_2010 2010-05-01
  • 打赏
  • 举报
回复
谢谢fox000002的热心帮助,基本明白了
发霉饼干 2010-05-01
  • 打赏
  • 举报
回复
呵呵,我现在也在看windows程序语言设计,
我QQ657377884。
加我QQ一起学习啊,还可以交流下!呵呵
fox000002 2010-05-01
  • 打赏
  • 举报
回复
控制台程序默认入口 main

窗口程序默认入口 WinMain
lhl_2010 2010-05-01
  • 打赏
  • 举报
回复
我刚才是用的win32控制台建的项目,就出现了上述错误,又用win32项目建了工程之后,奇迹般的可以运行了,好奇怪啊,请问win32控制台,和win32项目有什么区别啊?
flyyyri 2010-05-01
  • 打赏
  • 举报
回复
lai ding
fox000002 2010-05-01
  • 打赏
  • 举报
回复
inline 不要乱用,这里不需要 inline

project 类型要分清楚,这里需要用 Win32 Application

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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