如何用MFC实现绘图中的ctrl-z响应?

如何用MFC实现绘图中的ctrl-z响应?,第1张

解决此问题有两个问题需要观注:

1、如何捕捉CTRL+Z消息,两种途径,一是定义加速,在资源管理器中定义 快捷键,并与撤消菜单绑定;二是重载 PreTranslateMessage,检查用户是否按下的CTRL+Z,并执行相关 *** 作

2. 如何完成撤消 *** 作。

根据程序的功能不同,简单点可以定义一个结构或类 来存储用户 *** 作及 *** 作对象的原始状态,如增加一个对象,删除一个对象,移动对象等,并将 *** 作的按FILO顺序存储。当检测到CTRL+Z事件时,从用户 *** 作栈中取出最后打 *** 作,并执行相关的撤消 *** 作即可。具体实现与程序功能相关,在此不再多说。

做到上面两点,重作,撤消的实现就没什么问题了

那是因为你的窗口在变大和变小过程中,窗体重新绘制了,所以原来的东西没有了。

建议你了解下:MFC下如何使用画刷,找个实例程序来看看就清楚了。

追问:

我做画图软件。书上是vc6.0版本 我用vc2005可是出现问题了!书上原例子

回答:

那肯定有问题的,新版本对老版本的VC有不支持的地方,特别在MFC这块,建议你在VC6.0调试好程序,再用VC2005进行调试。

以下过程适用于VC6.0版本。

添加菜单:

第一步,建立基于对话框的工程。

第二步,添加menu资源,添加菜单项,设其ID为IDR_MENUADD,添加所需要的菜单项。

第三步,在menu资源界面按Ctrl+W进入ClassWizard,此时会d出一个对话框,选中“select an exitingclass”,然后在select class对话框中选中主对话框类。然后点OK。

第四步,打开主对话框的属性,general下有一menu选项,选中刚才添加的mune资源的ID.如下:

最后,程序运行如下:

设定快捷键:

第一步,添加资源Accleerator,如下,点击New

第二步,在ResourceView下打开Accleerator ,打开IDR_ACCELERATOR1

然后双击两虚线之间部分,会d出一个设置的对话框,在ID栏选中要设置的菜单ID,在Key栏,设置你想要的快捷键,如下:

第三步,在菜单项添加快捷键说明


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11772085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存