新手windows编程,求教

lhl_2010 lhl_2010 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我是新手,自学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 个 ==========
...全文

相关推荐

Windows编程新手教程

遵循这份说明,新手可以更有效地学习和掌握Windows编程的基础。在学习过程中,新手应注意以下几点:1.

猛男真棒

Windows编程新手入门:坦克大战游戏实战

htmltable {th, td {th {pre {简介:《Windows版坦克大战》是编程新手通过纯Windows编程实现的项目,不使用MFC库。这个过程不仅展示了编程热情,也体现了学习与实践的过程。该项目涉及Windows API的使用,包括游戏逻辑、用户界面、图形渲染、声音效果、文件操作和多线程等关键部分。通过这个项目,初学者可以深入理解Windows编程基础,并提升游戏开发技能。

CodeMystic

Windows编程基础入门:新手快速学习指南

事件驱动编程是一种软件设计范式,其核心思想是程序的流程控制不是由程序代码按顺序执行来决定,而是由事件来决定。事件可以由用户操作(如鼠标点击、按键等)、系统消息或其他程序动作触发。这种模型广泛应用于Windows编程中,是构建响应式用户界面的基石。在事件驱动模型中,程序在没有事件发生时通常处于等待状态,此时CPU资源得到释放,可以用于执行其他程序或进入低功耗模式。当事件发生时,系统会触发相应的事件处理程序,执行预设的事件响应代码。

AAAsuan

Windows编程新手乐园 CHM

本文档为Windows编程初学者提供学习资源,主要内容包含编程入门知识与开发实践指导。项目中附带了相关工具使用说明、文件解压方法及推荐软件,帮助开发者顺利获取和使用CHM格式教程。适用于希望掌握Win

andy796746

游戏开发新手入门之WINDOWS编程.pdf

【游戏开发新手入门之Windows编程】这篇文档是针对初学者介绍Windows编程基础知识的教程,适合有一定C语言基础的读者。

资料大全
评论 6
收藏 已收藏
分享
返回顶部
lhl_2010
C语言 70,039 成员 243,237 内容