求大神发我个C++做的坦克大战游戏单机版,API,注释详细点的,简单点没关系,只要在vc6上能跑,小弟在这拜谢了。

www,77zii,com,2345lll
友情链接:求大神发我个C++做的坦克大战,API,注释详细点的,简单点没关系,只要在vc6上能跑,小弟在这拜谢了。_百度知道
求大神发我个C++做的坦克大战,API,注释详细点的,简单点没关系,只要在vc6上能跑,小弟在这拜谢了。
QQ邮箱:8 4 1 0 9 1 8 2
您的回答被采纳后将获得:
系统奖励20(财富值+经验值)+难题奖励10(财富值+经验值)+提问者悬赏5(财富值+经验值)
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁成人姐,晓晓影院快播理论片
友情链接:就爱大片网怎么注册,色狼强奸乱佗网
友情链接:只需一步,快速开始
后使用快捷导航没有帐号?
查看: 1143|回复: 36
MFC是怎样封装API函数的
签到天数: 72 天[LV.6]常住居民II我最爱的应用:
请用浅显易懂的方式说下MFC是怎样封装窗口和消息的。多一些注释,附图就更好了。
认真看windows程序设计5,认真看这一本书抵得上其它的10本书。用SDK写界面不难,你觉得难的话,去看MFC肯定觉得更难。只要看明白了,一般的小问题就能自己解决了,至于示例,相信此书上的实例你还有很多没搞明白,不然怎么会觉得SDK写很难呢?
MFC写小程序开发速度不一定比得上SDK,灵活性显然更差。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 869 天[LV.10]以坛为家III
拈花小仙 发表于
想通过学习MFC,做了实例,了解SDK中到底有多少库函数,看他们是怎么应用的,也有助于SDK编程吧?我不懂, ...
认真看windows程序设计5,认真看这一本书抵得上其它的10本书。用SDK写界面不难,你觉得难的话,去看MFC肯定觉得更难。只要看明白了,一般的小问题就能自己解决了,至于示例,相信此书上的实例你还有很多没搞明白,不然怎么会觉得SDK写很难呢?
MFC写小程序开发速度不一定比得上SDK,灵活性显然更差。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 79 天[LV.6]常住居民II
/share/link?shareid=&uk=& &深入浅出mfc
建议看下这本书吧,是讲mfc的经典。
/share/link?shareid=&uk=&&windows程序设计
如果看不懂建议先看windows程序设计。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
窗口的封装
mfc底层有个窗口基类叫CWnd, 前台见到的窗口都是继承与他, 这个类的模型简单点可以如下表示
class CWnd
& & & & BOOL CreateEx(......);& & //具体参数参考windowsapi& &CreateEX
& && &&&void ShowWindows(int sw_cmdLine);& & //具体参考CWnd::ShowWindows
& && &&&void UpdateWindows();& &&&//更新窗口
& & & & HWnd&&m_hW& &//窗口句柄
所以这类更像是一个带有窗口句柄的管理类.&&
特别注意!!! 哪怕内部m_hwnd的窗口销毁了。 该类对象还是存在的.
窗口消息处理
简单的windows消息是如下伪代码表示
while(&msg)
case WM_KEYDOWN:
case WM_CREATE
& & & & ......
但是如果mfc也类似写的话。那么Cwnd类要写一堆的虚函数,来对应每个消息的处理。
这个显然不科学。所以mfc有自己的一套消息机制,
原理: mfc会在启动之后,在进程中建立类名和句柄的映射关系,假如前台在a界面上点击了左键
那么会发送消息体, 里面句柄是a的句柄, 这个时候mfc会根据句柄找到消息a的类, 然后在a.h和a.cpp中
DECLARE_MESSAGE_MAP()段
BEGIN_MESSAGE_MAP(CADlg, CDialogEx)
END_MESSAGE_MAP()
是否有该消息的处理时间,如果有,则按事件处理,否则按默认的处理.
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 15 天[LV.4]偶尔看看III
- -~ 都是大神.我楼上的太猛了....我还么入门呢!~
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 869 天[LV.10]以坛为家III
风のQ 发表于
窗口的封装
mfc底层有个窗口基类叫CWnd, 前台见到的窗口都是继承与他, 这个类的模型简单点可以如下表示
呵呵,对于MFC刚产生时期的电脑来说,速度非常慢,所以将消息处理实现为虚函数会导致处理速度严重下降。但是,现在计算机速度快了,经得起这一点的性能损耗,所以反而显得MFC的做法不合时宜了。
DECLARE_MESSAGE_MAP()段
BEGIN_MESSAGE_MAP(CADlg, CDialogEx)
END_MESSAGE_MAP()
这些宏,是非常招人讨厌的。因为这不是C++语言,利用宏来搞一套自己的语言有意思么?有意思的话还不如不用C++来完成那个这个任务,刚崔换种语言不是更好么?
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
仰望天上的光 发表于
呵呵,对于MFC刚产生时期的电脑来说,速度非常慢,所以将消息处理实现为虚函数会导致处理速度严重下降。但 ...
也许有这些原因在里面, 到那时不得不说,他的这套框架式属于扩展性较好的,假如后期新增了windows消息,他不用改动这套框架,假如是每个消息对应虚函数。则需要新增消息应对函数,这在代码后期维护上还是有点麻烦的。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 869 天[LV.10]以坛为家III
风のQ 发表于
也许有这些原因在里面, 到那时不得不说,他的这套框架式属于扩展性较好的,假如后期新增了windows消息, ...
不用改?不增加windows消息,MFC只要处理任何消息都要改。比如在
BEGIN_MESSAGE_MAP(CADlg, CDialogEx)
END_MESSAGE_MAP()之间写一堆的Onxxx这些就是对程序的修改,只不过是利用宏的特性使得这些修改看起来很小而已。
事实上,MFC废弃C++的虚拟函数表不用,自己在很多类里添加消息转发功能(其实就是添加static 元素取代原来的C++虚函数表),并以几个宏维护这些功能,这本身就像是在自己创建一个新的语言。既然要花如此大的代价来实现这样的功能,只能说明,C++语言不适合MFC的这种框架。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 66 天[LV.6]常住居民II
去看windowsAPI接口,函数,编程实例,其实就是把API封装进类里面
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 66 天[LV.6]常住居民II
把鼠标移到代码上按F12多看看是怎么封装的
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 51 天[LV.5]常住居民I
我有一个分析MFC的源码的教程然后自己实现的教程 你加我发给你
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 72 天[LV.6]常住居民II
本帖最后由 拈花小仙 于
13:13 编辑
杞人 发表于
我有一个分析MFC的源码的教程然后自己实现的教程 你加我发给你
加QQ吗?小金鱼的我看过,看不懂
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 6 天[LV.2]偶尔看看I
windows 程序设计
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
仰望天上的光 发表于
不用改?不增加windows消息,MFC只要处理任何消息都要改。比如在
BEGIN_MESSAGE_MAP(CADlg, CDialogEx)
你这样说也对。只能说我们能看到的问题,微软肯定也能看到,但是到了vs2010还是那套框架。总归是有他的道理的。也许我还认识不到位吧。。。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
没加好友权限。不好意思了。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
你对类和类的三态熟悉程度怎么样?
我觉得mfc已经是对类的三态运用的很经典的例子了。
要熟悉mfc先从学习类和类的三态开始, 在这之后你再去看一些大神的教学讲解视频比较好.
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 72 天[LV.6]常住居民II
风のQ 发表于
你对类和类的三态熟悉程度怎么样?
我觉得mfc已经是对类的三态运用的很经典的例子了。
封装 继承 多态吗?还是不懂怎么封装的
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
拈花小仙 发表于
封装 继承 多态吗?还是不懂怎么封装的
额。所有想到出来的dlg或者view或者啥的都是继承自CWnd的,CWnd只是放了接口供你实现自己的事情而已,
要不你在把问题具体点。。。是指窗口类的内部结构,比如成员变量或函数什么的? 还是一个窗口的初始化过程?。。。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 72 天[LV.6]常住居民II
风のQ 发表于
额。所有想到出来的dlg或者view或者啥的都是继承自CWnd的,CWnd只是放了接口供你实现自己的事情而已,
嗯嗯,想知道内部怎么初始化的,消息怎么映射的,最好把主要代码拿出来,多一些注释
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
签到天数: 50 天[LV.5]常住居民I
拈花小仙 发表于
嗯嗯,想知道内部怎么初始化的,消息怎么映射的,最好把主要代码拿出来,多一些注释
// 类声明, 自建一个窗口类并让这个窗口显示.
class CMyFrame : public CWnd
& & & & DECLARE_DYNAMIC(CMyFrame )
& & & & CMyFrame ();
& & & & virtual ~CMyFrame ();
protected:
& & & & DECLARE_MESSAGE_MAP()
& & & & afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);& &
& && & //此处放一些自己要在窗口上放的元素, 比如button声明的
int CMyFrame ::OnCreate(LPCREATESTRUCT lpCreateStruct)
& & & & //下面是根据继承原理, 构造子类前,先构造父类
& & & & if (CWnd::OnCreate(lpCreateStruct) == -1)
& & & & & & & & return -1;
& & & & //此处是自己创建的窗口的私有元素的初始化
& & & & //TODO
& & & & return 0;
//调用生成代码。在App实例类中进行
CMyFrame * pFrame = new CMyFrame ();& && &&&
// 上句生成自己的窗口对象(严格说是管理类), 此时对象中的m_hwnd句柄为空,但是可以初始化自己的变量
也就是调用类中的Create函数
pFrame-&CreateEx(0,&&
& & & & & & & & _T(&CFRAME&),
& & & & & & & & _T(&Test&),& & & & & & & &
& & & & & & & & WS_POPUPWINDOW | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_THICKFRAME ,
& & & & & & & & 0,0,100,100,NULL,NULL
& & & & & & & & );
//上句开始做初始化过程.CreateEx为子类CWnd拥有, 所以开始调用CWnd的CreateEx函数
//一下代码在Wincore.cpp中。c++目录下自己找找
& & & & BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,LPCTSTR lpszWindowName, DWORD dwStyle,
& & & & & & & & int x, int y, int nWidth, int nHeight,
& & & & & & & & HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam)
& & & & & & & & ASSERT(lpszClassName == NULL || AfxIsValidString(lpszClassName) ||
& & & & & & & & & & & & AfxIsValidAtom(lpszClassName));
& & & & & & & & ENSURE_ARG(lpszWindowName == NULL || AfxIsValidString(lpszWindowName));
& & & & & & & & // allow modification of several common create parameters
& & & & & & & & CREATESTRUCT
& & & & & & & & cs.dwExStyle = dwExS
& & & & & & & & cs.lpszClass = lpszClassN
& & & & & & & & cs.lpszName = lpszWindowN
& & & & & & & & cs.style = dwS
& & & & & & & & cs.x =
& & & & & & & & cs.y =
& & & & & & & & cs.cx = nW
& & & & & & & & cs.cy = nH
& & & & & & & & cs.hwndParent = hWndP
& & & & & & & & cs.hMenu = nIDorHM
& & & & & & & & cs.hInstance = AfxGetInstanceHandle();
& & & & & & & & cs.lpCreateParams = lpP
& & & & & & & & if (!PreCreateWindow(cs))& & //注意这个函数,就是我们可以实现的虚函数,可以干一些创建之前要干的事情,比如自己注册窗口.
& & & & & & & & {
& & & & & & & & & & & & PostNcDestroy();
& & & & & & & & & & & & return FALSE;
& & & & & & & & }
& & & & & & & & AfxHookWindowCreate(this);
& & & & & & & & HWND hWnd = ::AfxCtxCreateWindowEx(cs.dwExStyle, cs.lpszClass,& && && && && && && && &//此处创建窗口.
& & & & & & & & & & & & & & & & cs.lpszName, cs.style, cs.x, cs.y, cs.cx, cs.cy,
& & & & & & & & & & & & & & & & cs.hwndParent, cs.hMenu, cs.hInstance, cs.lpCreateParams);、
& & & & & & & & 。。。略。
& & & & }& & & & & & & &
pFrame-&ShowWindow(SW_SHOW);& &//显示自己的窗口
pFrame-&UpdateWindow();& &//更新自己的窗口.
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
•••(
Powered by}

我要回帖

更多关于 坦克大战 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信