如何在DLL中创建SDI/MDI

cjblove2008 2009-08-23 04:43:50
如何在DLL中创建SDI/MDI,这个问题搞了好久了,一直没实现,希望哪位大侠帮帮忙。

主程序只提供一个接口函数,具体参数我可以增加修改,其他代码不能动。

主程序也是一个SDI,希望调用DLL后生成另外一个SDI或者MDI,情况就这样

谁能提供具体步骤和代码最好,先谢谢了!
...全文
333 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjblove2008 2012-07-24
  • 打赏
  • 举报
回复
不好意思,几年前的问题了,代码我都已经找不到了,将这个帖子看完,按照这个思路自己想想办法吧,我都很久没碰VC了。
sragh1015 2012-07-22
  • 打赏
  • 举报
回复
楼主,我最近工作中也遇到了这样的问题,能把代码发我下么?我邮箱sragh@163.com
qjiam 2011-04-14
  • 打赏
  • 举报
回复
楼主我很需要你的单文档做动态链接库啊!!!我是菜多指点啊QQ:1139598231加我啊
toryln 2010-02-04
  • 打赏
  • 举报
回复
楼主,你最后是怎么搞出来的啊?给我个demo吧,我现在也很急
cjblove2008 2009-11-03
  • 打赏
  • 举报
回复
差点忘结贴了 自己把它搞出来了
我是苦力 2009-08-26
  • 打赏
  • 举报
回复
在DLL中创建SDI/MDI,自己在dll中创建SDI/MDI,为什么还要保留那些模板的呢.这些个可以去掉.
至于窗口不见了,你加一下语句:
CMainFrame* pFrame = new CMainFrame(/*m_pProject*/); //-- 你的Frame不要再模板中创建了.
m_pMainWnd = pFrame;
pFrame->LoadFrame(IDR_MAINFRAME,WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL);
pFrame->ShowWindow(SW_SHOWMAXIMIZED);
pFrame->UpdateWindow();
pFrame->InitialFrame();

想实现复杂功能,又想简单的实作,这个很矛盾.
你说的功能,不是改这么一个两个地方可以实现的.连模板都不丢,自己又搞Doc和View也矛盾.
你在DLL里面的View需要接受到MainFrame的消息并能相应,你的View要能访问到Doc.建议做一个叫Project的顶级指针,可以通过它访问到所有一切.
cjblove2008 2009-08-26
  • 打赏
  • 举报
回复
我用这个方法:

BOOL CSDIMain::InitInstance() //InitInstance()被我换成导出函数了
{
// 创建模板

CMultiDocTemplate *m_pTemplate;
m_pTemplate = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSDIForTestDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CSDIForTestView));

CSDIForTestDoc* pDocument = new CSDIForTestDoc;
// 创建新的frame
CFrameWnd* pFrame = m_pTemplate->CreateNewFrame(pDocument, NULL);
if (NULL == pFrame)
{
AfxMessageBox("Create frame failed");
return FALSE;
}
m_pTemplate->InitialUpdateFrame(pFrame, pDocument);
return TRUE;
}

现在的问题是,生成的窗口只会闪一下就没了。这我明白函数结束了,窗口自然消失了。我想在这个导出函数中开启新线程,好让窗口不消失,还能实现消息循环,该怎么办???
cjblove2008 2009-08-26
  • 打赏
  • 举报
回复
执行到m_pMainWnd = pFrame的时候报错(unhandled exception),以前也这么试过,没成功过。我接触VC时间不长,好多问题不明白,楼上说的要动好多地方,能不能介绍下思路,我好按照思路来做,当然如果你能做个简单的只要通过导出函数创建一个简单的SDI的代码那就最好了 ,本人感激不尽。
我是苦力 2009-08-25
  • 打赏
  • 举报
回复
除了消息的管理,还有就是工程结构和接口结构的管理.
如果以上三个部分搞透彻了就比较简单了.
我是苦力 2009-08-25
  • 打赏
  • 举报
回复
数据可以有一个专门负责数据的DLL管理,这样你以后想增加功能就往DLL目录丢DLL就可以了.模块分配也简单.
除了消息的管理,还有就是工程结构和接口结构的管理.
我是苦力 2009-08-25
  • 打赏
  • 举报
回复


if(!g_View.Create(NULL, NULL,AFX_WS_DEFAULT_VIEW | WS_HSCROLL | WS_VSCROLL ,
CRect(0,0,0,0), CFrameWnd::FromHandle(m_pFrameCtrl->GetFrameWnd()), AFX_IDW_PANE_FIRST))
return FALSE;

g_View 继承CView, 在DLL中执行. 第五个参数相当于MainFrame.
这个View的所有OnUpdate 和 Command 等消息需要在mainFrame中剥离,然后自己路由到DLL中.这样每个DLL可以维护一个View,Document的管理可以通过接口来管理,随便你写在哪里.
好处是,如果你想增加一个View,就可以丢一个DLL在一个约定的目录,这个DLL的接口也需要是约定的.大家保持一致.
cjblove2008 2009-08-25
  • 打赏
  • 举报
回复
高手都到哪去了,帮帮忙啊,急啊
gfynew 2009-08-24
  • 打赏
  • 举报
回复
不懂,关注ing
cjblove2008 2009-08-24
  • 打赏
  • 举报
回复
没人这么做过吗?
蒋晟 2009-08-23
  • 打赏
  • 举报
回复
什么样的代码需要重用?要把文档模板搬到DLL里面去的话,最好把app也搬到里面去
MoXiaoRab 2009-08-23
  • 打赏
  • 举报
回复
CWinApp和CFrameWnd的实例对象通过接口函数传递到DLL中一点意思都没有。你没有自己那个派生类的申明,而且就算声明了,拿到了指针你能干嘛呢?
cjblove2008 2009-08-23
  • 打赏
  • 举报
回复
我是相当于将一个SDI的所有功能,在DLL中实现,之后通过一个主程序直接调用DLL完成这个SDI的功能,这样做的话主程序不单单可以完成这个SDI所以功能,还能调用其他DLL完成其他功能。
cjblove2008 2009-08-23
  • 打赏
  • 举报
回复
我现在在想,是不是主程序(SDI)的 CWinApp和CFrameWnd的实例对象需不需要通过接口函数传递到DLL中,传过去后又该如何使用呢,这些我不是很明白,请大哥大姐指点下。
MoXiaoRab 2009-08-23
  • 打赏
  • 举报
回复
太复杂了...非要这么做不可?
cjblove2008 2009-08-23
  • 打赏
  • 举报
回复
4楼的朋友给的资料,我也按这种方式做过,但是没有成功,就是在
CFrameWnd* pFrame = m_pTemplate->CreateNewFrame(pDocument, NULL);的时候没有执行成功,
pFrame为空。

BOOL CSDIMain::InitInstance()
{
// 创建模板
if(m_pTemplate == NULL)
{
m_pTemplate = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSDIForTestDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CSDIForTestView));
}

CSDIForTestDoc* pDocument = new CSDIForTestDoc;
// 创建新的frame
CFrameWnd* pFrame = m_pTemplate->CreateNewFrame(pDocument, NULL);
if (NULL == pFrame)
{
AfxMessageBox("Create frame failed");
return FALSE;
}

m_pTemplate->InitialUpdateFrame(pFrame, pDocument);

return TRUE;
}
加载更多回复(4)
注意,这是未完成版本!!! 由于作者工作原因,暂时没有时间完成,但是基本功能已经实现,有个小问题如果你解决了欢迎发送给我,谢谢! 请用VS2010打开。内含四个DLL工程,及一个DLL 的测试工程。 其一个问题是,打开子窗口之后子窗口内容没有显示,单击子窗口客户区之后其内容才显示,目前作者没有解决。 /************************************************************************/ /* MdiPlus框架说明 */ /************************************************************************/ /** 项目名称: MdiPlus框架 版本号: v1.0.1 第一作者: Jef 地址: 国/江苏 日期: 20100616 电子邮箱: dungeonsnd@126.com 版权: 1.本框架完全开源。您可以免费使用本程序,但在用于商业用途前请获得第一作者的许可。 2.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任, 一概与第一作者及合作单位无关。 3.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 项目功能: MdiPlus框架是在Windows平台下把SDI程序行为与MDI程序行为结合在一起的编程手段。 框架最适合: a.以GDI方式输出为主的应用程序。 b.需要多种文档模板输出的MDI程序。 c.需要一个类似于SDI应用程序的固定(禁止改变大小)的View进行绘图。 框架充分进行模块化,把MDI的窗口创建类放在一个单独的DLL(DllMdiWnd.dll),开发者应该继承 这个类来得到一个文档模板(这样继承者不必考虑创建细节,只负责绘图),并且每一个文档模板最好 放到一个DLL(如ADoc.dll,BDoc.dll,CDoc.dll)。开发者建立主程序来调用ADoc.dll,BDoc.dll, CDoc.dll,每个文档模板(如ADoc.dll)可产生多个对应子窗口。 不过,DllMdiWnd.dll并没有提供view/doc支持,它的职责只是创建及销毁调用者的需要子窗口。 (如果子窗口是new创建出来的,ADoc.dll的基类CMdiPlus自己会负责delete,开发者可以不调用 delete)。 当然,如果有必要你可以在DLL(A.dll,B.dll,C.dll)实现view/doc支持。建议根据 需要开发独立的数据模型模块。 如果按照MVC模式的划分,DllMdiWnd.dll可以理解为C(控制器,创建与销毁窗口),继承类(如ADoc.dll, BDoc.dll,CDoc.dll)类似于V(视图,负责显示数据),这个框架没有提供M(模型,数据存储)。开发者 应该结合不同的文档模板来实现M。 版本历史: v1.0.1 20100616 第一版本 如何使用: 方法1. 进行项目开发时先建立DLL工程(建议选择 add mfc header win32 dll),然后把 DllMdiWnd.dll拷贝到新建项目。根据应用需要的不同文档模板建立多个对应的Dll工程,这些Dll 都继承自DllMdiWnd.dll的导出类,假定为ADoc.dll,BDoc.dll,CDoc.dll,这些Dll隐式链接DllMdiWnd.dll。 接着建立支持doc/view类型的MDI MFC主程序工程,隐式链接ADoc.dll,BDoc.dll,CDoc.dll。 另外要特别注意的是,主程序要进行必要的修改,如CChildFrame要修改窗口样式。建立的MDI 主程序运行过程将完全类似于SDI程序。如,弹出子窗口时它的视图仍然保持最大化(普通的MDI应用 程序任意一个子窗口从最大化还原时,其它窗口都将处于非最大化状态),并且它永远处于弹出的 子窗口下面,只能(且必须)建立一个CChildFrame。主程序的所有绘图工作都在这个 CChildFrame对应的view上进行。如果需要调用子窗口,只需要创建ADoc.dll(或BDoc.dll,CDoc.dll)导 出类的对象即可。子窗口的所有绘图工作都在ADoc.dll(或BDoc.dll,CDoc.dll)实现,所以主程序与 ADoc.dll(或BDoc.dll,CDoc.dll)应该同时开发。 方法2. 开发者可以自己根据需要直接修改Demo版进行开发。 其它: 框架有点类似于多个文档模板的MDI应用程序,但是普通的MDI程序在新建一个文档前无法绘图,除非 子类化CMainFrame或截获CMDIClient的消息。这些方式不便进行模块化开发。MdiPlus框架主要优点是在 新建一个文档前就有一个View进行绘图,并且不同功能进行模块化,各模块放到Dll(如果必要,你也 可以直接写成静态库链接到最终的执行程序里),适合一个项目多人同时进行开发。 **/
压缩包 MdiPlus_WS_POPUP 是正确的示例; Failure Samples是错误示例,演示了其它方法来创建此类多窗口程序失败例子。 综合比较使用MdiPlus_WS_POPUP是一种比较好的手段。 ============================== /************************************************************************/ /* MdiPlus框架说明 */ /************************************************************************/ /** 项目名称: MdiPlus框架 版本号: v1.0.3 第一作者: Jef 地址: 国/江苏 日期: 20100825 电子邮箱: dungeonsnd@126.com 版权: 1.本框架完全开源。您可以免费使用本程序,但在用于商业用途前请获得第一作者的许可。 2.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任, 一概与第一作者及合作单位无关。 3.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 项目功能: MdiPlus框架是在Windows平台下把SDI程序行为与MDI程序行为结合在一起的编程手段。 框架最适合: a.以GDI方式输出为主的应用程序。 b.需要多种文档模板输出的MDI程序。 c.需要一个类似于SDI应用程序的固定(禁止改变大小)的View进行绘图。 版本历史: v1.0.1 20100616 第一版本 v1.0.2 v1.0.3 20100825 整理了不同方案,选择一种比较好的方案。 其它: 框架有点类似于多个文档模板的MDI应用程序,但是普通的MDI程序在新建一个文档前无法绘图,除非 子类化CMainFrame或截获CMDIClient的消息。这些方式不便进行模块化开发。MdiPlus框架主要优点是在 新建一个文档前就有一个View进行绘图,并且不同功能进行模块化,各模块放到Dll(如果必要,你也 可以直接写成静态库链接到最终的执行程序里),适合一个项目多人同时进行开发。 **/
它有强大的功能: ◆支持三种窗口模式:单窗口 (SDI),多窗口 (MDI) 和伪多窗口 (PMDI); ◆完全支持 Unicode 系统 (NT/2000/XP/2003/Vista/7) 上的 Unicode 字符串; ◆支持 Unicode 代码页 (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE); ◆支持系统上已经安装的任何代码页; ◆支持 DOS/Windows、Unix 和 Mac 换行符格式; ◆文件打开前预览; ◆纠正错误代码页显示; ◆文本列选; ◆多级撤消; ◆支持“正则表达式”的查找/替换,可快速搜索/替换文本字串; ◆能记住文件的代码页和插入点的位置; ◆文档的打印预览和打印; ◆支持语言模块; ◆插件支持 (语法高亮显示、文本折叠、自动完成、脚本执行、键盘宏……)。 通过插件已实现的功能: ◎Clipboard.dll: 捕捉剪贴板; ◎Coder.dll: 支持多种编程语言的语法高亮显示、文本折叠、自动完成; ◎ContextMenu.dll: 可以自定义主菜单,编辑区、MDI 标签、超链接和文件的右键菜单; ◎Exit.dll: 提供退出 AkelPad 时的消息提示框和改变按 ESC 键的行为; ◎Explorer.dll: 显示资源管理器面板; ◎Fonts.dll: 字体不用安装到系统就可动态的加载; ◎Format.dll: 行的排序和排列,提取唯一行,提取或删除重复行,固定换行……; ◎FullScreen.dll: 全屏显示的切换插件; ◎HexSel.dll: 文本与十六进制值的相互转换 (包含 ANSI 和 UNICODE); ◎HotKeys.dll: 自定义热键; ◎LineBoard.dll: 显示行号和支持书签操作; ◎Log.dll: 监视日志或捕捉实时输出; ◎Macros.dll: 录制用户的键盘动作并可随后重复它们; ◎MinimizeToTray.dll: 最小化程序到系统托盘; ◎QSearch.dll: 提供一个“快速”文本搜索的小面板; ◎RecentFiles.dll: 管理文件列表; ◎SaveFile.dll: 可以设置自动保存的间隔时间等; ◎Scripts.dll: 脚本插件,基于 Windows 脚本宿主 (WSH) 引擎,因此您可以使用各 种各样的 Windows 组件对象模型 (COM) 的对象,例如,您可以使用 RegExp 对象来执行正则表达式查找替换、筛选文本行,去除行头尾的 空字符,使用 FileSystemObject 对象来操作文件,创建快捷方式, 使用 WshShell 对象来操作 Windows 注册表,或使用 WshNetwork 对 象来运行网络功能,此外,您可以创建和执行利用一个支持自动化的 外部应用程序 (如 Word 和 Excel) 脚本……不仅如此,Scripts.dll 还为 AkelPad 而预置了一些常用的方法调用,可以调用 WinAPI 函 数,从而可以创建有用户交互界面的脚本(如SearchReplace.js等,方 法调用见 Scripts-Chs.txt),和实现更多功能…… ◎Scroll.dll: 拆分窗格或MDI窗口的水平/垂直的同步滚动、自动滚动操作; ◎Sessions.dll: 保存和恢复程序 MDI 会话; ◎SmartSel.dll: 选定文本时排除行尾标记,Home 和 End 键的智能操作; ◎Sounds.dll: 打字时发出声音; ◎SpecialChar.dll: 显示和高亮特殊字符 (空格、制表符、换行符、自动换行、垂直 制表符、换页符、空字符); ◎Speech.dll: 机器朗读选定的文本。未翻译; ◎Stats.dll: 统计显示文档的字符数、单词数、行数等; ◎Templates.dll: 使用预设的模板来创建文档; ◎ToolBar.dll: 工具栏插件,可显示和自定义常用操作的工具栏; ◎XBrackets.dll: 可以在键入左括号时自动键入右括号并把光标置 (可能与一些 文输入法不兼容而无法自动完成右括号),高亮显示、跳转配对的括 号,选定括号间的文本。 主程序及所有插件是经过翻译了源代码后使用编译器编译生成的。
相关网站 7 设置窗口最大最小 7 设置窗口标题 7 去掉主菜单 7 修改应用程序图标 7 系统只能允许一个程序运行 7 在状态栏添加时间 8 研究调用存储过程 8 得到本机的IP地址 9 vc调用chm文件 10 最高窗口的实现 10 防止Edit框的Password不保密 11 在同一系统显示GB字符和BIG5字符 12 改变颜色(整个窗体的控件) 13 改变工程表头栏 13 ◆如何找开一个DiaLog的窗口◆ 13 ◆得到系统设置的窗口颜色◆ 14 ◆如何让点下去的菜单成为V状态◆ 14 ◆如何调用WINDOWS的颜色板◆ 14 ◆如何产生一个MDI的主窗口◆ 15 ◆如何让一个文本控件显示出值◆ 15 ◆如何让一个控件显示出相应的值◆ 16 ◆在调试怎么样MESSAGEBOX一个数字◆ 16 ◆如何控制控件的焦点◆ 16 ◆如何对析构函数对象进行释放◆ 16 ◆如何关闭一个模态窗口◆ 17 ◆如何将一个提示的声音发到声卡上◆ 17 ◆如何得到打开exe的带的参数◆ 17 ◆如何在框架上建立一个工具条◆ 17 ◆如何生成一个主窗口下方的状态条◆ 18 ◆如何让Cscrollview类控制其可以流动区域大小◆ 19 ◆MFC控件的一些基本控制方法◆ 19 ◆如何让一个数字型变量化为字符型变量◆ 19 ◆如何使用“拉动条”,“上下选择”◆ 19 ◆如何使用postmessage来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件的数据录入的控制属性◆ 23 ◆哪些函数是文档、视图相互处理用的◆ 23 ◆如何建立一个基于对话框一程序◆ 23 ◆如何建立一个线程◆ 24 ◆如何让窗口产生一个图标(从应用程序资源取出)◆ 24 ◆如何得到一个edit的录入的值◆ 24 ◆如何启动TIMER事件◆ 25 ◆如何使用ctrllist控件实现表格◆ 25 ◆如何从INI文件得到值◆ 25 ◆如何将图标文件写到窗口◆ 26 ◆如何得到本机的IP地址◆ 26 ◆如何使用全局变量◆ 26 ◆如何让一个字符加上回车、换行◆ 26 ◆如何定义、使用结构◆ 26 ◆如何在任意程序显示MessageBox◆ 27 ◆如何在程序判断出debug状态◆ 27 ◆当对话框有一个滚动条是,当滚动滚动条时的消息控制函数◆ 27 ◆将一个CWnd指针转换成一个控件ID(整数)注意用GetDlgItem()函数是从一个控件ID转换成一个CWnd的指针◆ 28 ◆如果在对话框自定义一个消息的方法,假设对话框名为CXX◆ 28 ◆消息传递◆ 29 ◆在一个函数引用另外的一个对话框◆ 29 ◆全局函数的申明问题◆ 29 ◆在应用程序*APP.CPP的InitInstance()的事件◆ 29 ◆给执行文件加一个图标◆ 30 ◆如何在全局函数通过传入的窗口句柄操作窗口◆ 30 ◆如何使桌面文字背景透明?◆ 30 ◆怎样才能在VC里产生一个唯一的字符串◆ 31 ◆如何隐藏进程(在系统状态栏和进程列表里不可见)◆ 31 ◆如何得到一个确定大小的视?◆ 31 ◆如何实现点击窗口任意地方拖动窗口?◆ 32 ◆如何在启动时阻止MDI应用程序创建一个新文档?◆ 33 ◆如何在多文档MFC程序制作独立的File|New菜单?◆ 33 ◆如何检测视是否处于分割状态?◆ 34 ◆如何使程序保持极小状态?◆ 34 ◆如何确定当前进程实例是否为唯一实例?◆ 35 ◆如何向一个文档附加多个视?◆ 35 ◆如何获得文件的图标、属性、大小、类型等参数?◆ 36 ◆如何得到鼠标下面的窗口?◆ 37 ◆设置鼠标的形状◆ 38 ◆在对话框设置编辑EDIT的值◆ 38 1. 如何获取应用程序的实例句柄? 38 2. 如何通过代码获得应用程序主窗口的指针? 38 3. 如何在程序获得其他程序的图标? 38 4. 如何编程结束应用程序?如何编程控制windows的重新引导? 39 5.怎样加载其他的应用程序? 39 6. 确定应用程序的路径 39 7. 获得各种目录信息 40 8. 如何自定义消息 40 9. 如何改变窗口的图标? 40 10. 如何改变窗口的 缺省风格? 40 11. 如何将窗口居显示? 41 12. 如何让窗口和 MDI窗口一启动就最大化和最小化? 41 13. 如何使程序保持极小状态? 41 14. 如何限制窗口的 大小? 41 15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 45 26、如何创建一个不规则形状的窗口 45 27、如何在代码获取工具条和状态条的指针 47 28、如何使能和禁止工具条的工具提示 47 29、如何设置工具条标题 48 30、如何创建和使用无模式对话框 48 31、如何在对话框显示一个位图 49 32、如何改变对话或窗体视窗的背景颜色 49 33、如何获取一个对话控件的指针 50 34、如何禁止和使能控件 50 35、如何改变控件的字体 50 36、如何在OLE控件使用OLE_COLOR数据类型 51 37、在不使用通用文件打开对话的情况下如何显示一个文件列表 51 38、为什么旋转按钮控件看起来倒转 51 39为什么旋转按钮控件不能自动地更新它下面的编辑控件 52 40、如何用位图显示下压按钮 52 41、如何一个创建三态下压按钮 52 42、如何动态创建控件 52 43、如何限制编辑框的准许字符 53 44、如何改变控件的颜色 54 45、当向列表框添加多个项时如何防止闪烁 55 46、如何向编辑控件添加文本 55 47、如何访问预定义的GDI对象 55 48、如何获取GDI对象的属性信息 56 49、如何实现一个橡皮区矩形 56 50、如何更新翻转背景颜色的文本 58 51、如何创建一个具有特定点大小的字体 58 52、如何计算一个串的大小 59 53、如何显示旋转文本 59 54、如何正确显示包含标签字符的串 60 55、串太长时如何在其末尾显示一个省略号 60 56、如何快速地格式化一个CString对象 61 57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 61 58、如何给系统菜单添加一个菜单项 61 59、如何确定顶层菜单所占据的菜单行数 62 60、在用户环境如何确定系统显示元素的颜色 62 问:如何控制窗口框架的最大最小尺寸? 63 问:如何改变窗口框架的颜色? 63 问:如何将应用程序窗口置于屏幕正? 64 问:VC6.0对VC5.0的兼容性? 64 问:打印和打印机的问题? 64 问:CRichEditCtrl滚动条的问题? 65 问:从数据库读大于32k的内容? 65 问:如何获得CRichEditCtrl字符的位置? 66 问:如何限制mdi子框架最大化时的大小? 66 问:如何切换视口而不破坏它们? 66 问:改变列表控制时发生闪烁现象? 68 问:处理列表控件可见项的问题? 68 问:产生线程的问题? 68 问:CFile使用了缓冲区吗? 69 问:DAO的密码? 69 问:如何知道CListBox什么时候滚动了? 70 问:视口的不活动性如何处理? 70 问:如何使用COleClientItem的IDispatch接口? 70 问:关于用户自定义的消息使用? 71 问:在打开一个文档时退出? 71 问:在CListCtrl控件多选择项的删除? 71 问:工作线程的登录状态? 72 问:如何控制菜单的大小? 72 问:改变LVIS_SELECTED的状态颜色? 73 问:如何只存储文档的某一部分? 73 问:保存工具条菜单有bug吗? 73 问:Tip of the day的bug 73 问:如何让我的mfc应用程序可以在最上面? 74 问:如何增加视图ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件图象橙色被显示为黄色? 76 问:无法正确改变应用程序的图标? 78 问:工具条状态的问题? 78 问:在SDI应用程序使用Active控件? 79 问:有RichEdit控件的对话框无法正常显示? 79 问:DLL的模板成员函数? 79 问:CFormView的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage的BroadcastSystemMessage如何处理? 80 问:CListCtrl选择变化时如何获得通知? 81 问:如何向ATL-COM对象传送一个数组? 81 问:如何选择CTreeCtrl的节点文本进行编辑? 82 问:如何改变默认的光标形状? 82 问:如何用键盘滚动分割的视口? 83 问:如何在线程处理状态条? 83 问:如何阻止WINDOWS关闭? 83 问:如何使一个按钮Disable? 83 问:怎样从MFC扩展动态链结库(DLL)显示一个对话框? 84 问:想隐藏用户界面怎么办? 85 问:如何实现SDIMDI的转换? 85 问:CDC的竖排文本? 86 问:如何激活变灰的弹出菜单? 86 问:线程消息? 87 问:TreeCtrl控制的显示速度太慢? 87 怎样使窗口总是浮现在最上面? 88 改变拖放时的光标外形? 89 如何定位到最新的记录上? 90 MVC和Doc-View? 90 被禁止(Disable)的控件如何改变其文本或背景色? 90 有ODBC的查找函数吗? 91 多个MRU菜单的问题 91 校验框类问题 93 CFormView类的Fold按钮 94 视的背景色 94 隐藏控件台程序 94 修改SDI窗口标题 95 焦点问题 95 从一个OCX调用另一个OCX的方法。 95 得到视 96 字符转化时间 96 二进制还是文本方式? 99 发送消息 99 怎样知道菜单运行时的状态 99 DLL编译出错 100 通用控件的显示窗口 100 如何禁止和使能控件 100 如何在OLE控件使用OLE_COLOR数据类型 100 在不使用通用文件打开对话的情况下如何显示一个文件列表 100 为什么旋转按钮控件看起来倒转 101 为什么旋转按钮控件不能自动地更新它下面的编辑控件 101 如何动态创建控件 101 如何显示旋转文本 101 在TreeList使用Edit功能 102 TreeList control使用check box 103 有关属性对话框(property sheet )的几个提示 108 在MFC加入"这是什么?"的帮助提示 111 精通工具条 112 如何改变视窗的背景颜色 112 为MFC应用程序添加全屏幕显示功能 112 VC常用数据类型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的实现 122 实现窗口动态写入汉字和改变汉字颜色形状 123

15,471

社区成员

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

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