清华大学论坛

 找回密码
 注册(开放注册)
搜索
查看: 2362|回复: 4
打印 上一主题 下一主题

[软件] win32学习初级二

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-11 18:45:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天讲软件流程。呵呵 似乎有点慌点大家了
我讲的软件流程不是开发流程请注意
一个软件,表面上看是个 XX.exe文件。双击他运行后,就会出现业务画面。
上面有按钮(buton),编辑框(textbox)等,操作任何对象多有不同的响应,这些如何实现?
下面我得说说事件驱动。什么是事件驱动?
举个简单的例子。我们摁下键盘,系统就会产生一个键盘响应事件。单击鼠标健也会产生响应事件,这么说还是有点模糊,(抱歉个人文笔能力有限,不知道该如何解释了),说白了吧,整个软件就是个事件驱动组成的。
举个简单的例子,我们单击一个按钮,软件怎么知道用户做了什么。首先操作系统接收到鼠标单击事件的消息,把他放在消息队列中,然后系统从消息队列中取出消息,对他进行过滤,过滤操作是很有必要的,因为有些操作时用户不想要的,或者是系统未定义的事件消息,不把他过滤掉,系统将无法处理,这是就会出现系统bug,那么系统怎么知道我们是对那个窗体或软件发出的事件消息呢,这是系统会把事件消息发给,当前活动窗体以及具有活动线程(一般是后台线程),再由这些窗体或软件自己去过滤这些消息,如果是自己需要的就做出响应。这里我们可以理解 当前活动窗口,只是活动线程有点模糊。另外在说明点,不是所有活动线程(后台运行,以下不作解释)多能捕作事件响应,我们只是在里面做自己想要得事件响应过滤。打个比方吧,我们常用的金山词霸,把他隐藏后,为什么我们摁下某些键后能打开画面呢?这就是事件驱动的原因。
由于个人表达能力有限,上面的东东,只能这么讲了,不懂没关系,以后我们用例子来说事,上面只是让你们有个概念上的认识。
下面来讲win32
首先区分以下asc和unicode,当初我学习是对这两个概念,有点转牛角尖,将以大家别把太多时间放在这上面,他们本质上是一样的。简单的说。asc只能符合美国的需求,但是不符合别的国家,尤其是亚洲国家的要求。怎么说呢。asc是8位编码方式,而unicode 是16位编码方式,据说unicode能表达所有的字符,比如汉字,鲜文,还有变异的汉子---日文(据说是日本文的祖先太笨,以至于没学好汉文。)等。对这这两个概念大家只要知道这些就够了,没必要再去上网查。然后来这里和我较真。
然后将将一些概念,
句柄:句柄是什么东西?其实他的概念和int,long,char一样也是关键字,不过不是c/c++的关键字阿,如hwnd,hanlde.uint等这些关键字有什么用,它们之间有关联么。这些概念先不讲。准备以在代码中给大家讲,个人感觉这样形象点。
下面就是个简单的win32 函数
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
        // TODO: Place code here.

        return 0;
}
在有些书里面 把 int APIENTRY 定义为WINAPI或其他的什么的,其实多一样,无非是一些宏
上面就是个WIN32主函数,相当于我们以前常见的MAIN函数
我们在这个函数里要做的就是窗体的注册与显示,以及其他空间的绘制等。
然后就是事件消息的获得,但是不在这里处理消息。我们把消息发给专门的消息处理函数,上面没有显示,今天不讲这些。

我先将如何去看这些所谓的关键字,英文好的朋友注意了。
HINSTANCE  H------INSTANCE  :H handle的缩写,INSTANCE:中文意思就是实例,白话就是实际的东西。有什么用,在以后的代码我们慢慢去发现吧。
LPSTR  L----P----STR:L Long, P  Point, STR string(字符串)   
没价汉字注视的地方应该能看懂吧----------
然后将将参数意义,英文好的朋友注意。
第一个参数有用,怎么用以后将。
第二个参数没用,给他一个NULL值就可以
第三个参数有用,怎么用看看字面意思
第四个同上
还有上面的函数名WinMain 建议大家不要自做聪明去修改他。一直以来人们多这么用它。
好了 感觉写的挺多,不知道你们感觉怎么样,呵呵
明天有时间的话,给你们写一个能运行的简单画面程序的文章

评分

1

查看全部评分

2#
发表于 2006-11-12 09:38:52 | 只看该作者
问下,那些MFC的函数你是怎么都记会的,用MSDN吗
3#
 楼主| 发表于 2006-11-12 13:29:24 | 只看该作者
呵呵没有人会去记那些函数!经常用就记住了,而且函数命名和他 的用途有关联的,比方说,IsNumeric,GetDlgItem,SetDlgItemText,等。
        我想要是程序员要用自己的脑子来记函数的话,你就是学个vb光是函数就得记上半年。
       交给你一个方法。比方说我现在是用c++作开发,我想获得窗口句柄。怎么办,很简单,在Msdn里面输入Get回车后就会出现很多取得属性的方法。然后你在慢慢刨。如果是经验者,很快就会查到自己需要的函数。抛弃c++不说,现在其他语言之间有很多的共性。什么类,属性,方法多时一样的,没有什么本质区别。比方说在vb里我们用caption来记录文本,在vb.net里面已经把caption 给抛弃,我想不至于傻到不认识text的地步吧,更不至于不理解text是什么意思的地步吧
学习mfc先学类库,每个类库是怎么用,他有哪些事件驱动,然后就是用程序实现他。
4#
发表于 2006-11-13 18:20:58 | 只看该作者
那还不是得记那些类,唉,只有边学边记了
5#
发表于 2006-11-13 20:25:43 | 只看该作者

狂顶

狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶狂顶
您需要登录后才可以回帖 登录 | 注册(开放注册)

本版积分规则

手机访问本页请
扫描左边二维码
         本网站声明
本网站所有内容为网友上传,若存在版权问题或是相关责任请联系站长!
站长联系QQ:7123767   myubbs.com
         站长微信:7123767
请扫描右边二维码
www.myubbs.com

小黑屋|手机版|Archiver|清华大学论坛 ( 琼ICP备10001196号-2 )

GMT+8, 2024-4-25 13:19 , Processed in 0.072689 second(s), 18 queries .

Powered by 高考信息网 X3.3

© 2001-2013 大学排名

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