MFC心得

时间:2024.4.20

MFC学习心得

时光如梭,不知不觉短学期已经结束一个月左右了。对于MFC,这种c++的高级应用,从陌生到熟悉,从茫然到大致了解,从不屑一顾到很感兴趣,在编写飞行棋这个游戏的过程中感触良多,也收获了许多。

MFC跟以前的控制台编程有比较大的差异,实现了部分可视化编程。对于其中复杂的类和函数,刚开始的时候感到相当的恐慌。虽然在暑假的时候有看过一些书,但到真正做起来却仍然觉得很吃力。第一次上MFC的课,老师一下子讲了很多东西,主要是控件,对于如此繁复的知识感觉一片茫然。整个理论课上了四节,虽然老师也讲了一些东西,但是对于我们要做的系统却是远远不够的。所以,很多东西都需要我们自学,到图书馆借书,到网上查找资料,问同学,问老师……我们使用各种方法获取知识。

必须学会自学,这是短学期的编程课带给我的一大感触。虽然我们需要做的只是一个小型的游戏,但对于初次接触窗口编程的我们难度依然是非常大了。但是,我们克服了,通过我们的团结协作。

要学会团结协作是我另一大感触。小组中各个组员的通力合作是编程工作能够顺利进行的一大关键,我们进行了明确的分工,却又能互相合作,互相参考,互相帮助。只有这样,才会有最后的飞行棋游戏新鲜出炉。

在编程过程中,我主要负责的部分是图形设计和界面美化部分。这部分的特点是:既与大一所学的控制台编程紧密联系,又必须要和现在所学的窗口程序编程相衔接。代码基本上靠逐行输入,考验的是自己的逻辑思维能力和严谨态度。其实,这部分的代码并不是特别多,所以编写代码的工作也并不是很难的。 最磨练人的耐性的是将写好的代码进行调试。由于程序长度相对于原来的编程根本不属于同一个数量级,所以调试理所当然地变得痛苦起来。并且,这些代码基本上在编译时都能够一次通过,但在实际运行时却老是出错,检查算法和语法又不得要领。这个时候,就不得不耐着性子,用调试工具逐行调试了。学会了一些调试技巧,这不得不说是编程过程中我的一大收获。

很久以前,我认为程序就是在头脑中思考一下就立即OK,而且程序先写出来再说, 然后再改就是,人的认识总是慢慢前进的!经过了短学期的编码和试验,彻底打破了以前的一些思维,其实程序只是人的思维的体现而已,因而重要的是思想,所以在构架整体框架的时候,先写一些程序验证是很必要的,而在程序开发的过程中,其如果对工程不是很了解的阶段,也只能算是在为整体框架做必要的验证,所以一般的工程的周期长于我们想象的那样!

尽管MFC这门课程已经结束了,但是我还会继续学习下去,希望自己将来能够对编程有更加深入的了解。

61010116

李博文


第二篇:MFC心得之笔记


MFC编程学习心得 计科0702 彭志勋 收藏 去年自己参加了齐鲁软件大赛,刚开始学VC时虽然也曾化一些时间来看,但总觉得收获不大,经过一段时间的程序设计实践,到大赛结束时,对VC也有了一定的认识!《深入浅出MFC》是本人一直想深读的一本书,寒假自己的特地好好看看了,现在回过头来看这些东西,觉得有了不少收获,或许这正是我喜欢这本书的原因所在,越读越有味道,越读越觉得书中的东西能够弥补自己的缺憾,这样的才算是真正的得到了阅读的乐趣吧。下面摘抄一些原文,并总结了一些学习心得,权当作一点小小的学习收获吧,也希望在写作和阅读的过程中获得更多的理解和体会。我是刚从vc的sdk编程过渡到这个MFC编程当中的,有些不适应,出了错误改起来很费力,打击了我不小的积极性,于是我苦思良久,看了看一下MFC的CWnd类的函数表,关注到了这个函数--WindowProc,这个函数是cwnd类的一个虚函数,功能就是处理窗口的消息的,跟sdk编程中的窗口消息函数是一回事,写法大同小异,用这个方法写的程序,开发效率要快很多呢(对于MFC的初学者),下面我来介绍一下吧。我的开发环境是Microsoft Visual C++ 6.0;选择WIN32 Application工程建一个空的工程,然后加一个.cpp文件,关键的一部是alt—f7打开settings选项,在general选项中的MICROSOFT foundation classes选项中选择use MFC in a static library,这样就可以在这个工程中使用MFC基础类库编程了,这样可以大大的提高编程的效率,减小了出错的几率。大家都知道MFC工程中有界面的程序肯定有两个类,一个是CWND类,另一个就是应用程序类CWINAPP类,所以今天讲那这两个类写程序例子(很基础的,但是很关键).定义一个类,是CWINAPP类的派生类,写法是这样的大家看代码吧。大家可以把下面的类定义写在一个头文件里,留着备用。class CMyApp::public CWinApp{ public:virtual BOOL InitInstance(); //这个类中就这一个函数,他的作用就是创建一个CWnd 类的一个,大家笼统的就这么理解吧,关键还是看代码去理解吧。};下面在定义个CWND类的派生类:class CMyWnd::public CWnd{public:CMyWnd(); //这个函数是构造函数,一些东西要在这里初始化呢virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam ); //今天的主角就是这个函数了}在添加一个.cpp文件吧;下面就是这些类函数的实现代码了,在.cpp文件中写的现看看CWyApp类中的InitInstance函数吧;最先定义一个CMyApp类的对象:CMyApp theApp;BOOL CMyApp::InitInstance(){m_pMainWnd=new CMyWnd;::ShowW

indow(*m_pMainWnd,this->m_nCmdShow);::UpdateWindow(*m_pMainWnd);return TRUE; //这个函数就这样完成了,三行代码,很简单,主要是显示窗口,更新窗口重头戏在后面呢!}CMyWnd::CMyWnd(){LPCTSTR lpszClassName=AfxRegisterWndClass(CS_HREDRAW |CS_VREDRAW,::LoadCursor(NULL,IDC_ARROW), //注册窗口(HBRUSH)(COLOR_3DFACE+1)); //注册窗口CreateEx(WS_EX_CLIENTEDGE,lpszClassName,"新的开始",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0); //创建窗口}关键的代码就是下面的这段,可以是说一个窗口的消息函数,所有的消息都要在这个函数中处理,和SDK编程中的消息写法一样,不用象在MFC中那样添加消息映射了,理解起来很方便,很直观。 LRESULT CMyWnd::WindowProc(UINT message,WPARAM wParam,LPARAM lparam)// 这个函数相当于WinMain函数中的窗口函数{HDC hdc;PAINTSTRUCT ps;switch (message){case WM_CREATE:{::SetWindowText(m_hWnd,"hello First WND");::CreateWindowEx(0,"button","测试",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,50,50,110,30,m_hWnd,(HMENU)IDB_BUTTON,AfxGetApp()->m_hInstance,0);break;}case WM_COMMAND: // 这个消息是用来接收控件发送来的消息的,{switch (LOWORD(wParam)){case IDB_BUTTON: //我们的按钮控件的ID{//::SendMessage(m_hWnd,WM_CLOSE,0,0); //测试只用HWND findwnd=::FindWindow(NULL,"你要找的窗口的名字"); //返回你要找的窗口的窗口句柄::SetWindowText(findwnd,"text"); //设置你要找的窗口的名字break;}}break;}case WM_NCDESTROY: {::PostQuitMessage(0);//delete this; //不注释会出错的break;}case WM_PAINT: //窗口重画是调用这个函数{hdc=::BeginPaint(m_hWnd,&ps);::TextOut(hdc,50,50,"hello First WND",strlen("hello First WND"));break;}case WM_CLOSE: //窗口关闭时调用这个消息{int confirm;confirm=::MessageBox(NULL,"确定关闭么"," ",MB_YESNO|MB_ICONQUESTION);break;}}return Default(); //交给系统处理} //CWND类的WindowProc函数给重载了,然后就像在SDK编程中窗口函数中写法是一样的本文来自CSDN博客,转载请标明出处:/IMedia_3D/archive/2010/03/09/5359929.aspx

更多相关推荐:
cf高手的一点心得(网上整理)

1单按方向键开枪蹲下不按任何键按住3连发4连发必秒次次有弹道多余的按键只会让你打不死人开枪多按键类型的乱动会导致不是没发子弹都会打人掉血的还要等待缓枪时间CF比的就是快快01快就是谁先死的问题所以你一定要制止你...

cf综合作战详解~技巧+心得+心态=王道

打CF的作战技巧320xx年06月11日143953加入收藏文章投稿截图上传发表评论作者少扯没用第一种你把蹲键设置成滚轮向前或者向后我习惯向后走路的时候滚轮向后滚这时候人物会弹起一下跳跃界称为小跳在小跳跳到顶点...

Cfqrkrq手机销售员的心得

懒惰是很奇怪的东西它使你以为那是安逸是休息是福气但实际上它所给你的是无聊是倦怠是消沉它剥夺你对前途的希望割断你和别人之间的友情使你心胸日渐狭窄对人生也越来越怀疑古语云知己知彼才能百战不殆促销员在面对形形色色的消...

cf狙击技巧与心得

本人cf中校等级没有刷过下面我来说下游戏里的技巧高手勿喷狙击枪的玩法要学会闪狙甩狙蹲点狙跳狙前三者用的多一般新手都喜欢蹲狙和跳狙其实这都是很容易被对方打到其实如果你所站的地方有掩体最好的方法就是闪狙所谓闪狙就是...

cf鬼跳心得

一最实用的鬼跳3代3代也叫灵冰跳1按住ctrlshift键一直按住不松开2在按住ctrlshift键的同时按住空格跳键和方向键两键同时按下同时松开3不断重复操作就是灵冰跳了注意1ctrlshift键一直按住不松...

4年cf玩家AK教程五快速进阶的练枪方法

4年CFerAK教程之五快速进阶的练枪方法何都是练出来的并不是你看看攻略看看视频技术一下子就能提高下面我就告诉大家怎样练枪才能快速进阶期间需要联系到我的前四个教程请在我的个人信息里找首先要说明的是不需要看视频文...

《穿越火线》十大练枪技巧 Microsoft Word 文档

穿越火线十大练枪技巧穿越火线十大练枪技巧教你提高对线意识十大技巧NO1练枪模式的选择既然是练习枪法效率当然是第一团体竞技是练枪效率最高的模式了要知道团体竞技里你一分钟能开枪100次爆破模式里你只能开枪50次这样...

CF狙击心得

CF狙击心得初级狙击手必须的身法和枪法想玩好狙击无非有两大点一是身法二是枪法前者要比后者重要因为只有你不死才可以杀死别人宁可让别人追着你打也别端着狙盲目的送死除了这两点以外还有很多因素别闲我罗嗦咱就从最初级说起...

狙击心得各个方面的详解!

火线狙击心得各个方面的详解20xx08171100导读关于狙击与其他武器的切换首先如果你是CS狙击高手建议你先熟悉下CF的狙击特色我想100的人都会说CF的狙击与CS的狙击在使用上是不一样的关于狙击与其他武器的...

cf狙击技巧

狙击有几种打法呢现在就简单的说一下吧和CS一样CF里的狙击步枪同样可以哦分别是甩狙跟狙闪狙跳站狙跳蹲狙盲狙空心狙CF没有有很多时候狙击手们都是防守一个区域或封锁某个区域所以呢瞄点就不同了在FPS的游戏里的只要对...

cf狙击要点

牛比吧盲狙还得了还有cf闪狙的小编我玩CF之前是玩CS的已经好几年了都没练成过CF中有着一大批对于狙击痴迷的玩家虽然说狙击不想其他枪械那样有着黄金枪等诸多种类但是即使是普通的狙击也经常会在高玩的手中被玩的出神入...

cf狙击有几种打法呢

狙击有几种打法呢现在就简单的说一下吧和CS一样CF里的狙击步枪同样可以哦分别是甩狙跟狙闪狙跳站狙跳蹲狙盲狙空心狙CF没有有很多时候狙击手们都是防守一个区域或封锁某个区域所以呢瞄点就不同了在FPS的游戏里的只要对...

cf心得(3篇)