刚学C++,按照书上的打了一串代码。但是总是有错误,求看一下为什么出错。

老谈酸菜牛肉面 2015-01-10 02:36:39
#include<Windows.h>

int WINAPI wWinMain(HINSTANCE hlnstance,HINSTANCE hPrevlnstance,LPWSTR cmdLine ,int nShow)
{
UNREFERENCED_PARAMETER(hPrevlnstance);
UNREFERENCED_PARAMETER(cmdLine);
WNDCLASSEX wndClass={0};
wndClass.cbSize=sizeof(WNDCLASSEX);
wndClass.style=CS_HREDRAW|CS_VREDRAW;
wndClass.lpfnWndProc=WndProc;//就是这儿出错,提示我未定义时标符
wndClass.hInstance=hlnstance;
wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wndClass.lpszClassName=NULL;
wndClass.lpszMenuName="DX11BOOKWindowsClass";

if(!RegisterClass(&wndClass))//"WNDCLASSEX *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容
return -1;
RECT rc={0,0,640,480};
AdjustWindowRect(&rc,WS_OVERLAPPEDWINDOW,false);

HWND hwnd=CreateWindow("DX11BOOKWindowsClass","BlankWin32Window",WS_OVERLAPPEDWINDOW,0,0,rc.right-rc.left,rc.bottom-rc.top,NULL,NULL,hlnstance,NULL);
if(!hwnd)
return-1;
ShowWindow(hwnd,nShow);
return 0;
}


然后第一个错误,我看网上的说把
wndClass.lpfnWndProc=WndProc;改为:wndClass.lpfnWndProc=(WNDPROC)WndProc;PS:还是一样提示有错。
网上的另一种说法:
不改,在上面添加一排LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);PS:就不报错了。
大家能解释一下这是怎么回事吗?

第二的‘&’符号,完全不知道为什么了。也不好百度。
...全文
1069 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatname_6321 2017-05-17
  • 打赏
  • 举报
回复
第一个问题: ....................." WndProc " :窗口过程,是函数,你没有这个函数,所以是未定义的 第二个问题: ......................if (!RegisterClass(&wndClass)) 改为 if (!RegisterClassEx(&wndClass)),,,,,参考(wndclassex百科)
足球中国 2015-01-11
  • 打赏
  • 举报
回复
引用 3 楼 u011280846 的回复:
[quote=引用 1 楼 zanfeng 的回复:] 未声明就使用造成的。
谢谢,知道了是未声明。我说的第二种方法算是声明了嘛?[/quote] WndProc 要是一个函数。 函数使用前要先声明。 就象二楼所说应该把基础的东西打牢了。 C语言是入门也是相当简单的。把C学会了,再学C++。 MFC不是非一定要学的。
  • 打赏
  • 举报
回复
引用 5 楼 u010412702 的回复:
指针和引用的内容,必须搞熟悉,不要心急,贪快。
恩。谢谢,我会去看的。
顫_栗 2015-01-10
  • 打赏
  • 举报
回复
指针和引用的内容,必须搞熟悉,不要心急,贪快。
  • 打赏
  • 举报
回复
引用 2 楼 u010412702 的回复:
我以前也看过类似的书,敲过这种代码,这些东西是比较偏底层的东西了,建议知道大概逻辑就行了,不需要深究,更不需要尝试去调试和运行。 至于第一个为什么出错,因为WndProc没有定义,所以会报错,相当于一个变量,你没有定义就直接使用,当然不行。这其实是一个窗口消息处理函数。 ‘&’符号你不知道什么意思,显然一些c基础你都还没有,直接去深究这些代码就更没意义了。 如果想理解一下,桌面窗口程序的底层运行机理,可以百度MFC了解了解。 建议你花个2天时间学习下c的基础,再慢慢渗透c++面向对象等的一些概念,然后再根据需要学习东西。
哦哦。我先去了解一下MFC C的基础?是指指针和宏什么的嘛?PS:循环这些知道了。
  • 打赏
  • 举报
回复
引用 1 楼 zanfeng 的回复:
未声明就使用造成的。
谢谢,知道了是未声明。我说的第二种方法算是声明了嘛?
顫_栗 2015-01-10
  • 打赏
  • 举报
回复
我以前也看过类似的书,敲过这种代码,这些东西是比较偏底层的东西了,建议知道大概逻辑就行了,不需要深究,更不需要尝试去调试和运行。 至于第一个为什么出错,因为WndProc没有定义,所以会报错,相当于一个变量,你没有定义就直接使用,当然不行。这其实是一个窗口消息处理函数。 ‘&’符号你不知道什么意思,显然一些c基础你都还没有,直接去深究这些代码就更没意义了。 如果想理解一下,桌面窗口程序的底层运行机理,可以百度MFC了解了解。 建议你花个2天时间学习下c的基础,再慢慢渗透c++面向对象等的一些概念,然后再根据需要学习东西。
足球中国 2015-01-10
  • 打赏
  • 举报
回复
未声明就使用造成的。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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