MFC静态库中包含的对话框如何显示

begodliker 2013-06-21 01:41:42
我把一个对话框的定义放到一个静态库中,相应的资源也在静态库中。然后,我在另一个MFC应用程序中使用这个静态库,在调用dlg.domodal后,不能产生对话框。
进入Domodal函数跟踪发现,HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG); 这句返回的hResource 为空。
请问是什么原因,如何修改,使dlg.Domodal能够正确生成对话框。
...全文
220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-06-21
  • 打赏
  • 举报
回复
把Dlg 关联的类导出(AFX_EXT_CLASS )。再EXE 文件中直接 CXXDlg dlg;dlg.DoModal()
begodliker 2013-06-21
  • 打赏
  • 举报
回复
是不是需要在我这个包含静态链接库的程序中也要建立一个与静态链接库中的对话框相同的对话框资源。 具体应该怎么做啊
Eleven 2013-06-21
  • 打赏
  • 举报
回复
接口函数中 AFX_MANAGE_STATE(AfxGetStaticModuleState()); http://blog.sina.com.cn/s/blog_7e7b66a801012ypj.html
begodliker 2013-06-21
  • 打赏
  • 举报
回复
求给力,在线等
VC++视频笔记资料 一、MFC的概念和作用   1、什么是MFC?      全称:Microsoft Foundation Class Library(微软基础类库)      1-MFC从硬盘存在形式来说就是一个库(静态MFC库、动态MFC库)      2-MFC从原理来说还是一个程序框架   2、为什么使用MFC?      基于框架编程,提高工作效率,减少开发周期,降低开发成本。 二、几个重要的头文件   afx.h--包含MFC绝大部分类的声明   afxwin.h--包含了afx.h和windows.h   afxext.h--提供了对扩展类的支持,例如:工具栏、状态栏...   附:以Afx...开头的函数,可以确定为MFC的一个全局函数;     以::...开头的函数,可以确定为Win32的API函数; 三、MFC应用程序的分类   1、使用MFC库制作自己的控制台程序     相比Win32控制台程序:     多了一个全局对象 CWinApp theApp     入口函数不同于以往的入口函数   2、使用MFC库制作自己的静态库程序   3、使用MFC库制作自己的动态库程序     1--使用MFC库制作自己的规则动态库(静/动态MFC库)     2--使用MFC库制作自己的扩展动态库     区别:规则库可以被所有程序调用,扩展库只能被支持MFC的程序调用   4、使用MFC库制作自己的窗口程序     1--单文档视图构架程序       CFrameWnd-框架窗口类,封装了关于框架窗口的操作       CWinApp-应用程序类,封装了关于程序流程的操作       CDocument-文档类,封装了关于数据的操作(提取、转换、存储...)       CView-视图窗口类,封装了关于视图窗口的操作(绘图)      2--多文档视图构架程序       CMDIChildWnd-子框架窗口类,封装了关于子框架窗口的操作       CMDIFrameWnd-主框架窗口类,封装了关于主框架窗口的操作       CWinApp-应用程序类,封装了关于程序流程的操作       CDocument-文档类,封装了关于数据的操作(提取、转换、存储...)       CView-视图窗口类,封装了关于视图窗口的操作(绘图)     3--对话框构架程序       CWinApp-应用程序类,封装了关于程序流程的操作       CDialog-对话框窗口类,封装了关于对话框窗口的操作
一个功能强大的MFC界面处理扩展库:CJ60Lib 这是从网上搜集的一个扩展库,把它分享给大家! 简介: CJ60Lib是基于MFC基础之上的一个扩展库,主要是改进MFC的下述类: CCJButton - ( CJButton.cpp and CJButton.h )对CButton的改进。 CCJComboBox - ( CJComboBox.cpp and CJComboBox.h )对CComboBox的改进。 CCJControlBar - ( CJControlBar.cpp and CJControlBar.h )对CControlBar的改进。 CCJFrameWnd - ( CJFrameWnd.cpp and CJFrameWnd.h ) CCJMDIFrameWnd - ( CJMDIFrameWnd.cpp and CJMDIFrameWnd.h ) CCJDockBar - ( CJDockBar.cpp and CJDockBar.h ) 这些类重载了缺省的主框架布局,以增加3D效果到工具条。为了使用这些类,仅将 CFrameWnd 改为 CCJFrameWnd,其,CMainFrame 包含在 Mainfrm.h文件,(对于MDI,采用CCJMDIFrameWnd)。 CCJOutlookBar - ( CJOutlookBar.cpp and CJOutlookBar.h )新增类,用于实现Outlook的工具条。 CCJPagerCtrl - ( CJPagerCtrl.cpp and CJPagerCtrl.h )新增类,用于设置标签视或者对话框。 CCJTabCtrlBar - ( CJTabCtrlBar.cpp and CJTabCtrlBar.h )新增类。 CCJToolBar - ( CJToolBar.cpp and CJToolBar.h )对CToolBar类的改进。 CCoolMenuManager -( CoolMenu.cpp, Emboss.cpp and CoolMenu.h ) CSubclassWnd -( Subclass.cpp and Subclass.h ) 新增类,用于改进已有的菜单。 CFlatToolBar - ( FlatBar.cpp and FlatBar.h ) Obsolete with VC 6.0 CModuleVersion - ( ModulVer.cpp and ModulVer.h ) 这是CCJToolBar的基类。 CCoolBar, CRebarInfo - ( CoolBar.cpp and CoolBar.h ) Obsolete with VC 6.0 新增类,用于实现Internet Explorer 4风格的工具条。 CHyperLink - ( HyperLink.cpp and HyperLink.h ) 超链接控件。 使用方法: 在Project Settings选择General标签,Microsoft Foundation Class设置为 Use MFC in a shared DLL。 在Project Settings选择Link标签,设置Category为Input,增加../Lib到Additional Library Path。 在Link标签,改变Category为General,Output Name (所有配置)设置为../Lib。 选择C/C++标签,改变Category为Preprocessor,增加../Include到Additional Include Directories. 最后一步是添加下面两行代码到StdAfx.h头文件: #define MFCX_PROJ #include 为了能静态链接到CJ60Lib,需要做下面修改: 在project settings对话框,选择General标签,确保Microsoft Foundation Class设置为Use MFC in a static library。 添加下面代码到StdAfx.h 头文件,其将使库静态链接到应用程序: #define MFCXLIB_STATIC #define MFCX_PROJ #include
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 属性页用来修改和査看对话框控件(包括对话框本身)的各项属性,毎类控件的属性项都 不一样,需要根据情况修改,当然所有的属性都可以以代码形式实现,但能直接修改最好 方便快捷。
光 盘 说 明 1.本书第4~16章所附代码的运行环境: Visual C++ 6.0及以上版本 最低配置为:CPU:P 233以上.32MB以上内存 2.本书所附光盘范例 第4章 项目ExTest,“不做任何事情”的应用程序。 第5章 项目ExTest,在客户区显示“HELLO!”; 项目ExMyMessage,自定义消息。 第6章 项目ExMDI,“不做任何事情”的多文档应用程序; 项目ExSDI,验证文档视图结构的命令消息处理顺序。 第7章 项目ExMouseCapture,鼠标捕获; 项目ExCursor,改变客户区光标为I形光标; 项目ExMK,鼠标光标位置坐标在状态栏的显示和客户区点击鼠标左键,弹出鼠标光标位置信息对话框; 项目ExChar,只有在当前窗口下输入字符“A”或“a”时,才弹出对话框。 第8章 项目ExTest,修改系统菜单的相关操作; 项目ExPdMenu,添加下拉菜单并实现命令响应,以及工具栏和状态栏的操作; 项目ExPuMenu,弹出菜单的创建、载入与功能实现; 项目ExMyDT,菜单、工具栏、状态栏综合操作,实现一个简单的绘图板。 第9章 项目ExMdMl,反映模式对话框与非模式对话框的几点不同; 项目ExDlgTest(C4),北京奥运金牌榜首的投票对话框,单选按钮、复选框、下压按钮与组框操作; 项目ExDlgTest(C5),个人信息录入对话框,列表框、组合框与滚动条操作; 项目ExDlgTS,通过改变选项卡所包含的颜色滑块实现单文档主窗口所包含图形的色彩变化,选项卡和滑块操作。 第10章 项目ExPen,画笔操作; 项目ExBrush,画刷操作; 项目ExFont,字体操作; 项目MyDraw,位图操作; 项目ExArc,对预设圆左上1/4部分的截取,绘制曲线操作; 项目ExBezier,利用贝塞尔函数绘制图形; 项目ExPie,绘制饼状楔形图; 项目ExDrawText,绘制文本; 项目ExMapMode,设定映射模式并基于设定的映射模式完成绘图。 第11章 项目ExFileStatus,使用类CFile提供的方法实现文件信息获取; 项目ExArTest,利用串行化机制执行读写操作。 第12章 项目ExThread,创建工作线程,计算1+2+…+n; 项目ExMultithreading,创建两个线程,分别用于对一个已有数组的读和写操作,多线程编程。 第13章 项目Calculate和项目ExTestCal,分别用于创建和使用静态链接库; 项目CalSquare和项目ExTestCalSquare,分别用于创建和使用规则动态链接库; 项目CalGCD和项目ExTestCalGCD,分别用于创建和使用扩展动态链接库。 第14章 项目ExMyAccess,MFC ODBC数据库程序创建与操作。 第15章 项目ExSocket和项目ExClient,通过Socket编程实现数据收发; 项目ExGetIP,网络应用程序,IP获取。 第16章 项目SampleCtrl和项目ActiveXTester,创建和使用ActiveX控件。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧