欢迎来到天天文库
浏览记录
ID:31708165
大小:55.89 KB
页数:3页
时间:2019-01-17
《windows程序设计方法的理解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、对Windows程序设计方法的理解学号:09999035姓名:周凡专业:计算机科学与技术09级5班时间:6月28日本学期我们学习了Windows程序设计这门课,更确切的说,是基于MFC的Windows程序设计。我们在visualC++环境下对其进行创建和编译,经过一学期的学习,我对Windows程序设计方法有了进一步的理解,我可以在这里对其简要的概括一下。给Windows应用程序编程需要API函数,它是一些预先定义的函数,冃的是提供应用程序与开发人员基于某软件或硕件的以访问一组例程的能力,而又无需访问源码,或理
2、解内部工作机制的细节。而MFC呢,对90%以上的API函数进行了面向对象化包装,完全体现了对象化程序设计的特点。因此,我们必须了解Windows程序设计的机理。以传统的C/SDK撰写Windows程序,最大的好处是可以清楚看见整个程序的来龙去脉和消息动向,然而这些重要的动向在MFC应用程序中却隐晦不明,因为它们被ApplicationFramework包起来了。老师在上课时引用了消息这个词进行讲解,事件的程序描述即消息,程序屮的消息描述类似口常工作屮的事件口志,从时间、地点、人物、事件、事由等方面描述当日发生的
3、事件;从另一个角度讲,消息是驱动窗口对象动作的指令。可以这样理解,我们主要是从基于操作系统资源的角度运用语言系统的资源进行Windows程序设计。这样它的脉络就格外清晰了,即一个Windows程序原本该有的程序进入点、视窗类别注册、窗口产生、消息循环、窗口函数在一个MFC程序屮是同样具备的!Windows应用程序是靠消息来驱动的,消息是一个描述事件的结构。因此在Windows应用程序的主函数中,首先要注册窗口类,然后创建并显示窗口。创建窗口后程序就进入消息循环,在消息循环中,程序不断地获得消息并将消息派送给对应
4、的窗口函数进行处理。建立窗口类遵循如下的过程:设计窗口类・>注册窗口类〉生成窗口〉显示窗口〉更新窗口〉消息循环亠消息路rti到窗口过程函数处理。AfxWinMain函数体在WINMAIN.CPP文件中,有这样儿行:CWinThread*pThread=AfxGetThread();CWinApp*pApp=AfxGetApp();pThread->lnitlnstance();其实这里得到的这两个指针都是指向全局的对象theApp的,接下来有函数调用pThread->lnitlnstance(),根据多态性,会
5、调用CXXXApp类中的lnitlnstance()函数。该函数很重要,在对该函数的调用中就会完成:设计窗口类・>注册窗口类・>生成窗口・>显示窗口・>更新窗口。接下来,该函数中会继续调用pThread->Run(),这就完成了:消息循环・>消息路由到窗口过程函数处理,MFC程序设计的骨架仅此而已,有几个函数我不得不提。进入CWinApp::OnFileNew(),调用m_pDocManager->OnFileNew();这个函数很特殊,它木身是个消息响应函数,当我们点击ID为ID_FILE_NEW的菜单时,会
6、产生一个命令消息,由于命令消息可以被CCmdTarget类及箕派生类来捕获,而CWinApp是从CCmdTarget派生岀来的,因此可以捕获这个消息。当应用程序创建完成并成功显示后,当我们点击文件菜单下的新建菜单项时,就会首先进入这个函数,然后再依次执行下去,最后就会执行到pDocument->OnNewDocument()中,往往我们会对这个函数不解,不知道它为什么会响应IDFILENEW的命令消息,至此真相大片了。进入CDocManager::OnFileNew(),CDocManager类有一个成员变量是
7、CPtrListm_templateList;该变量保存了一个文档模版链表指针,在CDocManager::OnFileNew()函数中会调用CDocTemplate*pTemplate=(CDocTemplate*)m_templateList.GetHead();得到链表屮的头,也就是第一个文档模版,后面就会用得到的这个指针去调用pTemplate->OpenDocumentFile(NULL);在最后阶段,我们还学习了动态链接库的相关知识。程序编制一般需经编辑、编译、连接、加载和运行几个步骤。在我们的应用
8、中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在连接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。为了克服这个缺点可以采用动态连接库。这个时候连接器仅仅是在可执行文件中打上标志,说明需要使用哪些动态连接库;当运行程序时,加载器根据这些标志把所需的
此文档下载收益归作者所有