MDI程序中,如何获取菜单,并对菜单进行操作?

dos5gw 2012-06-01 02:34:54


m_pTemplate = new CMultiDocTemplate(
IDR_TEST_MENU,
RUNTIME_CLASS(CTestDoc),
RUNTIME_CLASS(CTestChildWnd),
RUNTIME_CLASS(CTestView));


定义MDI模板,子视类CTestView有自己的菜单, 菜单资源ID是IDR_TEST_MENU,

问题:
(1)在CMainFrame中执行GetMenu(), 获取的菜单是默认的IDR_MAINFRAME, 但我想获取子视类CTestView的菜单(资源ID:IDR_TEST_MENU), 代码应如何写?

(2)如果MDI中有多个子视类, 分别为CTestView1,CTestView2,,,, 都用同一个菜单资源IDR_TEST_MENU, GetMenu()获得的指针一样吗?

...全文
250 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2012-06-13
  • 打赏
  • 举报
回复
使用MainFrame中WM_INITMENU看。
dos5gw 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

ON_UPDATE_COMMAND_UI()
pCmdUI->Check(TRUE/FALSE);
[/Quote]

放弃用CMenu::FromHandle(m_hMenuShared)的方式了,,,
菜单项响应两个消息
COMMAND: 在这个函数中改变BOOL变量的值, isChecked =! isChecked;
UPDATE_COMMAND_UI: 在这个函数中根据BOOL变量的值设置check状态. if(isChecked) pCmdUI->SetCheck(1);

dos5gw 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

每个View有不同的菜单,
在view里响应菜单不行吗
[/Quote]
在View里getMenu,得到的菜单句柄是主框架的菜单, 而不是视类关联的菜单.
schlafenhamster 2012-06-10
  • 打赏
  • 举报
回复
每个View有不同的菜单,
在view里响应菜单不行吗
dos5gw 2012-06-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

不明白你的‘目的’是什么。
[/Quote]

就是MDI下, 每个View有不同的菜单, 菜单的相应函数一般写在CMainFrame里,
问题是, 在CMainFrame中, 如何获取当前View的菜单,并操作.
schlafenhamster 2012-06-10
  • 打赏
  • 举报
回复
不明白你的‘目的’是什么。
dos5gw 2012-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

ON_UPDATE_COMMAND_UI()
pCmdUI->Check(TRUE/FALSE);
[/Quote]
我是把子菜单的ID关联到ON_UPDATE_COMMAND_UI的, 断点调试发现, 在我点击第一级菜单的时候, 函数就响应了.
比如我的菜单结构是:
文件(F)
|
打开 ID_OPEN
关闭 ID_CLOSE

明明ON_UPDATE_COMMAND_UI是给ID_CLOSE的, 但是我点击"文件"的时候, 就进入函数了
dos5gw 2012-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

ON_UPDATE_COMMAND_UI()
pCmdUI->Check(TRUE/FALSE);
[/Quote]

在CMainFrame试过上面的方法, 无效,
就叫我海 2012-06-09
  • 打赏
  • 举报
回复
改变标记..
楼上所说的就是
Eleven 2012-06-09
  • 打赏
  • 举报
回复
ON_UPDATE_COMMAND_UI()
pCmdUI->Check(TRUE/FALSE);
dos5gw 2012-06-09
  • 打赏
  • 举报
回复
发现一个新问题,

POSITION psDocTemp = AfxGetApp()->GetFirstDocTemplatePosition();
while (psDocTemp)
{
CMultiDocTemplate *pDocTemp = (CMultiDocTemplate*)AfxGetApp()->GetNextDocTemplate(psDocTemp);
CMenu *pMenu = CMenu::FromHandle(pDocTemp->m_hMenuShared);
CMenu *pSubMenu=pMenu->GetSubMenu(4); //获得子菜单指针
pSubMenu->CheckMenuItem(ID_MENU_AUTOSAVE,MF_BYCOMMAND|MF_UNCHECKED); //改变子菜单的check

问题是:
在CMainFrame::OnCreate()内加入上述代码, 可以改子菜单的check状态.
但是, 如果在CMainFrame加一个响应点击此菜单的函数CMainFrame::OnClick(), 在此函数内加入上述代码, 就无法改变子菜单的check状态了.
跟踪了一下, 结论是CMenu *pMenu的值每次都是一样的, 但pMenu->GetSubMenu(4)获得的子菜单pSubMenu的值却不一样, why ?
dos5gw 2012-06-01
  • 打赏
  • 举报
回复
找到答案了, 还是Google靠谱, 尝试调整几次搜索关键字, 终于找到:

XP sp3, VS2005, C++ MFC



项目里有个功能是把系统的菜单都变成中文或英文,

而MDI的菜单有两个,一个是平时看到的,也就是子框架childframe的菜单menu,

另一个是把所有子框架关掉后的菜单,也可以叫做主框架菜单,

这两个菜单在资源里都可以找得到,当然这两个菜单是不一样的,

用平常的getmenu()的方法获得到的是主框架的菜单,

而子框架的菜单却不好获得,

搜索了很久,才找到解决办法:



以下方法可以获得子框架菜单

我是写在CMainFrame::OnCreate()



POSITION psDocTemp = AfxGetApp()->GetFirstDocTemplatePosition();
while (psDocTemp)
{
CMultiDocTemplate *pDocTemp = (CMultiDocTemplate*)AfxGetApp()->GetNextDocTemplate(psDocTemp);
CMenu *pMenu = CMenu::FromHandle(pDocTemp->m_hMenuShared);
pMenu->ModifyMenu(0, MF_BYPOSITION, 0, _T("文件"));
}

这里用获得到的菜单指针对菜单进行修改。



链接:http://group.gimoo.net/review/7295
资源比较大,分成两部分上传。 第一部分 Visual C++ 2010开发与新特性   第1章 Visual C++ 2010开发环境简介 1   1.1 Visual C++ 2010简介 1   1.2 Visual C++ 2010下载安装指南 1   1.3 Visual C++ 2010主要特点与   1.3 新特性 3   1.4 Visual C++ 2010开发环境操作   1.4 指南 6   1.4.1 创建Visual C++应用程序 6   1.4.2 Visual C++ 2010菜单介绍 9   1.5 Visual C++ 2010 MFC简介 12   1.6 Visual C++ 2010 CLR简介 13   1.7 Visual C++ 2010 64位编程 14   1.8 支持新的C++语言标准 14   1.8.1 支持新的C++语言标准   1.8.1 (C++ 0x) 14   1.8.2 Lambda表达式 15   1.8.3 静态断言static_assert 17   1.8.4 auto关键字 18   1.8.5 右值引用 19   1.8.6 安全数据类型 22   1.8.7 移动构造 23   1.9 支持开发并行程序 26   1.9.1 运行库支持native代码 26   1.9.2 调试和分析工具 29   1.10 对MFC的增强 31   1.10.1 任务对话框CTaskDialog 31   1.10.2 重启管理器(Restart Manager)支持 33   1.10.3 支持新的用户界面风格 34   第2章 MFC应用程序框架 37   2.1 用MFC向导生成应用程序 37   2.1.1 生成的程序框架 37   2.1.2 生成的应用程序类型 43   2.1.3 向导生成工程文件简介 46   2.2 应用程序框架分析 46   2.2.1 框架简介 47   2.2.2 MFC应用程序运行流程 50   2.2.3 应用程序窗口 51   2.2.4 消息机制与消息循环 59   2.3 文档与视图 65   2.3.1 文档类结构分析 65   2.3.2 视图类结构分析 65   2.3.3 文档与视图的关系 67   2.3.4 SDI应用程序分析 69   2.3.5 MDI应用程序分析 69   2.4 工具栏与状态栏 69   2.4.1 工具栏 70   2.4.2 状态栏 78   2.5 MFC新功能——Office 2007   2.5.1 风格程序分析 85   2.6 MFC新功能——Visual Studio   2.6.1 风格程序分析 90   2.7 MFC新功能——Windows资源   2.7.1 管理器风格程序分析 98   2.8 应用程序框架类对象分析 100   2.8.1 视图类对文档类的调用 100   2.8.2 在框架类获得当前的文档类和视图类对象指针 101   2.8.3 获得应用程序类对象的指针 101   2.8.4 从应用类对象获得主框架类对象的指针 101   2.9 小结 102   第3章 Visual C++ 2010 MFC菜单编程 103   3.1 菜单编程 103   3.1.1 创建菜单 104   3.1.2 创建菜单热键 115   3.1.3 标记菜单 115   3.1.4 给菜单加入图标 119   3.1.5 禁用菜单 121   3.1.6 移除与加载菜单 127   3.2 菜单消息的传输机制 129   3.2.1 菜单消息的分类 129   3.2.2 菜单消息的传输路由 129   3.3 动态菜单操作 131   3.3.1 添加菜单 131   3.3.2 插入菜单 133   3.3.3 删除菜单 135   3.3.4 插入菜单的命令响应 136   3.3.5 修改菜单 137   3.4 小结 140   第4章 Visual C++ 2010 MFC对话框编程 141   4.1 对话框简介 141   4.1.1 对话框的控件简介 141   4.1.2 对话框的种类简介 149   4.1.3 设计对话框 150   4.2 创建与销毁对话框 153   4.2.1 模态对话框 153   4.2.2 非模式对话框 159   4.2.3 属性页对话框 163   4.3 消息对话框 173   4.4 通用对话框 175   4.4.1 文件打开对话框 176   4.4.2 文件保存对话框 178   4.4.3 颜色对话框 179   4.4.4 字体对话框 181   4.4.5 查找对话框 183   4.4.6 页面设置对话框 185   4.4.7 打印对话框 186   4.5 小结 187   第5章 Visual C++ 2010 MFC对话框控件 188   5.1 Visual C++ 2010 Button控件简介与开发 191   5.2 Visual C++ 2010 List Box 控件简介与开发 193   5.3 Visual C++ 2010 Com boBox控件简介与开发 195   5.3.1 创建扩展组合框控件 196   5.3.2 在扩展组合框控件使用   5.3.2 图像列表 197   5.3.3 设置各项的图像 197   5.3.4 处理扩展组合框控件的通知消息 198   5.4 Visual C++ 2010 List控件简介与开发 198   5.4.1 列表控件和列表视图 199   5.4.2 列表项和图像列表 199   5.4.3 回调项和回调屏蔽 200   5.4.4 创建列表控件 200   5.4.5 创建图像列表 201   5.4.6 向控件添加列(报表视图) 204   5.4.7 向控件添加项 205   5.4.8 在列表控件滚动、排列、   5.4.8 排序和查找 205   5.4.9 在列表控件实现工作区 205   5.4.10 处理列表控件的通知消息 206   5.4.11 更改列表控件样式 206   5.4.12 虚拟列表控件 207   5.4.13 列表控件的消息映射 209   5.4.14 列表控件的风格选项及表头设置 210   5.4.15 销毁列表控件 210   5.5 Visual C++ 2010 Edit控件简介与开发 211   5.6 Visual C++ 2010 Rich Edit控件简介与开发 213   5.6.1 Rich Edit控件的字符格式 215   5.6.2 Rich Edit控件的段落格式 215   5.6.3 Rich Edit控件的当前选定内容 215   5.6.4 Rich Edit控件的分词 216   5.6.5 Rich Edit控件的剪贴板操作 216   5.6.6 Rich Edit控件的流操作 216   5.6.7 Rich Edit控件的打印操作 216   5.6.8 无底的Rich Edit控件 217   5.6.9 来自Rich Edit控件的通知 217   5.7 Visual C++ 2010 Progress控件简介与开发 219   5.7.1 进度控件的样式 219   5.7.2 进度控件的设置 219   5.7.3 操作进度控件 220   5.8 Visual C++ 2010 Tree控件简介与开发 220   5.8.1 树控件样式 221   5.8.2 树控件父项和子项 221   5.8.3 树控件项位置 222   5.8.4 树控件项标签 222   5.8.5 树控件标签编辑 223   5.8.6 树控件项的状态 223   5.8.7 树控件图像列表 224   5.8.8 树控件项选择 224   5.8.9 树控件拖放操作 224   5.8.10 树控件项信息 225   5.8.11 树控件通知消息 225   5.9 Visual C++ 2010 DBgrid控件简介与开发 226   5.9.1 示例程序1 226   5.9.2 示例程序2 227   5.10 Visual C++ 2010 Rebar控件简介与开发 228   5.10.1 在Rebar控件使用图像列表 230   5.10.2 在Rebar控件使用对话栏 231   5.10.3 处理Rebar控件的通知消息 231   5.11 Visual C++ 2010 Timer控件简介与开发 232   5.12 Visual C++ 2010 Tab控件简介与开发 234   5.12.1 选项卡和选项卡控件属性 235   5.12.2 选项卡控件的使用方法 235   5.12.3 创建选项卡控件的方法 235   5.12.4 处理选项卡控件通知消息 236   5.12.5 CTabCtrl类简介 236   5.13 Visual C++ 2010 IP控件简介与开发 241   5.14 Visual C++ 2010 Picture控件简介与开发 241   5.15 Visual C++ 2010 Slider控件简介与开发 244   5.15.1 滑块控件样式 244   5.15.2 滑块控件成员函数 245   5.15.3 滑块控件通知消息 246   5.16 Visual C++ 2010 Scroll Bar控件简介与开发 246   5.17 Visual C++ 2010 Hot Key控件简介与开发 248   5.17.1 使用热键控件 248   5.17.2 设置热键 249   5.18 Visual C++ 2010 Animation控件简介与开发 249   5.18.1 使用动画控件 249   5.18.2 动画控件发送的通知 250   5.19 Visual C++ 2010 Spin控件简介与开发 250   5.19.1 数值调节钮的样式 250   5.19.2 数值调节钮成员函数 251   5.20 Visual C++ 2010 GroupBox控件简介与开发 251   5.21 Visual C++ 2010 Data Time Picker控件简介与开发 252   5.21.1 创建日期和时间选择器控件 253   5.21.2 访问嵌入的月历控件 253   5.21.3 在日期和时间选择器控件使用自定义格式字符串 254   5.21.4 在日期和时间选择器控件使用回调字段 254   5.21.5 处理日期和时间选择器控件的通知消息 256   5.22 Visual C++ 2010 Month Canlendar控件简介与开发 256   5.22.1 创建月历控件 257   5.22.2 处理月历控件的通知消息 257   5.22.3 设置月历控件的日状态 257   5.23 Visual C++ 2010 Custom控件简介与开发 258   5.23.1 使用MFC方法定制控件必备的几个基本概念 259   5.23.2 定制自定义控件的3种常见方法 260   5.24 Visual C++ 2010 SysLink控件简介与开发 260   5.25 Visual C++ 2010 Split Button控件简介与开发 261   5.26 Visual C++ 2010 Network Address控件简介与开发 262   5.27 Visual C++ 2010 Check Box控件简介与开发 262   5.28 Visual C++ 2010 Radio Button控件简介与开发 264   5.28.1 为单选按钮控件分组 264   5.28.2 获得被选的单选按钮的文本 264   5.29 Visual C++ 2010 MediaPlayer控件简介与开发 265   5.30 小结 266   第二部分 Visual C++ 2010下MFC开发   第6章 计算机测控系统概述 267   6.1 Visual C++ 2010 SDI开发简介 267   6.1.1 建立应用程序基本框架 267   6.1.2 处理视图 267   6.1.3 处理文档 271   6.1.4 串行化处理 274   6.1.5 SDI应用程序编程思路 275   6.2 Visual C++ 2010 MDI开发简介 277   6.2.1 多文档接口 277   6.2.2 生成程序 278   6.2.3 程序类、文件和代码 279   6.2.4 自定义资源 281   6.3 Visual C++ 2010 View开发 282   6.3.1 生成源文件 283   6.3.2 初始化视图类数据成员 283   6.3.3 加入消息处理功能 285   6.3.4 设计程序资源 290   6.3.5 定制MiniDraw窗口 292   6.3.6 程序清单 293   6.4 Visual C++ 2010 EditView开发 298   6.4.1 生成MiniEdit程序 299   6.4.2 修改程序菜单 300   6.4.3 编辑加速键 301   6.4.4 程序清单 303   6.5 Visual C++ 2010 FormView开发 306   6.5.1 自定义FormDemo程序 307   6.5.2 程序清单 314   6.6 Visual C++ 2010 ScrollView开发 319   6.6.1 加入滚动功能 319   6.6.2 坐标换算 319   6.6.3 限制图形大小 322   6.6.4 改变鼠标光标 325   6.7 Visual C++ 2010 HtmlEditView开发 328   6.8 Visual C++ 2010 HtmlView开发 331   6.9 Visual C++ 2010 ListView开发 335   6.10 Visual C++ 2010 RichEditView开发 335   6.11 VisualC++ 2010 TreeView开发 336   6.12 Visual C++ 2010 Office 2007风格文档视图开发框架 337   Visual C++ 2010 Visual Studio   6.13 2008风格文档视图开发框架 342   6.14 Visual C++ 2010 Windows资源管理器风格文档视图开发框架 346   6.15 小结 350   ……   第7章 VisualC++2010MFC应用程序界面与美化   第8章 VisualC++2010MFC文本与字体   第9章 VisualC++2010MFC图形图像编程   第10章 VisualC++2010MFC动态函数链接库   第11章 VisualC++2010MFCActiveX控件   第12章 VisualC++2010MFC文件与注册表操作   第13章 VisualC++2010MFC数据库开发   第14章 VisualC++2010MFC多线程程序设计   第15章 VisualC++2010MFC网络程序设计   第16章 VisualC++2010MFC进程通信   第三部分 VisualC++2010下MFC与CLR进行开发   第17章 VisualC++2010CLR开发基础   第18章 VisualC++2010CLRWindows窗口编程   第19章 VisualC++2010MFC与.NET交互编程   第四部分 发布VisualC++2010程序   第20章VisualC++2010应用程序部署   第五部分 基于Windows7平台用VisualC++2010开发   第21章 VisualC++2010基于Windows7新特性开发
目 录 译者序 前言 第一部分 基础知识 第1章 窗口 2 1.1 窗口和API环境 2 1.1.1 三种类型窗口 2 1.1.2 客户区和非客户区 3 1.2 窗口和MFC环境 4 1.3 怎样应用MFC创建一个窗口 5 1.4 怎样使用MFC销毁一个窗口 9 1.4.1 捆绑到一个已有的窗口 9 1.4.2 窗口类 10 1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商安装的窗口类 14 1.8 其他类型窗口 15 1.9 桌面窗口 16 1.10 小结 16 第2章 类 18 2.1 基类 18 2.1.1 CObject 18 2.1.2 CCmdTarget 19 2.1.3 CWnd 19 2.2 应用程序、框架、文档和视图类 19 2.2.1 CWinApp(O/C/W) 20 2.2.2 CView (O/C/W) 21 2.3 其他用户界面类 22 2.3.1 通用控件类 23 2.3.2 菜单类 23 2.3.3 对话框类 24 2.3.4 控制条类 24 2.3.5 属性类 25 2.4 绘图类 25 2.4.1 设备环境类 25 2.4.2 图形对象类 25 2.5 文件类 26 2.6 数据库类 26 2.6.1 ODBC类 26 2.6.2 DAO类 27 2.7 数据集类 27 2.8 其他数据类 27 2.9 通信类 28 2.10 其他类 29 2.11 小结 31 第3章 消息处理 32 3.1 发送或寄送一个消息 32 3.1.1 发送一个消息 32 3.1.2 寄送一个消息 32 3.1.3 发送一个消息与寄送一个消息 的比较 32 3.2 怎样使用MFC发送一个消息 33 3.3 怎样用MFC寄送一个消息 33 3.4 三种类型的消息 34 3.4.1 窗口消息 34 3.4.2 命令消息 34 3.4.3 控件通知 34 3.5 MFC怎样接收一个寄送的消息 36 3.6 MFC怎样处理一个接收到的消息 36 3.7 处理用户界面的对象 44 3.8 创建自定义窗口消息 45 3.8.1 静态分配的窗口消息 45 3.8.2 动态分配的窗口消息 46 3.9 重定向消息 47 3.9.1 子分类和超分类 47 3.9.2 用MFC子分类窗口 48 3.9.3 重载OnCmdMsg ( ) 49 3.9.4 使用SetWindowsHookEx ( ) 49 3.9.5 使用SetCapture ( ) 49 3.9.6 专有的消息泵 50 3.10 小结 50 第4章 绘图 51 4.1 设备环境 51 4.2 在MFC环境创建一个设备环境 52 4.2.1 屏幕 52 4.2.2 打印机 53 4.2.3 内存 54 4.2.4 信息 54 4.3 绘图例程 55 4.3.1 画点 55 4.3.2 画线 55 4.3.3 画形状 55 4.3.4 形状填充和翻转 55 4.3.5 滚动 56 4.3.6 绘制文本 56 4.3.7 绘制位图和图标 56 4.4 绘图属性 56 4.4.1 设备环境属性 57 4.4.2 画线属性 58 4.4.3 形状填充属性 58 4.4.4 文本绘制属性 58 4.4.5 映像模式 59 4.4.6 调色板属性 62 4.4.7 混合属性 62 4.4.8 剪裁属性 63 4.4.9 位图绘制属性 64 4.5 元文件和路径 65 4.5.1 元文件 65 4.5.2 路径 66 4.6 颜色和调色板 66 4.6.1 抖动色 67 4.6.2 未经抖动色 67 4.6.3 系统调色板 67 4.6.4 使用系统调色板 68 4.6.5 动画色 71 4.7 控制什么时候在哪里绘图 71 4.7.1 处理WM_PAINT 71 4.7.2 只绘制被无效化的区域 72 4.7.3 处理WM_DRAWITEM 72 4.7.4 在其他时间绘图 73 4.8 小结 74 第二部分 用户界面实例 第5章 应用程序与环境 76 5.1 例1 规划MFC应用程序 76 5.2 例2 用AppWizard创建一个MFC 应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用程序屏幕 86 5.6 例6 处理命令行选项 88 5.7 例7 动态改变应用程序图标 91 5.8 例8 提示用户优先选项 93 5.9 例9 保存和恢复用户优先选项 97 5.10 例10 终止应用程序 100 5.11 例11 创建一个启动窗口 101 第6章 菜单 107 6.1 例12 使用菜单编辑器 107 6.2 例13 添加一个菜单命令处理函数 109 6.3 例14 根据当前可视文档动态改 变菜单 110 6.4 例15 启用和禁用菜单命令 111 6.5 例16 复选标记菜单命令 112 6.6 例17 单选标记菜单命令 113 6.7 例18 动态修改菜单 114 6.8 例19 动态修改系统菜单 116 6.9 例20 触发一个菜单命令 117 6.10 例21 创建弹出式菜单 117 第7章 工具栏和状态栏 120 7.1 例22 使用工具栏编辑器 120 7.2 例23 启用和禁用工具栏按钮 122 7.3 例24 为工具栏按钮添加字 123 7.4 例25 非标准工具栏大小 128 7.5 例26 保持工具栏按钮按下 129 7.6 例27 保持工具栏按钮组 一个按钮按下 130 7.7 例28 为工具栏添加非按钮控件 131 7.8 例29 修改应用程序的状态栏 136 7.9 例30 更新状态栏窗格 138 7.10 例31 为状态栏添加其他控件 139 第8章 视图 145 8.1 例32 滚动视图 145 8.2 例33 改变鼠标光标形状 147 8.3 例34 沙漏光标 148 8.4 例35 窗体视图 149 8.5 例36 列表视图 152 8.6 例37 动态分割一个视图 163 第9章 对话框和对话条 166 9.1 例38 使用对话框编辑器 166 9.2 例39 创建一个对话框类 168 9.3 例40 模式对话框 170 9.4 例41 无模式对话框 171 9.5 例42 在无模式对话框的控件间 切换焦点 172 9.6 例43 对话框的动画 173 9.7 例44 消息框 174 9.8 例45 对话条 176 第10章 控件窗口 182 10.1 例46 在任意位置创建一个控 件窗口 182 10.2 例47 用子分类定制一个通用 控件窗口 183 10.3 例48 用超分类定制一个通用 控件窗口 188 10.4 例49 在按钮上放置位图 190 10.5 例50 动态填充一个组合框 192 10.6 例51 排序一个列表控件 194 10.7 例52 分隔线控件 196 第11章 绘图 198 11.1 例53 绘制图形 198 11.2 例54 绘制文本 201 11.3 例55 从任意位置装入一个图 标并绘制 203 11.4 例56 从任意位置装入一个位 图和绘制一个位图 204 11.5 例57 从文件创建一个位图 206 11.6 例58 创建一个自绘位图 211 第三部分 内部处理实例 第12章 消息 215 12.1 例59 添加消息处理函数或重 载MFC类 216 12.2 例60 添加命令范围消息处理函数 219 12.3 例61 重定向命令消息 221 12.4 例62 创建自己的窗口消息 222 第13章 文件、串行化和数据库 225 13.1 例63 访问二进制文件 225 13.2 例64 访问标准I/O文件 227 13.3 例65 访问内存文件 228 13.4 例66 在数据类实现串行化 229 13.5 例67 串行化SDI或MDI文档 235 13.6 例68 按要求串行化 240 13.7 例69 透明地更新串行化的文档 242 13.8 例70 串行化多态类 246 13.9 例71 串行化数据集 248 13.10 例72 访问ODBC数据库 252 13.11 例73 访问DAO数据库 257 第14章 杂类 263 14.1 例74 剪切、拷贝和粘贴文本 数据 263 14.2 例75 剪切、拷贝、粘贴多信 息文本数据 268 14.3 例76 剪切、拷贝和粘贴二进制 数据 273 14.4 例77 数组函数 280 14.5 例78 列表函数 281 14.6 例79 映像函数 283 14.7 例80 系统键盘输入 285 14.8 例81 时间 288 第四部分 打包实例 第15章 库 291 15.1 例82 静态链接C/C++库 291 15.2 例83 动态链接C/C++库 295 15.3 例84 动态链接MFC扩展类库 300 15.4 例85 资源库 303 第五部分 附录 附录A 控件窗口风格 305 附录B 消息、控件通知和消息映像宏 323 附录C 访问其他应用程序类 328 附录D 开发注意事项 330 附录E MFC快速参考指南 339
书籍目录: 第1篇 Visual C#基础编程实例 实例1 C#经典程序--Hello World 实例2 C#的简单输入输出(I/O) 实例3 C#的复杂输入输出(I/O) 实例4 通信录管理与维护 实例5 文件与目录管理 实例6 用户界面上的“Hello,World!” 实例7 组件化“Welcome”程序 实例8 网络上的“Hello World” 实例9 Ref、Out与Params描述符的应用 实例10 C#自动内存管理的应用 实例11 一个有趣栈类的实现 实例12 垃圾收集器管理与应用 实例13 垃圾收集器算法控制与使用 实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 实例21 简单角色类游戏的制作 实例22 旅馆住宿登记情况表制作 实例23 长命名空间的应用 实例24 文件特征计数 实例25 文本框输入数据的验证 第2篇 Visual C#级编程实例 实例26 窗体背景颜色动态变化 实例27 C#属性及应用 实例28 C#属性Metadata的管理与应用 实例29 使用Context属性创建CallThreshold Service 实例30 使用应用程序域 实例31 创建C#组件与客户应用程序 实例32 用OpenFileDialog类浏览或打开文件 实例33 在C#程序获得Win32 API 实例34 从C#调用COM组件 实例35 在C#程序修改HTML文件标题 实例36 下载Web页面 实例37 创建多线程应用程序 实例38 多线程的多次加载 实例39 单个线程同步运行 实例40 多线程同步运行 实例41 线程Thread Relative Static跟踪与实现 实例42 线程池(ThreadPool)的应用 实例43 多线程互斥运行 实例44 多线程时钟应用程序 实例45 监视多线程 实例46 防止多线程应用程序死锁 实例47 文件同步操作与应用 实例48 在COM程序设计使用.NET组件 实例49 文件异步操作与多处理器系统 实例50 获取网络主机IP地址 实例51 C#对话信息框的应用 实例52 在C#快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher组件监视Web服务器 实例56 由颜色名字产生对应颜色 实例57 使用索引指示器分析域名 实例58 C#版本的PingC 实例59 DNS客户程序 实例60 一个有趣的DOS实用程序 实例61 代表元基本应用 实例62 有趣的事件代表元 实例63 随机连续偶数发生事件处理 实例64 有趣的列表框窗体 实例65 数学函数应用 第3篇 Visual C#高级编程实例 实例66 文件夹的文件列表 实例67 读写文本文件 实例68 读写二进制文件 实例69 显示系统日期与时间(1) 实例70 显示差值的日期与时间(2) 实例71 时钟发生器应用 实例72 在.NET程序设计使用ATL 实例73 浏览Internet文件 实例74 在C#应用程序打开浏览器 实例75 显示Internet文件信息 实例76 Puzzle游戏 实例77 MDI窗体菜单设计(1) 实例78 MDI窗体菜单设计(2) 实例79 创建一个C#编辑器 实例80 网络端口扫描器 实例81 深入WinForms-地址簿应用(1) 实例82 深入WinForms--Image Viewer应用程序(2) 实例83 开饭时间提醒器(Meal Reminder) 实例84 服务器端C#实例 实例85 数字时钟设计技术 实例86 自动编译C#程序AutoCompiler 实例87 使用C#与ASP+编写File Uploder 实例88 访问注册表的硬件信息 实例89 设置“开始”菜单 实例90 在“新建”添加自己的文件类型 实例91 显示Exchange软件的客户名称 实例92 读取Windows注册表信息 实例93 自定义AboutBox组件 实例94 自定义控件及应用 实例95 Java与C#混合编程的应用 实例96 C#与C++混合编程的应用 实例97 C#与VB混合编程的应用 实例98 C#组件与C#客户程序编程的应用 实例99 C#与XML联合应用XMLHelper 实例100 在C#部署应用
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 在Popup和Child窗口之间转化(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.zip在ToolBar嵌入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.0在DevStudio\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)程序的源代码,支持对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)

15,979

社区成员

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

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