永发信息网

关于MFC问题

答案:1  悬赏:20  手机版
解决时间 2021-01-20 11:31
关于MFC问题
最佳答案
你注册的窗口类是"我爱老婆", 后面创建窗口却用的是"爱你一万年",
"爱你一万年"你没注册过肯定不行, 一般情况下系统或其他也都不会注册过这个类名
都改成一样的就行追问首先感谢您的热心。在好几个地方提问,只有您回答了我。非常感谢!
我现在又两个问题想在趁着这个机会咨询您一下:
1.为什么这种工程必须建立非控制台程序?
2.按照您的指点确实可以看到运行程序了,但是没看到我写的“我爱老婆”这个窗口类名。为什么?

有点烦!请原谅。本人太笨,这也许是我的成长过程。呵呵
谢谢您……追答控制台就是命令行窗口那个,入口是main, 就算你建立自己的窗口,也会出现多余命令窗口
窗口类名不是窗口标题, 你的标题添的是SDK Application,换这个就行
因为创建窗口很多时候创建的都差不多,所以用窗口类把共同的特性记录一起, 然后创建窗口时可以直接用追问WndProc这个函数名前面有下面两个标示符。我右键看他们的定义分别为:
#define CALLBACK __stdcall;#define WINAPI __stdcall这应该是一个宏定义呀。我知道_stdcall是明明规则。如果按照define的语法说明,那这两句话的意思是用着两个标示符代替_stdcall,但是在程序中很明显不应该这样理解。请问:上面两句话是什么意思?追答没错阿, 替换成__stdcall
stdcall是调用方式, 告诉编译器参数的传递方式,调用方还是被调函数清理堆栈等等
如果2边对不上,很容易出问题
#define 就是预处理命令, 进行文本替换而已, 把callback和winapi替换成stdcall追问但是我在程序中没见到stdcall。所以我就纳闷对这个宏进行定义有什么作用?
还有就是为什么在wndproc函数前与返回值result之间必须加上callback和winapi?我查了msnd,但是还是不是很理解。追答当然看不到,编译器在预处理时会替换的
int WINAPI WinMain ......
替换后变成
int __stdcall WinMain ......

__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事:
1.参数传递顺序
2.调用堆栈由谁(调用函数或被调用函数)清理
常见的函数调用约定:stdcall cdecl fastcall thiscall naked call
__stdcall表示
1.参数从右向左压入堆栈
2.函数被调用者修改堆栈
3.函数名(在编译器这个层次)自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸
在win32应用程序里,宏APIENTRY,WINAPI,都表示_stdcall,非常常见。

编译器默认是cdecl, windows又按stdcall,两边不一样,很容易出问题,所以加个关键字修改调用约定,
用宏替换, 可读性比较好, CALLBACK是回调函数, WINAPI是windows的api, APIENTRY是入口
也就是让程序员看的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
牛毛广学名薇菜有什么用呢
在○里填“×”或“÷”,在□里填数.156÷1
银泰逸翠园怎么样?好不好?值不值得买?
两万的百分之一是多少
选调生会永远呆在基层吗
苇原千五百秋之瑞穂国,是吾子孙可王之地也。
下表是李明在做“研究液体的压强”实验时得到
求证:1/2^3+1/3^3+1/4^3+……+1/(n+1)^3<1/4
日本幸福银行倒闭说明什么问题
上海泰熊磁业这个品牌的磁力架到底好不好用啊
汽油正三轮摩托车125发动机 那种牌子最好
汽车记公里软件
翠绿色油漆与艳绿色油漆的颜色一样吗
国产有哪些品牌机床?国产有五轴联动的加工中
选文第一段中把画竹和画马作比较,这样写有什
推荐资讯
thepromise是一首什么样的钢琴曲?很动听,喜欢
无棣展旭汽车销售服务有限公司地址在哪,我要
怎样阻止爸爸妈妈干房事
如何卸载今日热线
78年农历7月8男孩
我公司让我送了AISI 316Ti的不锈钢做检验(化
做菜的时候能放一点酵母粉吗
用颇、郑重、欺凌、玷污造句
我在湖北利川加工塑料颗粒,请问下周边有收塑
大虾炸好了怎样做好吃
怎么网上看五星体育F1直播
村网通是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?