如何在DLL中创建窗体(对话框和SDI/MDI)

    这是一个老问题了。我对此简单地写了一个小结,有不足之处,还请指出,谢 谢。
 
   调用DLL中的Dlg或SDI/MDI, 只是不能再使用APP类了,因为它是从CWinThread继承过来,内部的线程机制导出了问题的出现。
   (1)对于调用DLL中的Dialog,很简单,直接调用就是
      如:  extern "C"
            void LoadDialog()
            {
    CTestDlg   dlg;
                if (dlg.DoModal == IODK)
                {
                    //......
                }
            }
    (2)对于调用DLL中的SDI/MDI, 不那么直接。需要保证Doc/View和MainFrame之间的关联,因此得保留原来在APP中用的CDocTempate类及对它的使用。为此,我们可以自己建一个类如CSDIMain来做接替原来APP中的工作(当然不用类,就直接用问题也不大,毕竟都是创建工作都是在堆上进行的),
     如:
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;
}

杨晓明 2002-5-11 

E-mail: brierbird97@mails.tsinghua.edu.cn

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 2
    评论
1,pic_open.zip带位图预览的打开文件对话框(4KB)2,bmpdlg.zip一个位图对话框(11KB)3,folder.zip只显示文件夹信息的文件对话框(2KB)4,dir_pic.zip文件目录搜集工具对话框(42KB)5,splash.zip通过自己的线程Splash对话框显示文字(136KB)6,res_dlg.zip大小可调的对话框(21KB)7,splitter.zip可变的分割视图(58KB)8,anicon1.zip窗口的标题条上显示动画图标演示程序(47KB)9,anicon2.zip窗口的标题条上显示动画图标(2KB)10,simple.zip一般用途的分隔器类(43KB)11,outlook.zipOutLook风格的分隔条(59KB)12,appbar1.zip实现桌面的工具条(AppBar)(12KB)13,appbar2.zip实现桌面的工具条演示程序(AppBar)(88KB)14,trayicon1.zip屏幕保护托盘图标(SDK版本)(27KB)15,trayicon2.zip屏幕保护托盘图标(MFC版本)(30KB)16,cj60lib.zipMFC扩展界面库(VC6升级版)(936KB)17,devstudio.zipVisual Studio风格的用户界面(132KB)18,explorer.zipVisual Studio风格的用户界面(213KB)19,outlook1.zipOutLook风格的用户界面(134KB)20,Ccaption.zip一组用于定制窗口标题的类(36KB)21,Ccaption2.zip一组用于定制窗口标题的类演示程序(79KB)22,treectrl1.zipDirTreeCtrl--显示文件夹文件演示程序(56KB)23,treectrl2.zipDirTreeCtrl--显示文件夹文件(6KB)24,menutip.zip实现菜单的工具提示(33KB)25,menubar1.zipDevStudio样式的泊位菜单条演示程序(不用MSIE)(58KB)26,menubar2.zipDevStudio样式的泊位菜单条(不用MSIE)(27KB)27,propbox1.zip实用的属性列表框(5KB)28,propbox2.zip实用的属性列表框演示程序(25KB)29,cchecklist.zip一个多层次的CCheckListBox(18KB)30,popchild.zip PopupChild窗口之间转化(43KB)31,multitop.zip 一个SDI(单文档界面)的应用,通过File菜单的Create New Frame命令能够创建一个位于顶层的SDI应用,但关闭主应用后其它的窗口也将关闭,程序由Visual C++ 5.0开发(30KB)32,picknew.zip 演示如何注册多文档模板且避免MFC自动产生的"New File Type"对话框,程序由Visual C++ 5.0开发,调用了CDocTemplate::OpenDocumentFile()(49KB)33,listbox1.zip一个类似VisualStudio样式的列表框类(17KB)34,listbox2.zip一个类似VisualStudio样式的列表框类演示程序(50KB)35,custfile.zip 这个例子能够CFileDialog增加一对按纽,需要使用Visual C++ 6.0(23KB)36,icondlg.zip 这是一个从资源DLL选取图标的对话框(12KB)37,Modal.zip 创建一个模式的窗口(38KB)38,dock_menu.zip 演示如何实现DevStdio的菜单风格,值得研究 COOL(157KB)39,tooltip.zip 可以多行显示的提示条,且颜色可变(32KB)40,ntray.zip 你想知道拨号网络连通后的动态小图标(Tray Icons)是怎么实现的吗?这个例子可以告诉你一切 COOL(17KB)41,w95tray.zip Windows95 Tray Icon的例子(9KB)42,startmenu.exe 修改Start菜单(27KB)43,splits.zip 这个由Visual C++ 5.0开发的程序演示如何管理View的切分窗口,用到了CSplitterWnd::DeleteView()CSplitterWnd::CreateView()等成员函数(35KB)44,swt.zipDOS下仿WIN95界面及图标编辑器源程序(498k C&ASM 作者:添翼虎)(499KB)45,menutest.zip定制WIN95图形菜单演示程序(12KB)46,toolbar1.zipToolBar嵌入CListBox(39KB)47,fromto.zip从一图退到另一图(54KB)48,cj60libsrc.zip界面开发库Cj60Lib的源程序(268KB)49,password.zip 拖动放大镜到密码输入框能得到密码的内容 COOL(15KB)50,ProperWnd.zip 属性页放置窗口的指定位置(58KB)51,pushpin.zip属性页的左边加入一个图钉按纽,熟悉Microsoft Developer Stdio的朋友一定很熟悉(16KB)52,apibrow.zip这个例子使用公用控制回调一个CListView管理CListCtrl控制,这个例子用于分析了一些以逗号为分割符的文本文件,例如你的\MSDEV\LIB(VC5.0DevStudio\VC\Lib)目录下的Win32Api.CSV就是这样的文件(16KB)53,scrl.zip这是一个由Visual C++ 5.0开发的基于对话框的应用,它演示如何使用CListCtrl::Scroll()函数,它是CListView的report方式的一个子集(14KB)54,treelist1.zip显示资源管理器风格的目录树结构的例子(64KB)55,list_menu.zip ToolBar嵌入CListBox,看起来像图形菜单(39KB)<END)56,ColorButton.zipColorButton(22KB)57,iconpro.zip 一个图标处理程序的源代码,支持对ICON多种特效处理,能EXE,DLL文件取出ICON文件,并能将BMP文件转化为ICON,本程序也是个很酷的工具(117KB)58,ctrbars.zip 一个简单的工具条的程序例子(18KB)59,cj60.zip类似于Developer Studio,Explore界面的类库(165KB)60,cj601.zip类似于Developer Studio,Explore界面的类库(95KB)61,cj602.zip类似于Developer Studio,Explore界面的类库(100KB)62,fileNew.zip文件更新事件类演示程序(37KB)63,CfileNew.zip文件更新事件类(4KB)64,outbar.zip类似OutLook左边按钮条的控件(163KB)65,waitdialog.zip等待对话框(22KB)66,coolmenu.zipOffice 97风格菜单实现(298KB)67,dirpk.exe目录选择对话(78KB)68,docktest.zip演示Docking Window(220kb)69,drivevie.zip查看系统安装的驱动器(34kb)70,enhstbar.zip状态条上显示按钮进度指示条(88kb)71,fully.zip全屏幕显示窗口例子程序(42kb)72,icondial.zip对话框内显示图标列表(12kb)73,mfccmd.zip多重Undo/Redo实现(90kb)74,mfcdde.zipDDE实例(53kb)75,splasher.zip启动屏幕程序(47kb)76,toolbar.zip一个工具条的例子(174kb)77,vwrplc32.exe文档视图结构实例(42KB)78,ModalWin.zip一个多文档的例子(1880kb)79,HTMViewer.ziphtml文件浏览器(1870kb)80,picwin.zip给任意窗口添加背景(2KB)81,DynCon.zip动态改变对话框的大小, 对话框的控件相应改变(166KB)82,tabstatus.zip多文档应用程序的状态条加入子窗口的列表, 使程序的状态条有点像Windows 95的任务条(62KB)83,jpeg.zip操作JPEG的库源程序(390KB)84,dibimage.zip这个例子功能强大,能够以多种方式处理位图文件,强烈推荐 COOL(112KB)85,voicecmd.zip你的软件增加语音控制功能COOL(31KB)86,pathDlg.zip能够选择创建文件夹的对话框(22KB)87,AniDlg.zip想作动态对话框吗?下载一个回去看看吧!(18KB)88,dlgtbar.zip想对话框实现浮动工具栏吗?这个代码是你的最佳选择。(19KB)89,DlgMenu.zip教你对话框加入菜单,一学就会。(26KB)90,fold.zip使用相当简单,实现文件夹浏览,里面附带英文说明。(4KB)91,CoolAbout.zip支持滚动文字图象,并可用鼠标操作方向。(26KB)92,FullDlg.zip用这类你可以实现全屏对话框,并且你用它可以切换到运行的其它应用程序(3KB)93,Colorsrc.zip一个很漂亮的颜色选择类。(157KB)94,TabDialog.zip能将对话框“钉”屏幕上。(36KB)95,tip_ocx.zip你有没有觉得VC提供的那个Tip of the day控件很简陋?现好了,Michael Walz带给我们一个Visual Studio那样的界面漂亮的Tip of the day。(26KB)96,PathPic.zip这个类库提供了选择目录的功能,比通用的CFileDialog好多了。(20KB)97,twopanes.zip你有没有想过把通用对话框作为你的窗口的一个View是什么样子的?看看这个例子吧。(9KB)98,bcmenu21.zip可以利用工具条资源,绘制图标菜单。(56KB)99,MENU4_MDI.ZIP可以利用工具条资源,自动绘制图标菜单,MDI版本。(62KB)100,MENU4_SDI.ZIP可以利用工具条资源,自动绘制图标菜单,SDI版本。(61KB)101,toolbar2.zip这个程序演示了如何利用工具栏的新特性,工具栏的某个按钮加入下拉式的列表。(28KB)102,avi_bar.zip可以状态栏里加入一个AVI动画。(34KB)103,outlook.zip这个类库使你可以创建象OutLook那样的切分窗口。(59KB)104,cxysplit.zip这是一个可以DialogBox使用的切分类库。(21KB)105,AutoWnd.zip自动切分一个视图,并且高亮显示具有输入焦点的视图。(31KB)106,MyWnd.zip高亮显示具有输入焦点的视图。(2KB)107,bhagat.zip使用一个简单的函数调用就可以切分视图动态创建任何类型的新视图。(64KB)108,MSDNWnd.zip这是一个MSDN的切分窗口的例子,虽不怎么样但已经完整展示了切分操作。对于初学者是一个很好的参考。(37KB)109,rulers.zip使用固定大小的切分窗口(上面、左边部分)视图加入标尺。(就象Photoshop的标尺那样)酷极了。(5KB)110,VisualFx.zip使用固定大小的切分窗口(上面、左边部分)视图加入标尺。(就象Photoshop的标尺那样)酷极了。(88KB)111,infobar.zip定制了一个与outlook,outlook express相同的信息条。(16KB)112,BCGB.zipBCGControlBar的AppWizard,编译运行之后你new的时候就可以选择使用BCGControlBar界面风格了。你最好与BCGControlBar一起下载使用。(215KB)113,sizecbar.zip支持浮动窗体的类库,使用它你可以轻松的做出象Visual Studio那样的界面来。(65KB)114,Coolocx.zip所有你能想到的控件一个都不能少,全都是浮动的效果乃至连Windows通用对话框都浮动。(62KB)115,fullscreen.zip让你轻松实现全屏显示的代码,很简单轻易更可上手,告诉你,全屏时你还可以保留工具条。(22KB)116,sys_tray.zip完全封装windows任务栏,使用此类可以轻松操作任务栏图标及其菜单功能。(51KB)117,regester.zip封装有关注册表操作的函数,使你可以轻松添加、删除、修改主键或键值。(2KB)118,bmpdraw.zip可以用bmp文件构造该类,不须设计时将bmp文件加入到资源去。其它功能多多。(5KB)119,split.zip从可以学习CFile类的使用方法。(39KB)120,strange.zip用VC++实现异形窗口(234KB)121,csh.zip对话框实现提示条风格的上下文敏感帮助(75KB)122,whfname.zip从窗口句柄得到文件名(6KB)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

Brierbird

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值