社区
C++ 语言
帖子详情
MFC中的resource.h文件里宏定义有重复怎么办
sunhouju
2015-04-06 09:18:00
...全文
664
3
打赏
收藏
MFC中的resource.h文件里宏定义有重复怎么办
[图片]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xionggch
2015-04-07
打赏
举报
回复
宏只是定义个值而已,重复可能说明这两处地方需要的值是一样的
xiaohuh421
2015-04-07
打赏
举报
回复
可以手动删除, 只要没有错误, 也可不用管. 像1楼说的. 你自己修改了对话框的资源ID. 比如默认创建的时候叫 IDD_DIALOG1, 然后你又重新修改为IDD_DIALOG_LOGIN 这时就会有两个相同数值的宏定义了.
Falleyes
2015-04-06
打赏
举报
回复
又重复说明重复的第一个项被你删除或者重命名为第二个项了。 这个可以不用管,删除没有用的项也没什么影响。
VS2013
MFC
编程基础(19个专题)
VS2013
MFC
编程基础,共有19个专题实例,作为VS2013、VC++和
MFC
开发的基础入门资料,对初学者很有帮助!N和weet45厘序量D以量 #目度 M用啊 Mnua ca+程 WICELL 名啊 位 B日经验 进入应用程序向导,一开始会给出默认的项目配置,点击“下一步”即可
MFC
应用柱序:Deme 欢使用Mc应用程序向导 鞋速 这些是当前啧自设置: 应用程序典型 送卡式多交检界面O) 无数据斥查持 合文植支持 不持复台交档 文档幔属性 可自定义某单栏和工具栏界面 数据支持 YiYuN studie200应用程序外观 节u$φ项目样式阗有资管理器画格、输出格和属性面格 用户畀击功 ·重新启管理器支持新打开文档,应用程序恢复) 亮级功能 在任一画囗
中
单击“完成”,接受当前设置● 生的疯 项目后请该项目的rtt
文件
,了解有兴项目功能和所生的
文件
的 上到『元础 选择“基于对话框”, 可以选择在静态库
中
使用,或者在共享
中
使用。一般选择共 亨使用就行,静态库
中
使用会把所有用到的集成到
文件
中
,最终生成的
文件
一般可 以直接使用,但占用更大空间。
MFc
应用程度肉导Demo 应周程序卖型 成用程岸类 目共 应用程序典型 ◎单个文档巴) 复合文植支持 多个植思 酒管理器) 文档板国性 □选项卡式文档0) 提支 蓝十对话① Orifice Ur 用户卿面功能 □使用对话粗q 视武样式和色①D 亳级功能 无略星的控件@ is当本机/认 生的 $个级文档①) 口启闻体式切c 团究档/视图持 C的使用 在共享L
中
使用c 区安全开发生命周期6〕检置c 在静态库
中
使用cg 资语语言)
中
交傳;
中
国) 选择主框架样式,可以自由选择是否添加最小化框、最大化框。如果觉得没必要“关于″对 话框也可以去掉,对话框标题一般不需要更改
MFC
应用序匀导:Demo 用户畀面功能 粗速 主粗样式 命任碳单/工具栏/能区 应用程序英型 框粗架① @便用经肉单 复合文植持 团使用传始停工具栏收 四量大化框 □使用器样到的工具栏 挡板国性 国量小化 O使用单仁和工具栏 量大化g 团用户定义的工具栏和②) 户卿面功 d系统单① 个性化单行为 级功能 “关于糕更 回初态栏0D 使用功能区 生欣的 口括分面口) 对话标题 于粗式 子量小化 团子最大化粗( 口子最大化② 上步口产燕 高级功能一般默认即可,但如果用不上 控件”可以去掉勾选;如果需要涉及网络 编程就把“ 套接字”选上。不过没选上也不要紧,在程序
中
可以自己添加部分代码 导入套接字。
MFc
应用序向导Dema 高级功齬 粗速 级功能 色格: 口打印和打印Q □资富度器得窜面格② 应用程序典 自动化 合文植支持 □国性傅面临 交档板国性 口导航面格 据库支持 □标任 用户界面功糙 已L售y) 公控否单思 高级其单项显示/蒙活面格吧 幕级功能 团支持亚新理器 最近文列离上的
文件
数① 生邱的 □重新打开以打开的档① 口支应用程岸复0 〈上一步[下-步习□ 最后是自动生成的两个类的头
文件
和源
文件
名称,可以修改基类,但一般不用改,默认完成 就行。至此,一个基于对话框的项目就创建好了。
MFc
应用序导Dmo 生兩的 生成的 应用程序典型 已E+g 合文植支特 文档吸板国性 数支持 卖名① h交件② 用户界面功糙 Damotlg h 级功能 》又件電) 山建 AmalG cpp B温 CDHamlDi aloe 当工1 d经验 jingyan.baidu.com 注意事项 合理的向导设置可以减少后续编程的麻烦 基于对话框编程:项目整体结构 当我们创建好一个项目以后,为了更快速的编程,快速找到需要修改的部分这就得熟悉 开发环境的各个模块的作用,各个模块之间的关系。 工具原料 项目整体结构 创建好一个工程,观察项目界面的布局,上面是菜单栏和工具栏,在设计界面的左 侧可以调出工具箱;右侧是属性栏、类视图、资源视图和资源管理器等;底部是一些显示错 误信息、符号查询结果、项目生成信息的栏目;最下方是状态栏,显示当前开发状态。 应南计断酒 d经验 ingyanbaidu.com 打开解决方案资源管理器,可以看到所有的头
文件
、源
文件
以及资源
文件
都归类排序摆放, 便于快速寻找需要打开的内容。点开头
文件
前面的三角号可以查看类的成员变量和函数。 解决方案资源铛理器 X 搜素解决方客资源管理器(Ctrl+) 丙解央方案"Demo"(1个项目) Demo 头
文件
p画 Demo.h L DemoDlg, h +s CDemoDlg CDemo Dlg(CWnd b e unnamed enum 0005 1 DoData Exchange(CDatal 回 IDD DEMO DIALOG hIc 4. OnInitDialog0 2. OnPaint * OnQueryDraglcon0 4. On Sys Command(UINT, LPAR. p画
Resource
. h stdatx. h D targeteer. h p外部依项 源
文件
Demo, cpp D * DemoDlg cp + stdafxcpp 资源
文件
园 Demo. ico Demo. rc B Demo. rc2 自 ReadMe tBa经验 lingyanbaidu.com 看看资源视图,资源视图包含了应用程序用到的所有资源,包括对话框资源、应用图标、菜 单、字符串、软件信息等等。 资源视图-Demo A图Demo Demo, rc 当 Dialog 国 IDD ABOUT BOX 国 IDD_DEMODIALOG d Icon B IDR MAINFRAME a String Table 回 String Table 向 Version 画 S VERSION INF Baid经驵 jingyan. baiducom 打开版本信息,可以看到自己编写的应用程序的相关信息,比如版本号、公司名称等,自己 觉得需要修改的可以依情况修改。 wwtn lgds kaner 工1 1b aeoutedx 用人系 2贴N人M L01 Ba 经验 jingyan.baidu.com 再看类视图,类视图包含了应用程序用到的所有类,包括自动生成的类以及开发者自己创建 的类。点击类名,在下方会显示该类包含的所有成员变量和函数,不同类型的函数或者变量 都有不同的符号标记。 通过类视图可以快速访问类的头
文件
和源
文件
,双击类名打开头
文件
,点击下方的函数可直 接跳转到对应的函数定义处 类视图 口X ⊙。·年 ≤搜素 pom映射 宏和常量 6全局函数和变量 b t CAboutDIg p CDemoApp 4t CDemoDlg 9 CDemoDlg(CWnd"pArent =NULL) o. Do Data Exchange(CDataExchange'pDX Q@, OnInit Dialog @. On Paint 6. OnQueryDraglcon0 9. OnSys Command(UINT nID, LPARAM IParam a m hIcon Baid经验 jingyanbaidu.com 属性页用来修改和査看对话框
中
控件(包括对话框本身)的各项属性,毎类控件的属性项都 不一样,需要根据情况修改,当然所有的属性都可以以代码形式实现,但能直接修改最好 方便快捷。
MFC
程序员的WTL指南
序言 3 第一章ATL 界面类 4 1.1、对本书的总体介绍 4 1.2、对这一章的简单介绍 5 1.2.1、ATL 背景知识 ATL 和 WTL 的发展历史 5 1.2.2、ATL风格模板 6 1.3、ATL 窗口类 8 1.3.1、定义一个窗口的实现 8 1.3.2、填写消息映射链 9 1.3.3、高级消息映射链和嵌入类 11 1.3.4、ATL程序的结构 13 1.3.5、ATL
中
的对话框 15 第二章WTL 界面基类 18 2.1、WTL 总体印象 18 2.2、开始写WTL程序 18 2.2.1、WTL 对消息映射的增强 20 2.2.2、从WTL的应用程序生成向导能得到什么 24 第三章 工具条与状态条 35 3.1、主窗口的工具条和状态条 35 第四章 对话框与控件 48 第五章 高级对话框用户界面类 67 第六章 包容ActiveX控件 82 第七章 分隔窗口 96 第八章 属性页与向导 112 第九章 GDI类,通用对话框,初始化类 127 9.1、GDI 封装类 127 9.1.1、封装类的通用函数 128 9.2.3、与
MFC
封装类的不同之处 130 9.3、资源装载(
Resource
-Loading)函数 130 9.4、使用通用对话框 133 9.4.1、CFileDialog类 134 9.4.2、CFolderDialog类 137 9.5、其它有用的类和全局函数 138 9.5.1、对结构的封装 138 9.5.2、处理双类型参数的类 138 9.6、其它工具类 139 9.7、全局函数 141 9.8、宏 142 9.9、例子工程 143 第十章 支持拖放操作 147
C++
MFC
实战速成教程(VS2013)
中
让零基础朋友快速掌握
MFC
的开发,进入到C++的Windows编程之殿堂。
MFC
规模庞大,结构复杂,导致很多初学者学习困难。本教程,则排除一切对初步者的干扰,从
MFC
庞大的结构
中
,单刀直入,取出最核心的类,以简明易懂的方式,剖析于学员面前。并通过纯手工方式编写
MFC
的程序,把
MFC
的基础架构,功能,由来,作用一一详细展示。以此为基础,进而把
MFC
的各个类,以及类之间的协作关系融汇贯通。
Visual C++ 编程资源大全(英文源码 其它)
1,01.zipOutput显示所有的调试信息(5KB)2,02.zipSome general debugging tips一般的调试技巧(11KB)3,03.zipDebugging ISAPI extension调试ISAPI扩展(4KB)4,04.zipLibDump类似DumpBin的工具(10KB)5,05.zipFinding memory leaks发现内存的泄漏(6KB)6,06.zipConvert message ID to a string将消息标志符转换成字符串(4KB)7,07.zipMessage Tracer消息跟踪(5KB)8,08.zipA simple profiler class一个简单的轮廓类(5KB)9,09.zipTerminator
中
断应用程序(5KB)10,10.zipTranslate Window Style转换窗口风格(5KB)11,11.zipLong String Debugging Macro调试宏(5KB)12,12.zipCheck for loaded DLLs检查装入的动态链接库(4KB)13,13.zipAutoincreasing build number自动增加版本信息的宏(5KB)14,14.zipFile Dialog Macro
文件
对话框宏(6KB)15,15.zipCode Template add-in for Visual C++ 5.0在VC5
中
可增加的代码模板(5KB)16,16.zipComment / Uncomment macros命令/反命令宏(5KB)17,17.zipCustom built files自定义生成的
文件
(5KB)18,18.zipDefine Method定义方法(5KB)19,19.zipExport Makefile输出工程制作
文件
(5KB)20,20.zipJump to Next/Previous Function Definition跳转到下一个/上一个功能定义(4KB)21,21.zipInverting Assignment Operations转化操作任务(5KB)22,22.zipVC4.2 style keyboard macro recorder for DevStudio 97在DevStudio 97
中
使用在VC4.2风格的键盘宏记录(4KB)23,23.zipApplication Launcher程序发射器, 能够在Word, Excel, Access, Power Point, Visio和Html
中
连接网站(6KB)24,24.zipOpen current header file打开当前
文件
头(7KB)25,25.zipOpen header file打开
文件
头(4KB)26,26.zipSequentially Renumber
Resource
ID's重新对资源标识符编号(5KB)27,27.zipA secondary clipboard实现第二个剪贴板, 不过它用的热键是Ctrl+Shift+C, Ctrl+Shift+V和Ctrl+Shift+X(4KB)28,28.zipCase switching这个宏实现文字的大小写互换(4KB)29,29.zipWM_COMMAND user message macroWM_COMMAND用户消息宏(5KB)30,30.zipBetter caret movement by words在IDE
中
移动快速单词的宏(5KB)
ATL实现的CDHtmlDialog模板类
ATL发展到现在,从未提供像
MFC
中
的CDHtmlDialog一样的HTML页面布局且方便开发者使用的窗口基类,虽然也有DHtml Control可供使用,但并不能像
MFC
那样通过宏映射来方便地让开发者与页面元素之间进行任意的双向交互,尤其是需要响应页面元素事件的时候,ATL/WTL爱好者必须自己编写相应的代码来完成这些工作。基于这个原因,通过理解分析
MFC
中
CDHtmlDialog类的功能和实现行为,这
里
完全使用ATL一样的实现机制来模仿
MFC
中
实现的功能编写了一个头
文件
,使ATL爱好者在无需
MFC
庞大的支持库的情形下实现跟CDHtmlDialog一样的功能,并且扩展了其能力。下载的压缩包
中
只有一个头
文件
atldhtmldlg.h,头
文件
的开始部分是一段开发者使用示例的注释,以方便开发者容易地上手。这个
文件
提供了若干个类和模板类,开发者只需关注其
中
两个模板类:CDHtmlDialogImpl和CMultiPageDHtmlDialogImpl,第一个模板类实现了WEB页面布局的对话框,第二个模板类以第一个类为基础,扩展成了在一个对话框
中
支持多个页面。使用方式非常简单,从上述两个模板类之一继承实现一个对话框类,然后添加相应的映射宏,实现宏映射
中
的方法即可构造一个完美、表现能力强、控制方便的对话框窗口,例子代码像下面这样:class CMainDlg : public CDHtmlDialogImpl{ ...... // 实现页面元素事件的处理 // 请注意响应函数原型定义:HRESULT Foo(IHTMLElement*) BEGIN_DHTML_EVENT_MAP(CMainDlg) DHTML_EVENT_ONCLICK(_T("elementid1"), OnClick) DHTML_EVENT_ONMOUSEMOVE(_T("elementid2"), OnMouseMove) DHTML_EVENT_ELEMENT(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER, _T("elementid"), OnMouseOver) // id为elementid的元素事件响应 DHTML_EVENT_CLASS(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER, _T("myclass"), OnMouseOver) // class为myclass的元素事件响应 DHTML_EVENT_TAG(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER, _T("div"), OnMouseOver) // 所有DIV元素的onmouseover事件响应 DHTML_EVENT_AXCONTROL(controlMethodDISPID, _T("objectid"), OnControlMethod) // ActiveX控件事件响应 END_DHTML_EVENT_MAP() // 实现外部DISPATCH方法,能在这
里
添加任意的方法供页面
中
的脚本调用 // 调用方式如下:window.external.about(123, "abc") // 请注意响应函数的原型定义:void Foo(VARIANT*,VARIANT*,VARIANT*) // 目前仅仅定义了三个参数,一般也足够使用了。如果脚本实际调用
中
只提供了2个参数,则第三个指针参数是NULL。以此类推 BEGIN_EXTERNAL_METHOD_MAP(CMainDlg) EXTERNAL_METHOD(_T("about"), OnAbout) END_EXTERNAL_METHOD_MAP() void OnAbout(VARIANT* para1, VARIANT* para2, VARIANT* para3) { // your code is here. } HRESULT OnClick(IHTMLElement *pElement) { // your code is here. return S_OK; } HRESULT OnMouseMove(IHTMLElement *pElement) { // your code is here. return S_OK; } ......}除了上面的例子,还有CMultiPageDHtmlDialogImpl
中
的一些映射宏,以及还有一些虚函数可供重载。对话框设计好后,调用方法也很简单,例子如下: CMainDlg dlg; dlg.m_nHtmlResID = IDR_YOUR_HTML_
RESOURCE
_ID; // open your
resource
or dlg.m_szHtmlResID = _T("C:\\yourname.html"); // open your
resource
or dlg.m_strCurrentUrl = _T("www.microsoft.com"); // open local html file or external URL dlg.Create(NULL); // or dlg.DoModal(NULL);好了,介绍就到这
里
,如果有更多疑问,请下载头
文件
查看源代码以及注释,本次下载的
文件
版本是 1.02。当前版本的一个缺憾是尚未支持DDX/DDV,原因是ATL并未提供DDX机制,下个版本将完全仿照WTL的方式实现该类的DDX/DDV。另外为了通用性以及减少依赖,代码
中
完全未使用CString或CAtlString,主要是
MFC
、ATL、WTL各自提供了自己的CString实现。版权特别声明:本软件源码完全属作者James(胡柏华)自创,作者拥有修改和变更代码特性的权利,任何团体或个人均可以自由下载并免费使用。如用于商业用途,请在所属商业软件的版权声明
中
加注本声明。使用者使用本源码的过程
中
产生的任何错误,作者并无义务提供技术支持,由此导致的任何损失,作者概不负责。2007-11-7
C++ 语言
64,636
社区成员
250,963
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章