鱼C论坛

 找回密码
 立即注册
查看: 6349|回复: 3

初学Windows程序设计的一些困惑

[复制链接]
发表于 2014-10-6 10:32:55 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


先看了一点win32汇编(罗云斌的琢石成器),感觉也算是懂了,可是转过头看Windows程序第五版这本经典的书,里面的一些东西接受不了。
首先就是主函数的那四个参数了,我是这样理解的不知道对不对,"由编译器对这四个参数进行赋值,我这样理解的话,第一个和第二个参数我就可以自圆其说了,最后一个参数iCmdShow在ShowWindow的第二个参数直接就这样写我也勉强可以理解(这样的话编译器对iCmdShow的初始化应该就是默认是正常显示了吧)"可是主函数的第三个参数szCmdLine我还是不知道它具体是怎么在哪用的,琢石成器这本书里也没有提到过啊(希望高手可以详细讲一下,书上讲的我也看了好多遍了)。

另外还有一个是消息机制的问题,在Windows程序设计第五版这本书里,对GetMessage的讲解是该调用将一个指向名称为msg的MSG结构变量的指针传给Windows。Windows用从消息队列中得到的下一条消息来填充消息结构的各个字段。
这样我理解的话是GetMessage这个函数在一次循环中做了两件事,向中转站一样,这样消息并没有经过TranslateMessage的翻译啊,(难道是上面的一句传给Windows不是让Windows调用回调函数)



在琢石成器这本书里我是这样理解的,Windows调用回调函数所用的消息应该是经过TranslateMessage翻译之后的消息

感觉这两本书对消息这一块讲解的不一样,而我更倾向于我理解的琢石成器里的讲解

不知道我的理解出了多少问题,求高手解答,我现在等级太低没办法悬赏互助,不是我小气哈
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-10-6 11:55:33 | 显示全部楼层
本帖最后由 漩涡鸣人 于 2014-10-6 12:16 编辑

一:szCmdLine就是命令行参数哦,用cmd启动程序的时候,参数就会放在这里面,这是为了兼容命令行启动程序
二:GetMessage只是取得消息队列的源消息而已(有可能已经经过翻译也有可能没有),可以确定消息循环有没有终止。
TranslateMessage的功能是把虚拟键消息进行转换(如果消息未被转换过,转换之后重新发回被接收;如果已被转换过,就返回非零值,不进行转换),一个未被转换的消息一般会经过两次TranslateMessage,该函数不修改参数中的结构体变量
接着才是对消息的分发,也就是发给窗口过程回调函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-30 22:21:11 | 显示全部楼层
{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-11-1 05:37:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-13 23:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表