在资源编辑器窗口中把对话框控件进行了修改,但在运行程序时对话框却是修改之前的状态,为什么???

zebrali 2003-10-19 08:07:05
在资源编辑器窗口中把对话框控件进行了修改,但在运行程序时对话框却是修改之前的状态,为什么???
...全文
33 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hotness28 2003-10-19
  • 打赏
  • 举报
回复
把对话框资源保存
xsc2001 2003-10-19
  • 打赏
  • 举报
回复
将已编译的程序先清除一下,再重新编译一下就行了
  • 打赏
  • 举报
回复
是不是没保存,或者重新编译一下试试
《Visual C++编程技巧精选500例》pdf Visual C++编程技巧精选500例.pdf 第1章 消息框 001 如何创建消息框? 002 如何设置消息框标题? 003 如何使用资源串创建消息框? 004 如何使用资源串动态显示消息框内容? 005 如何使消息框显示问号图标? 006 如何使消息框显示“是/否”按钮? 007 如何使消息框显示“重试/取消”按钮? 第2章 常用控件 008 如何使用滑块控件? 009 如何使用标签控件? 010 如何使用树形控件? 011 如何使用列表控件? 012 如何使用进度条控件? 013 如何使用滚动条控件? 014 如何设置按钮控件标签? 015 如何设置按钮控件字体? 016 如何动态创建按钮控件? 017 如何禁用和启用按钮控件? 018 如何隐藏和显示按钮控件? 019 如何在按钮控件上加载图标? 020 如何在按钮控件上加载位图? 021 如何在程序窗口创建按钮控件? 022 如何限制编辑控件输入的字符类型? 023 如何显示载有RichEdit控件对话框? 024 如何在列表框自动装载磁盘文件列表? 025 如何使1istContro1控件支持整栏选择? 026 如何使用PictureBox控件浏览多种格式的图像? 第3章 通用对话框 027 如何使用字体对话框? 028 如何使用颜色对话框? 029 如何使用页面设置对话框? 030 如何使用查找与替换对话框? 031 如何设置文件保存对话框? 032 如何设置文件对话框标题? 033 如何设置文件对话框过滤器? 034 如何设置文件对话框多重选择功能? 035 如何设置文件对话框打开的目录位置? 036 如何从文件对话框选择文件夹? 037 如何从文件对话框新建文件夹? 038 如何在文件对话框预览位图文件? 039 如何从文件对话框获取文件扩展名? 040 如何从文件对话框获取文件标题? 041 如何获取文件对话框选择的多个文件? 042 如何在程序启动弹出文件打开对话框? 第4章 标题栏与菜单栏 043 如何获取标题栏高度? 044 如何设置标题栏文字? 045 如何获取标题栏文字颜色? 046 如何设置标题栏文字颜色? 047 如何在文档类设置标题栏文字? 048 如何防止在标题栏上显示文档名? 049 如何禁止标题栏的最小化按钮?… 050 如何禁止标题栏的最大化按钮? 051 如何禁止标题栏的关闭按钮? 052 如何获取标题栏的按钮尺寸? 053 如何自定义标题栏? 054 如何获取IE浏览器标题内容? 055 如何取消标题栏的右键系统菜单? 056 如何在标题栏右键菜单增加菜单项? 057 如何动态增加菜单? 058 如何动态删除菜单? 059 如何启用和禁用菜单命令? 060 如何为菜单添加复选标记? 061 如何为菜单添加单选标记? 062 如何动态删除系统菜单项? 063 如何动态增加系统菜单项? 064 如何触发一个菜单命令? 065 如何创建一个弹出式菜单? 066 如何设计自定义快捷菜单? 067 如何在对话框类型的应用程序加载菜单? 068 如何获取菜单栏高度? 069 如何取消应用程序菜单栏? 070 如何取消对菜单状态的限制? 071 如何确定顶层菜单所占的行数? 072 如何在子菜单记录历史文件? 第5章 工具栏与状态栏 073 如何给工具栏分组? 074 如何关闭默认工具栏? 075 如何设置工具栏标题? 076 如何设置工具栏按钮提示? 077 如何关闭工具栏按钮提示? 078 如何启用和禁用工具栏按钮? 079 如何设置下压式工具栏按钮? 080 如何给工具栏按钮设置下拉箭头? 081 如何为工具栏添加动态真彩按钮? 082 如何为工具栏按钮添加文字? 083 如何为IE工具栏添加按钮? 084 如何在工具栏上加载动画? 085 如何在工具栏上加载组合框? 086 如何在工具栏上加载字体组合框? 087 如何使用代码获取工具栏的指针? 088 如何在对话框程序加入工具栏? 089 如何控制工具栏的停靠位置? 090 如何使用对话栏? 091 如何增加状态栏窗格? 092 如何更新状态栏窗格? 093 如何关闭默认状态栏? 094 如何在状态栏上加载图像? 095 如何在状态栏上加载进度条? 096 如何在状态栏上显示滚动文本? 097 如何在状态栏上显示当前间? 098 如何在状态栏上显示鼠标当前位置? 099 如何使用代码获取状态栏指针? 第6章 图标与光标 100 如何设置光标? 101 如何裁剪光标? 102 如何捕捉光标热区? 103 如何创建一个等待光标? 104 如何结束一个等待光标? 105 如何获取默认光标大小? 106 如何装入一个系统预定义光标? 107 如何获取系统图标? 108 如何获取默认图标大小? 109 如何获取应用程序图标? 110 如何设置应用程序图标? 111 如何在系统托盘设置图标? 112 如何直接从文件装入一个图标? 113 如何使应用程序标题栏图标旋转? 第7章 程序窗口 114 如何切分同视图窗口? 115 如何切分多视图窗口? 116 如何判断程序窗口是否为切分窗口? 117 如何创建非矩形窗口? 118 如何实现无标题窗口的拖动? 119 如何将应用程序窗口显示? 049 如何禁止标题栏的最小化按钮?… 050 如何禁止标题栏的最大化按钮? 051 如何禁止标题栏的关闭按钮? 052 如何获取标题栏的按钮尺寸? 053 如何自定义标题栏? 054 如何获取IE浏览器标题内容? 055 如何取消标题栏的右键系统菜单? 056 如何在标题栏右键菜单增加菜单项? 057 如何动态增加菜单? 058 如何动态删除菜单? 059 如何启用和禁用菜单命令? 060 如何为菜单添加复选标记? 061 如何为菜单添加单选标记? 062 如何动态删除系统菜单项? 063 如何动态增加系统菜单项? 064 如何触发一个菜单命令? 065 如何创建一个弹出式菜单? 066 如何设计自定义快捷菜单? 067 如何在对话框类型的应用程序加载菜单? 068 如何获取菜单栏高度? 069 如何取消应用程序菜单栏? 070 如何取消对菜单状态的限制? 071 如何确定顶层菜单所占的行数? 072 如何在子菜单记录历史文件? 第5章 工具栏与状态栏 073 如何给工具栏分组? 074 如何关闭默认工具栏? 075 如何设置工具栏标题? 076 如何设置工具栏按钮提示? 077 如何关闭工具栏按钮提示? 078 如何启用和禁用工具栏按钮? 079 如何设置下压式工具栏按钮? 080 如何给工具栏按钮设置下拉箭头? 081 如何为工具栏添加动态真彩按钮? 082 如何为工具栏按钮添加文字? 083 如何为IE工具栏添加按钮? 084 如何在工具栏上加载动画? 085 如何在工具栏上加载组合框? 086 如何在工具栏上加载字体组合框? 087 如何使用代码获取工具栏的指针? 088 如何在对话框程序加入工具栏? 089 如何控制工具栏的停靠位置? 090 如何使用对话栏? 091 如何增加状态栏窗格? 092 如何更新状态栏窗格? 093 如何关闭默认状态栏? 094 如何在状态栏上加载图像? 095 如何在状态栏上加载进度条? 096 如何在状态栏上显示滚动文本? 097 如何在状态栏上显示当前间? 098 如何在状态栏上显示鼠标当前位置? 099 如何使用代码获取状态栏指针? 第6章 图标与光标 100 如何设置光标? 101 如何裁剪光标? 102 如何捕捉光标热区? 103 如何创建一个等待光标? 104 如何结束一个等待光标? 105 如何获取默认光标大小? 106 如何装入一个系统预定义光标? 107 如何获取系统图标? 108 如何获取默认图标大小? 109 如何获取应用程序图标? 110 如何设置应用程序图标? 111 如何在系统托盘设置图标? 112 如何直接从文件装入一个图标? 113 如何使应用程序标题栏图标旋转? 第7章 程序窗口 114 如何切分同视图窗口? 115 如何切分多视图窗口? 116 如何判断程序窗口是否为切分窗口? 117 如何创建非矩形窗口? 118 如何实现无标题窗口的拖动? 119 如何将应用程序窗口显示? 176 如何终止当前进程? 177 如何获取系统进程? 178 如何终止指定进程? 179 如何在程序启动程序? 180 如何使用事件对象同步进程? 181 如何在两个执行程序进行数据通信? 182 如何使用工作线程? 183 如何正常终止线程? 184 如何异常终止线程? 185 如何获取线程退出码? 186 如何使用线程优先级? 187 如何使用用户界面线程? 188 如何实现多线程多任务? 189 如何使用临界区同步线程? 190 如何调用帮助文件(.chm)? 第10章 字符串 191 如何对字符串进行连接? 192 如何对字符串进行比较? 193 如何从字符串存取字符? 194 如何计算一个字符串的大小? 195 如何快速格式化一个字符串? 196 如何将CString类型转换成int类型? l97 如何将CString类型转换成loat类型? 198 如何将CString的字符串赋值给字符指针? 199 如何折行显示字符串? 200 如何旋转显示字符串? 20l 如何显示星期月份字符串? 202 如何显示包括制表符的字符串? 203 如何使用BIG5显示一个字符串? 204 如何使字符串输出具有立体效果? 205 如何用省略号显示字符串的其余部分? 第11章 文件读写操作 206 如何打开文件? 207 如何关闭文件? 208 如何读文件? 209 如何写文件? 210 如何定位文件? 2ll 如何判断文件大小? 212 如何获取文件错误类型? 213 如何检测文件是否已经发生更改? 214 如何判断文件在磁盘上是否存在? 215 如何读写INI文件? 216 如何创建一个临文件? 217 如何创建一个特大型文件? 218 如何创建一个文本文件? 219 如何删除一个文本文件? 220 如何更名一个文本文件? 221 如何对文本文件进行查找与替换? 222 如何从文本文件读取一个字符串? 第12章 文件与文件夹属-操作 223 如何判断文件只读属性? 224 如何设置文件只读属性? 225 如何判断文件隐藏属性? 226 如何设置文件隐藏属性? 227 如何判断文件归档属性? 228 如何设置文件归档属性? 229 如何取消文件所有属性? 230 如何获取文件大小? 231 如何获取文件类型? 232 如何获取系统所有文件类型? 233 如何获取文件创建间? 234 如何获取文件修改间? 235 如何获取文件访问间? 236 如何设置文件创建间? 237 如何设置文件修改间? 238 如何设置文件访问间? 239 如何获取文件夹创建间? 240 如何获取文件夹修改间? 241 如何获取文件夹访问间? 242 如何设置文件夹创建间? 243 如何设置文件夹修改间? 244 如何设置文件夹访问间? 245 如何判断文件夹真假? 第13章 文件与文件夹系统操作 246 如何复制文件? 247 如何删除文件? 248 如何移动文件? 249 如何更名文件? 250 如何显示文件复制过程对话框? 251 如何复制文件夹? 252 如何创建文件夹? 253 如何删除文件夹? 254 如何更名文件夹? 255 如何创建多层文件夹? 256 如何删除多层文件夹? 第14章 系统控制操作 257 如何隐藏操作系统任务栏? 258 如何取消隐藏操作系统任务栏? 259 如何检索系统任务栏各窗口标题? 260 如何关闭计算机? 261 如何注销当前用户? 262 如何重新启动计算机? 263 如何关闭计算机并关闭电源? 264 如何设置系统启动自运行程序? 265 如何在程序将其他窗口程序调至前台? 266 如何获取当前系统间? 267 如何设置当前系统间? 268 如何计算间差? 269 如何获取系统显示元素的颜色? 270 如何获取系统当前的显示模式? 271 如何获取系统支持的显示模式? 272 如何设置系统当前的显示模式? 273 如何设置桌面墙纸? 274 如何删除桌面快捷方式? 275 如何清空回收站? 276 如何清空IE历史记录? 277 如何清除IE地址栏历史记录? 278 如何添加IE浏览器收藏夹内容? 279 如何使用默认浏览器打开指定网页? 280 如何清除上次登录用户历史记录? 281 如何强制操作系统只执行规定的程序? 282 如何在系统“控制面板/添加删除程序添加程序? 283 如何注册COM服务组件? 284 如何取消COM服务组件注册? 285 如何隐式链接DLL? 286 如何显式链接DLL? 287 如何使用AFX EXT CLASS导出类? 288 如何使用declspec(dllexport)导出DLL函数? 第15章 程序版权信息 289 如何查询程序说明? 290 如何查询程序开发商? 291 如何查询程序内部名称? 292 如何查询程序产品名称? 293 如何查询程序关联注释? 294 如何查询程序注册商标? 295 如何查询程序版权声明? 296 如何查询程序使用语言? 297 如何查询程序原始文件名? 298 如何查询程序私有版本信息? 299 如何查询程序特殊内部版本信息? 300 如何查询程序版本号? 301 如何查询程序产品版本号? 302 如何查询程序内部版本号? 303 如何查询程序产品专用部件号? 304 如何查询程序版本号的主版本号? 305 如何查询程序版本号的次版本号? 306 如何查询程序产品的内部版本号? 307 如何查询程序产品版本号的主版本号? 308 如何查询程序产品版本号的次版本号? 第16章 系统软件信息 309 如何获取用户名称? 310 如何获取计算机名称? 311 如何设置计算机名称? 312 如何获取计算机所有者名称? 313 如何获取计算机所有者单位名称? 314 如何获取操作系统安装序列号? 315 如何获取操作系统的产品名称? 316 如何获取IE浏览器的版本号? 317 如何获取Windows的版本号? 318 如何获取Windows的内建号? 319 如何获取Windows的版本名称? 320 如何获取当前文件夹的位置? 321 如何获取文件夹的根目录位置? 322 如何获取文件夹的上层目录位置? 323 如何获取文件夹的所有文件? 324 如何获取文件夹的所有子文件夹? 325 如何获取启动文件夹位置? 326 如何获取临文件夹位置? 327 如何获取桌面文件夹位置? 328 如何获取字体文件夹位置? 329 如何获取网上邻居文件夹位置? 330 如何获取我的文档文件夹位置? 331 如何获取System文件夹位置? 332 如何获取Windows文件夹位置? 第17章 系统硬件信息 333 如何获取CPU名称? 334 如何获取CPU标识? 335 如何获取CPU制造商名称? 336 如何获取CPU主频? 337 如何获取CPU个数? 338 如何判断CPU是否支持3DNow? 339 如何判断CPU是否支持MMX? 340 如何判断是否提供安全特性? 341 如何判断低档处理器? 342 如何获取显卡BIOS版本号? 343 如何获取显卡BIOS更新日期? 344 如何获取系统BIOS版本号? 345 如何获取系统BIOS更新日期? 第18章 存储设备管理 346 如何获取磁盘序列号? 347 如何获取磁盘卷标名称? 348 如何设置磁盘卷标名称? 349 如何获取磁盘容量大小? 350 如何获取磁盘文件系统名称? 351 如何获取系统所有磁盘驱动器? 352 如何设置磁盘图标? 353 如何隐藏磁盘驱动器? 354 如何判断磁盘驱动器类型? 355 如何启用光驱的自动播放功能? 356 如何指定使用什么程序播放CD? 357 如何在程序打开/关闭光驱? 358 如何获取系统内存的使用情况? 359 如何映射网络驱动器? 360 如何取消网络驱动器映射? 第19章 鼠标及键盘 361 如何禁止交换鼠标左右键? 362 如何判断鼠标左右键是否交换? 363 如何判断系统是否安装鼠标? 364 如何判断鼠标是否有滚轮? 365 如何禁止使用鼠标滚轮? 366 如何获取鼠标按键个数? 367 如何模仿鼠标操作? 368 如何跟踪鼠标当前位置? 369 如何获取鼠标活动范围? 370 如何获取鼠标双击范围大小? 371 如何获取鼠标双击响应速度? 372 如何设置鼠标双击响应速度? 373 如何判断鼠标单击标题栏操作? 374 如何判断鼠标是否与Ctrl键共同操作? 375 如何捕获键盘Home等虚键?. 376 如何设置键盘输入响应速度? 377 如何使用回车键切换输入焦点? 378 如何为应用程序自定义快捷键? 379 如何捕获AR和Shift+Alt组合键? 380 如何捕获Ctrl和Ctrl+Shift组合键? 381 如何捕获Ctrl、Ctrl+Alt和Ctrl+Alt+Shifl组合键? 第20章 声音和视频 382 如何调节系统音量? 383 如何设置背景音乐? 384 如何播放AVI动画文件? 385 如何播放VCD视频文件? 386 如何播放WAV简单声音文件? 387 如何播放系统默认声音文件? 388 如何使用MCI播放WAV声音文件? 389 如何使用MCI播放MIDI声音文件? 第21章 图形和图像 390 如何通过读取位图资源显示位图? 391 如何通过读取位图文件显示位图? 392 如何通过装入位图文件显示位图? 393 如何缩放显示位图? 394 如何截取当前屏幕? 395 如何任意裁剪图片? 396 如何利用掩码位图制作透明图片? 397 如何实现图形的拉伸显示效果? 398 如何通过位图文件直接得到位图大小? 399 如何获取屏幕上某点的颜色? 400 如何设置屏幕上某点的颜色? 401 如何读取与显示JPG等格式图像文件? 402 如何转换图像文件大小? 403 如何转换图像文件格式? 404 如何将彩色图像转换成黑白图像? 405 如何实现图像的底片化效果? 406 如何实现图像的雾化效果? 407 如何实现图像的锐化效果? 408 如何实现图像的柔化效果? 409 如何实现图像的马赛克效果? 410 如何实现图像的百叶窗效果? 411 如何复制图像? 412 如何剪切图像? 413 如何粘贴图像? 414 如何实现画线拉伸效果? 415 如何绘制渐变色图形? 416 如何绘制渐变色文字? 第22章 网络 417 如何初始化Socket? 418 如何创建Socket? 419 如何处理网络监听Socket? 420 如何处理C/S互连? 421 如何处理C/S数据发送? 422 如何处理C/S数据接收? 423 如何实现无连接的通信? 424 如何实现有连接的通信? 425 如何用有连接方式实现网络会议? 426 如何获取网卡地址? 427 如何扫描端口状态? 428 如何进行连续的Ping? 429 如何获取主机名和IP地址? 430 如何搜索局域网内的计算机? 431 如何创建拨号网络? 432 如何检查电子邮件数量? 433 如何发送和接收电子邮件? 434 如何连接FTP服务器? 435 如何获取FTP服务器的文件列表? 436 如何向FTP服务器上传文件? 437 如何从FTP服务器下载文件? 438 如何查询HTTP站点? 439 如何查询FTP站点? 440 如何查询Gopher站点? 第23章 数据库 441 如何使用ODBC连接数据源? 442 如何使用ODBC实现应用程序与数据库记录的交换? 443 如何使用ODBC浏览数据库记录? 444 如何使用ODBC增加数据库记录? 445 如何使用ODBC删除数据库记录? 446 如何使用ODBC修改数据库记录? 447 如何使用ODBC排序数据库记录? 448 如何使用ODBC查询数据库记录? 449 如何使用SQL语句查询排序数据厍记录? 450 如何使用ODBC创建EXCEL文件? 451 如何使用ODBC读取EXCEL文件信息? 452 如何获取系统已经安装的ODBC驱动程序? 453 如何安装Visual C++.NET的MS Server服务管理器桌面引擎? 454 如何在Visual C++.NET创建 MS SQL Server数据库? 455 如何使用.NET类库访问数据库? 456 如何使用DAO新建数据库? 457 如何使用DAO打开数据库? 458 如何使用DAO关闭数据库? 459 如何使用DAO新建数据库表? 460 如何使用DAO打开数据库表? 461 如何使用DAO删除数据库表? 462 如何使用DAO浏览数据库表字段? 463 如何使用DAO增加数据库表字段? 464 如何使用DAO删除数据库表字段? 465 如何使用DAO新建数据库表查询? 466 如何使用DAO浏览数据库表查询? 467 如何使用DAO删除数据库表查询? 468 如何使用DAO自定义记录集类? 469 如何使用DAO浏览数据库记录? 470 如何使用DAO增加数据库记录? 471 如何使用DAO删除数据库记录? 472 如何使用DAO修改数据库记录? 473 如何使用DAO查询数据库记录? 474 如何使用DAO排序数据库记录? 475 如何使用DAO处理数据库异常? 476 如何判断数据集是否允许更新? 477 如何实现ADO对象与数据源的连接? 478 如何导入ADO动态链接库? 479 如何使用ADO对象浏览数据库记录? 480 如何使用ADO对象增加数据库记录? 481 如何使用ADO对象删除数据库记录? 482 如何使用ADO对象修改数据库记录? 483 如何使用ADO对象排序数据库记录? 484 如何使用ADO对象查询数据库记录? 485 如何使用ADO处理数据库异常? 486 如何存取数据库图像字段? 487 如何创建数据库操作事务? 488 如何在程序注册数据源? 489 如何创建ODBC数据源? 490 如何使用SQL模糊查询语句? 491 如何使用SQL语句检索间段? 第24章 开发工具 492 如何设置条件断点? 493 如何设置堆栈大小? 494 如何产生全局惟一标识符? 495 如何删除项目文件的类? 496 如何打开和编辑二进制文件? 497 如何检测代码括号是否匹配? 498 如何查看一个宏的原始定义? 499 如何添加.1ib文件到当前项目? 500 如何调整对话框模板上的控件的Tab键顺序?
运行概述操作系统具有一项称为自动运行的特性。当插入一张带有自动运行菜单程序的光盘到光盘驱动器,系统会自动加载并启动自动运行菜单。使用这项特性,可以为光盘创建一个良好的用户操作界面。例如,通过自动运行菜单,可以运行安装程序(或其它程序)、打开使用文档、运行演示程序、浏览文件夹以及执行多种其它操作。   创建自动运行的光盘如果光盘的根目录下有一个命名为 autorun.inf 的文件,操作系统就会自动加载该文件指定的程序,并作为自动运行菜单将其启动。通常,autorun.inf 文件包括以下几行内容。   字段就是光盘自动运行菜单的程序文件名,icon 字段是光盘显示于资源管理器的图标,可以是一个图标文件,也可以是可执行文件的一个图标资源。如果要创建一张可自动运行的光盘,就必须编写一个作为自动运行菜单的程序,并编辑 autorun.inf 文件。   软件功能使用 AutoPlay Menu Builder,可以方便快捷地创建自动运行菜单。无需任何编程知识,只要通过点击和拖放鼠标,使用内置的控件“画”出菜单界面,并设置好控件属性,程序会帮您完成其它工作。程序会自动创建 autorun.exe、autorun.ico、autorun.inf 以及 autorun.apm 文件,其 autorun.apm 文件是自动运行菜单的数据文件。如果选定了创建可独立运行的执行文件选项,菜单数据会附加在 autorun.exe 文件,意外着您不需要刻录 autorun.apm 文件到光盘。如果需要在菜单运行前安装一些字体,程序还将创建一个名为 FontData 的目录来存放字体文件。请自行尝试一下,您会发现本软件的功能还有许多。   工作选项点击菜单查看->选项,可以设置程序的工作选项。   显示网格在设计窗口上绘制点阵以形成网格对齐控件到网格自动对齐控件到临近的网格同编辑所有选定控件的属性当选定多个控件,使用属性编辑器修改所有控件的属性,或者仅修改第一个控件的属性网格大小设置网格点阵两点之间的距离测试最小化其它窗口测试菜单,最小化主窗口控件栏、属性编辑器、对齐面板、布局预览以及素材库窗口。   创建压缩的数据文件以压缩方式存储数据文件,可以减小文件大小,但需要花费更多的间加载和保存项目。   创建可独立运行的执行文件保存项目附加菜单数据即 autorun.apm 文件的内容到 autorun.exe 文件。激活此选项,则不需要刻录 autorun.apm 文件到光盘上,但仍需要使用 autorun.apm 文件编辑和修改菜单。   项目管理新建项目点击菜单文件->新建或工具栏按钮新建,将会弹出下面的对话框。   键入用于存储新项目的路径,选择新项目需要继承的模板,点击确定按钮即可在指定路径创建一个新项目。关于模板的更多信息,请查阅使用模板。   打开项目点击菜单文件->打开或工具栏按钮打开,选择已经存在的项目文件,则可以加载选定的菜单项目到编辑器。点击菜单文件->重新打开或工具栏按钮打开的下拉列表,可以显示最近打开过的项目列表,并打开其的一个项目。   保存项目点击菜单文件->保存或工具栏按钮保存,可以保存对当前项目所做的修改。   测试项目点击菜单文件->测试或工具栏按钮测试,可以切换设计和测试状态,方便快捷地测试您的工作成果,不需编译。点击菜单文件->外部测试,可以启动项目输出的可执行文件 autorun.exe 进行测试。   保护项目点击菜单文件->口令保护,输入保护口令,则可以要求在打开项目进行编辑输入编辑口令。这个功能可以防止您的菜单项目被别人修改。如果需要禁用口令,在设置口令对话框输入空口令即可。   虚拟驱动器专家虚拟驱动器专家是一个小巧实用的工具。它可以创建映射到目录的虚拟磁盘,就像 DOS 命令 SUBST 一样。比 SUBST 更加强大的是,虚拟驱动器专家拥有一个友好而易于使用的图形用户界面,并且,它能够在系统重新启动自动恢复所有虚拟驱动器。使用它,您可以创建一个虚拟磁盘,用来组织需要刻录到光盘上的数据,并基于此虚拟磁盘创建自动运行菜单项目。可以通过菜单工具->虚拟驱动器专家启动该工具。   独立执行文件转换如果在选项对话框激活了创建可独立运行的执行文件选项,就可以把菜单数据嵌入到 autorun.exe 文件,从而使它脱离菜单数据文件 autorun.apm 运行。   如果您已经丢失了项目的原始数据文件 autorun.apm,但尚留存独立执行文件 autorun.exe,此您可以通过本转换工具将独立执行文件转换为原始项目数据文件。转换后,您就可以打开该数据文件进行编辑。   可以通过菜单工具->独立执行文件转换启动该转换工具。   刻录光盘完成自动运行菜单的制作后,就可以将它刻录到光盘上。将以下文件和目录放到光盘的根目录下。   :菜单程序文件:光盘图标:自动运行配置文件:菜单数据文件,如果在选项对话框激活了创建可独立运行的执行文件选项,则不需要:特殊字体目录使用模板从模板新建项目点击菜单文件->新建或工具栏按钮新建,将会弹出下面的对话框。   键入用于存储新项目的路径,选择新项目需要继承的模板,点击确定按钮即可在指定路径创建一个新项目。   安装模板点击模板->安装菜单,选择模板包文件,即可从 .zip 压缩文件安装模板。   分发模板点击模板->打包菜单,可以将选定的模板打包为 .zip 文件,用于存档或分发给其它用户。   删除模板选定需要删除的模板,按下 DELETE 键,或点击菜单模板->删除,可以删除选定的模板。例外:由于空白菜单是一个虚拟的菜单项,所以不能被删除。   创建模板点击主窗口的菜单文件->另存为模板,将会弹出下面的对话框,帮助您将当前正在编辑的项目保存为新的模板。您需要键入新模板的名称、作者及说明,程序会根据当前视图自动创建预览图像。模板创建完成之后,就能在新建对话框的模板列表找到新的模板。   项目属性点击菜单编辑->项目属性或工具栏按钮项目属性,可以编辑项目的相关属性。   常规图标自定义菜单程序的图标,也即光盘显示于资源浏览器的图标。   光标、热点光标与文本光标自定义菜单程序的光标样式,其,热点光标是动作控件的光标样式,而文本光标为文本框控件的光标样式。   起始页面菜单启动显示的页面。   第一页一直可见一直显示第一页上的内容,无论当前页面是哪一页。   背景音乐选择菜单的背景音乐,支持 MP3/MP2/MP1/OGG/WAV/MID/RMI/XM/IT/MOD/S3M/MTM 等十数种音乐格式。背景音乐将嵌入到数据文件 autorun.apm 。   循环控制:循环播放背景音乐或只播放一次。   自动播放:菜单启动自动播放背景音乐。   自动控制:当菜单窗口激活自动播放背景音乐,而当菜单窗口移到后台自动停止背景音乐。   按下[ESC]键退出当用户按下[ESC]键退出菜单程序。   不在任务栏显示在任务栏隐藏菜单程序。   使用系统信息框弹出信息,使用系统默认的信息框,而不使用程序提供的 Office 风格的信息框。   窗口菜单隐藏“关于”项隐藏菜单窗口系统菜单的关于菜单项。   工具提示当移动鼠标到动作控件上方,可以弹出一条工具提示,并且可以使用漂亮的自定义风格替换系统默认的工具提示风格。   使用自定义工具提示使用自定义风格的工具提示,不选定则使用系统默认的工具提示风格。   方位工具提示相对于鼠标位置的访问。如果指定方位没有足够的屏幕空间用来显示工具提示,会自动调整到其它方位。   背景工具提示的背景风格。   颜色工具提示使用的各种颜色。   外观字体及阴影设置。   测试用来测试自定义风格工具提示的按钮。   延迟指定工具提示的延迟间,包括从鼠标移入控件到显示工具提示的延迟间,以及在鼠标不移出控件的情况下,从显示工具提示到工具提示消失的延迟间。   启动窗口和结束窗口启动窗口是启动自动运行菜单显示的窗口,而结束窗口则是退出菜单显示的窗口。可以在启动窗口和结束窗口使用不规则外观以及淡入淡出特效。测试按钮可以测试启动窗口和结束窗口的实际效果。如果选定了不规则外观,并且载入一幅动态 GIF 图像,启动窗口和结束窗口将表现为极酷的动画窗口。   注意:JPEG 图像不能用来创建不规则外观的窗口,因为 JPEG 是有损压缩格式,没有绝对单一的背景颜色。   另外,未注册版本制作的菜单会显示一个固定的启动窗口,不能修改。   启动需要管理员权限在用户没有管理员权限,弹出一段信息并退出自动运行菜单。   启动运行程序或打开文档在启动菜单前,可以运行一个程序、打开一个文档甚至访问一个网页。如果选定了运行程序或打开文档后退出选项,菜单会在启动其它程序或文档后立即退出,仅仅作为一个启动器的功能。如果选定了等待程序结束选项,菜单会一直等待直到启动的程序或文档退出后蔡会继续运行,但此功能在某些特定情况下可能失效,请自行仔细测试。如果要在启动菜单前访问一个网页,可以在文件名编辑框输入完整的网页地址,而输入 mailto:xxx@yyy.com 则可以启动邮件客户端撰写并发送一封电子邮件。   过期设置给自动运行菜单设置一个过期间,并在过期后显示一段信息。同,可以允许用户输入一个解锁码解除过期限制。注意,本程序不是一个加密工具,这种过期保护是非常弱的,如果需要较强的保护效果,请使用其它的专业工具。   字体如果在自动运行菜单使用了特殊字体,可以让菜单在运行前自动安装它们。如上图所示,左侧列表是菜单使用的所有字体,右侧列表则是需要在菜单运行前自动安装的特殊字体。请将需要安装的字体从左侧列表添加到右侧列表。   注意:仅添加菜单使用的特殊字体,不要添加系统字体。   控件编辑添加控件位于屏幕左侧的控件栏使用图标代表了可以使用在菜单的所有控件。选定一种控件,然后点击设计窗口的目标位置,或者在设计窗口按下鼠标画出一个目标矩形,就可以在设计窗口添加一个新控件。   如果需要添加多个相同类型的控件,可以在选定控件类型按住 SHIFT 键。这样,当添加新的控件之后,控件图标会保持在选定状态。点击控件栏上的箭头图标,可以取消控件图标的选定状态。   双击控件栏上的图标,也可以新建一个相应控件。   选择控件在设计窗口点击一个控件,在它的周围会出现八个小方块,代表它处于选定状态,此,可以对它进行编辑。如果需要同选定多个控件,可以按住 SHIFT 键并点击需要选定的控件,也可以在窗口空白处按下鼠标画出矩形来选定一个范围内的控件。   删除控件选定需要删除的控件,然后点击菜单编辑->删除,或者工具栏上的删除按钮,或者直接按下 DELETE 键。删除选定的控件之后,程序会自动选择当前视图的另一个控件。   克隆控件如果需要创建几个相同的控件,不必依次创建每个控件修改它们的属性。先创建一个控件修改属性,选定它,然后点击菜单编辑->克隆,或者工具栏上的克隆按钮,就可以创建一个完全相同的控件程序会自动选定新创建的克隆控件。您也可以一次选定多个控件并克隆它们。   剪贴板操作您可以剪切或复制选定控件到剪贴板,也可以将剪贴板控件插入到菜单。AutoPlay Menu Builder 使用与大部分 Windows 程序一样的菜单、工具栏按钮以及快捷键来进行剪贴板操作。   移动控件到其它页面点击菜单编辑->移动到页面,可以将选定的控件移动到其它页面。   控件位置与大小在控件上按下鼠标就可以将它拖动到新的位置。选定控件,然后拖动它周围的八个黑色小方块可以改变它的大小。改变控件的位置和大小控件会自动对齐到网格。点击菜单查看->选项可以打开选项对话框,设置网格大小以及是否对齐到网格。点击菜单编辑->对齐到网格,可以将选定的控件手工对齐到网格。菜单编辑->移动到底层和编辑->移动到顶层用来调整控件的前后层次。由于某些特殊原因,滚动文本、文本框、Flash 影片、网页浏览器、媒体播放器这几个控件不能位于其它控件的后面。   您还可以使用快捷键来微调(以一个象素为单位)控件的位置和大小。方向键用来调整控件位置,而 SHIFT+方向键则可调整控件的大小。   菜单编辑->锁定控件可以将选定的控件锁定为当前的位置和大小。菜单编辑->组合控件可以将选定的多个控件进行组合,组合之后,这些控件只能被同选定和移动。   对齐面板菜单查看->对齐面板可以显示或隐藏对齐面板。   使用对齐面板可以将对齐控件窗口,或者使控件之间相互对齐。控件面板的每个按钮都有工具提示。如果您不了解某个特定按钮的功能,可以在该按钮上按下鼠标并保持按下状态,按钮上图像的变化反映了该按钮按下后的效果。松开按钮将会执行对齐操作。如果您不想应用当前操作,可以拖动鼠标到对齐面板外部再松开按键。   控件属性选定控件后,属性编辑器就会显示当前控件的属性。以下控件,热点标签、按钮、图形按钮、炫目标签、炫目文本、形状、文字动画以及图像还具有动作属性。您可以用属性编辑器修改控件的常规属性和动作属性。同选定多个同类控件,就可以同编辑它们的属性。例如,您可以选定所有的按钮,将它们的字体设置为相同的值,或者选定所有的动作控件修改它们的鼠标音效。 对齐面板菜单查看->对齐面板可以显示或隐藏对齐面板。   使用对齐面板可以将对齐控件窗口,或者使控件之间相互对齐。控件面板的每个按钮都有工具提示。如果您不了解某个特定按钮的功能,可以在该按钮上按下鼠标并保持按下状态,按钮上图像的变化反映了该按钮按下后的效果。松开按钮将会执行对齐操作。如果您不想应用当前操作,可以拖动鼠标到对齐面板外部再松开按键。   控件属性选定控件后,属性编辑器就会显示当前控件的属性。以下控件,热点标签、按钮、图形按钮、炫目标签、炫目文本、形状、文字动画以及图像还具有动作属性。您可以用属性编辑器修改控件的常规属性和动作属性。同选定多个同类控件,就可以同编辑它们的属性。例如,您可以选定所有的按钮,将它们的字体设置为相同的值,或者选定所有的动作控件修改它们的鼠标音效。   技巧可以通过控件的右键菜单来访问主菜单的编辑菜单。   动作编辑概述以下控件具有动作属性,热点标签、按钮、图形按钮、炫目标签、炫目文本、形状、文字动画以及图像。使用动作属性,您可以从菜单运行程序、打开文档、播放影片、浏览网页、发送邮件、浏览文件夹以及执行多种其它操作。   动作类型动作类型属性指明当用户单击控件执行何种操作。AutoPlay Menu Builder 支持多种动作类型,它们可以满足大部分的需求。   以下是各种动作类型的详细解释。   无不执行任何操作。   运行程序运行一个程序。   打开文档使用系统关联的程序打开一个文档。   浏览文件夹启动资源管理器并浏览指定文件夹。   浏览网页使用默认浏览器打开一个网站或网页。   发送邮件使用默认的邮件客户端撰写并发送一封电子邮件。   弹出信息框使用漂亮的信息库显示一段信息。   显示图像在弹出窗口显示一幅图像,支持多种显示风格。   启动幻灯放映内建的幻灯放映功能,支持大量图形显示特效。   页面跳转跳转到多页菜单的其它页面。   最小化最小化菜单窗口。   退出退出自动运行菜单。   退出并弹出光盘退出自动运行菜单并弹出光盘。   动作参数指定动作类型之后,还必须指定执行动作的相关参数。不同的动作类型具有不同的参数。   以下是各种动作类型的参数说明。   无无参数。   运行程序第一个参数是需要运行程序的文件名,第二个是需要传递给程序的参数,通常为空。   打开文档需要打开的文档的文件名。   浏览文件夹需要浏览的文件夹路径。   浏览网页网站或网页地址。   发送邮件第一个参数是电子邮件地址,第二个是邮件的主题。   弹出信息框需要显示的信息文本。   显示图像图像:需要显示的图像。   窗口风格:弹出窗口的外观风格。   标题:弹出窗口的标题。   淡入淡出:是否在弹出窗口使用淡入淡出的显示特效。   延迟:淡入淡出特效的延迟间。   如果图像是动态 GIF 图像,窗口风格为不规则外观,且没有激活淡入淡出特效,则图像将以极酷的动画窗口的方式显示。   启动幻灯放映路径:包含需要进行幻灯放映的图像文件的文件夹。   包含子目录:是否递归搜索所有子目录下的图像文件。   随机顺序:以随机顺序显示图像。   显示:幻灯显示窗口的风格与背景颜色。   背景音乐:放映幻灯控制背景音乐的播放与停止。   页面跳转需要跳转到的页面名称。   最小化无参数。   退出无参数。   退出并弹出光盘无参数。   在这几种动作运行程序、打开文档以及浏览文件夹的参数,必须输入文件的全路径名,并可以使用以下三个预定义的宏。   光盘根目录,无论实际的光驱盘符是什么,程序都会进行自动探测。   目录。   目录。   实际上,%CDROM% 宏指向的是 autorun.exe 文件所在的目录,在设计,它指向菜单项目所在的文件夹。刻录光盘,一般都是把 autorun.exe 文件放置在光盘的根目录,因而 %CDROM% 宏也即指向光盘的根目录。   举个例子,如果想打开位于光盘子目录 subdir 下的名为 letter.doc 的文档,就可以输入 %CDROM%\subdirectory\letter.doc 作为参数。您可以从参数编辑框的右键菜单选择这三个宏。在设计,您可以在硬盘上创建与待刻录光盘相同的目录结构,并推荐您使用虚拟驱动器专家创建一个虚拟磁盘,这将帮助您更好地编辑、测试您的菜单。当使用程序提供的文件或目录选择对话框选择位于项目所在目录的文件或目录程序会自动将项目路径转换为 %CDROM% 宏定义。   背景音乐控制鼠标单击执行的额外动作,用来控制背景音乐的播放与停止。   音效对于每一个动作控件,都可以为其指定两个音效,其一是鼠标移入控件范围内的音效,其二是鼠标单击的音效。鼠标移入音效与鼠标单击音效是每个控件独立的,除此之外,还有两个相关属性,公共鼠标移入音效与公共鼠标单击音效,这两个属性为所有的动作控件所公有。如果没有为控件设置独立音效,程序会尝试使用公共音效,除非选定了忽略公共音效选项。使用公共音效可以减少菜单数据的大小。   工具提示当鼠标移入控件范围内控件可以弹出一个工具提示。除了使用系统默认风格的工具提示,您还可以选择一种可高度自定义的漂亮工具提示,请参阅项目属性的工具提示页面。   说明当鼠标移入控件范围内,如果菜单的同一页面有说明显示器控件,则控件的说明文字会显示于说明显示器。请参阅说明显示器进一步了解。   图形说明图形说明类似于说明属性,只是使用图像替换了文字。当鼠标移入控件范围内,如果菜单的同一页面有图形说明显示器控件,则控件的图形说明会显示于图形说明显示器。请参阅图形说明显示器进一步了解。   执行动作前最小化指定是否在执行动作前最小化菜单窗口。   执行动作后退出指定是否在执行动作后退出菜单。   多页菜单概述可以创建、编辑多页菜单。如果菜单包含了太多的内容,可以考虑设计为多页菜单。多页菜单,每一页都使用字符串命名。点击工具栏上的页面切换工具就可以将当前页面设置为指定的页面。   多页菜单具有两个重要的属性。其一是起始页面,指定菜单启动显示的页面。其二是第一页一直可见,指定是否一直显示第一页上的内容,无论当前页面是哪一页。例如,导航按钮等控件就可以放置在第一页,并选定第一页一直可见属性。   动作类型页面跳转可以在菜单运行切换到指定的页面。   添加页面点击菜单页面->添加或工具栏按钮添加页面,输入新页面的名称,就可以新建一个空白页面。新页面将被自动选定为当前页面。   删除页面切换到需要删除的页面,点击菜单页面->删除或工具栏按钮删除页面,可以删除当前页面及其上的所有控件。删除之后,被删除页面旁边的页面将被选定为当前页面。   重命名页面切换到需要重命名的页面,点击菜单页面->重命名,输入新名称,则当前页面被重新命名。   克隆页面切换到需要克隆的页面,点击菜单页面->克隆,输入新页面的名称,可以克隆当前页面,新页面上包含原页面上的所有控件。克隆完成之后,新页面将被自动选定为当前页面。   左移页面点击菜单页面->左移,可以向左移动当前页面。   右移页面点击菜单页面->右移,可以向右移动当前页面。   技巧可以通过页面切换工具的右键菜单来访问主菜单的页面菜单。   素材库概述素材库窗口显示了程序安装目录下 Gallery 子目录的内容。通过这个窗口,您可以轻松访问到这些资源,并把它们添加到菜单。   素材类型素材库窗口显示了六种类型的素材,包括图形按钮、图像、背景、音乐、音效及光标。点击窗口左上角的按钮可以切换当前显示的素材。   查看方式类似于资源管理器,您可以切换素材库的窗口方式。共有五种不同的查看方式,大图标、小图标、列表、详细信息以及缩略图。需要修改查看方式,请访问素材列表视图的右键菜单。   应用素材有两种方法可以将素材应用到菜单(控件或主窗口)。   、选定控件或主窗口,双击需要应用的素材,则素材被应用到选定的控件或主窗口。   、在素材上按下鼠标并拖动到目标控件或主窗口上,松开鼠标,素材被应用到目标控件或主窗口。   如果选定的控件或主窗口不能接受特定的素材,程序会自动创建一个新控件并加载选定的素材。例如,应用图形按钮到主窗口程序会自动创建一个图形按钮,并载入选定的图形按钮外观图像。
前言 第1章 消息框和对话框 1.如何在窗口程序创建消息框 2.如何使用资源字符串设置消息框内容 3.如何在消息框动态显示资源字符串 4.如何设置消息提示框的标题文字 5.如何使消息提示框的标题右对齐 6.如何在消息提示框绘制表格 7.如何在消息提示框设置图标 8.如何在消息提示框显示问号图标 9.如何在消息提示框设置按钮 10.如何在消息提示框显示“是”、“否”按钮 11.如何在消息提示框显示“重试”、“取消”按钮 12.如何设置消息提示框的默认选择按钮 13.如何确定用户在消息框选择的按钮 14.如何设置“文件”对话框的标题文字 15.如何设置“文件”对话框的过滤器 16.如何设置“文件”对话框的初始目录 17.如何设置“文件”对话框的初始文件名 18.如何使“文件”对话框自动添加扩展名 19.如何实现“文件”对话框的多重选择功能 20.如何在“文件”对话框选择多个文件 21.如何从“文件”对话框获取文件标题名 22.如何从“文件”对话框获取文件扩展名 23.如何在“文件”对话框预览位图文件 24.如何创建一个文件“保存”对话框 25.如何在程序启动弹出“文件”对话框 26.如何从“文件夹”对话框选择文件夹 27.如何在“文件夹”对话框新建文件夹 28.如何使用“颜色”对话框设置颜色 29.如何在“颜色”对话框显示帮助按钮 30.如何禁止显示“颜色”对话框的自定义颜色 31.如何禁止“颜色”对话框的自定义颜色按钮 32.如何使用“字体”对话框设置字体和颜色 33.如何使用“查找与替换”对话框 34.如何显示操作系统默认的“关于”对话框 第2章 常用控件和组件 35.如何设置按钮控件的标签文本 36.如何设置按钮控件的显示字体 37.如何动态禁用和启用按钮控件 38.如何动态隐藏和显示按钮控件 39.如何在按钮控件上动态加载图标 40.如何在按钮控件上动态加载位图 4 1.如f可制作图标和文本共存的按钮 42.如何制作不规则的多边形按钮 43.如何制作GIF动画效果的按钮 44.如何制作AVI视频效果的按钮 45.如何在程序动态创建按钮控件 46.如何在视图窗口创建按钮控件 47.如何获取鼠标指向的按钮控件标题 48.如何创建文本和颜色共存的ComboBox 49.如何创建自动完成列表项的ComboBox 50.如何使ComboBox控件自动适应列表项 5l.如何使ComboBox控件自动装入文件名列表 52.如何在编辑框限制输入的字符类型 53.如何为编辑框添加自动完成匹配功能 54.如何设置编辑框的背景颜色和文本颜色 55.如何使编辑框的宽度自动适应窗体大小 56.如何获取在编辑框选择的文本内容 57.如何获取在编辑框显示的文本行数 58.如何重置编辑框默认的右键菜单 59.如何显示载有RichEdit控件对话框 60.如何在RichEdit实现查找和定位字符 61.如何在RichEdit混合显示图片和文本 62.如何使List列表控件支持整行选择 63.如何使用List列表控件填充表格数据 64.如何使用数据库记录填充List列表控件 65.如何创建单元格可编辑的List列表控件 66.如何在ListBox查找指定的字符串 67.如何为超长的ListBox列表项添加提示 68.如何将ListBox转换成CheckListBox 69.如何在视图窗口绘制ListBox控件 70.如何使用Progress控件显示完成进度 71.如何使用Scroll控件控制滚动范围值 72.如何使用Slider控件控制滑动刻度值 73.如何使用Tab标签页(选项卡)控件 74.如何使用Tree控件显示目录树形结构 75.如何为树控件的子节点添加复选功能 76.如何为控件添加浮动提示窗口功能 77.如何使用回车键切换窗体控件焦点 78.如何遍历应用程序窗体的各个控件 79.如何使窗体控件跟随鼠标移动而移动 80.如何设置静态文本控件的背景和文本颜色 81.如何通过控件实现鼠标拖动文本效果 第3章 标题栏和菜单栏 82.如何获取程序窗口标题栏的高度 83.如何获取程序窗口标题栏的按钮尺寸 84.如何获取程序窗口标题栏的文字 85.如何获取程序窗口标题栏的文字颜色 86.如何设置程序窗口标题栏的文字颜色 87.如何在窗口标题栏滚动显示文字 88.如何在对话框程序设置标题栏文字 89.如何在单文档程序设置标题栏文字 90.如何禁止在窗口标题栏上显示文档名 91.如何自定义单文档程序窗口的标题栏 92.如何取消单文档程序标题栏的右键菜单 93.如何隐藏或显示应用程序的标题栏 94.如何获取IE浏览器窗口的标题栏文字 95.如何修改IE浏览器的标题栏内容 96.如何禁止标题栏响应鼠标双击事件 97.如何在标题栏右键菜单新增菜单项 98.如何禁止单文档程序的关闭按钮 99.如何禁止单文档程序的最大化按钮 100.如何禁止单文档程序的最小化按钮 101.如何获取顶层菜单所占的行数 102.如何获取单文档程序菜单栏的高度 103.如何获取菜单项的标题文本内容 104.如何以渐变色绘制选择的菜单项 105.如何在组菜单项的左侧绘制纵向标题 106.如何在菜单项显示图标和文本 107.如何在单文档程序主菜单删除菜单 108.如何在单文档程序主菜单增加菜单 109.如何启用和禁用主菜单组的子菜单 110.如何删除单文档程序的主菜单 111.如何根据数据库记录动态创建菜单 112.如何取消无消息响应菜单的状态限制 113.如何显示或隐藏菜单项的复选标记 114.如何创建单选按钮效果的菜单组 115.如何在“最近的文件”子菜单显示记录 116.如何在视图窗口创建弹出式跟踪菜单 117.如何在视图窗口创建上下文快捷菜单 118.如何禁止运行默认系统菜单按钮命令 119.如何设置默认系统菜单的字体为粗体 120.如何为默认系统菜单文字添加下划线 121.如何增加对话框应用程序的系统菜单项 122.如何删除对话框程序的系统菜单项 l23.如何在对话框应用程序加载菜单 124.如何为不同控件添加不同的右键菜单 125.如何在操作系统任务栏上添加托盘菜单 126.如何触发操作系统的“开始”菜单 127.如何隐藏IE浏览器的右键菜单组 第4章 工具栏和状态栏 128.如何获取工具栏的图标资源 129.如何在工具栏上设置背景图像 130.如何在工具栏上加载动画窗口 131.如何在工具栏上加载组合框控件 132.如何在工具栏上加载孚体组合框 133.如何为工具栏添加动态真彩按钮 134.如何为工具栏按钮设置下拉箭头 135.如何为工具栏按钮添加下压效果 136.如何在工具栏上显示图标和文字 137.如何设置工具栏按钮的标题文字 138.如何设置工具栏按钮的提示信息 139.如何为对话框工具栏按钮添加提示 140.如何隐藏工具栏按钮的提示信息 141.如何在工具栏上增加删除按钮 142.如何动态隐藏或显示工具栏按钮 143.如何动态启用或禁用工具栏按钮 144.如何动态改变工具栏按钮的位置 145.如何对工具栏的按钮进行分组 146.如何在对话框程序加载工具栏 147.如何隐藏或显示应用程序的工具栏 148.如何在程序窗口停靠工具栏 149.如何使用对话栏实现工具栏效果 150.如何在IE浏览器工具栏上添加按钮 l51.如何使用代码设置工具栏图标 152.如何使用代码获取工具栏指针 153.如何使用代码获取状态栏指针 154.如何隐藏或显示应用程序状态栏 155.如何在状态增加新的窗格 156.如何更新状态栏窗格的显示内容 157.如何同步状态栏与对话框窗体的改变 158.如何在状态栏窗格显示当前间 159.如何在状态栏窗格显示鼠标位置 160.如何在状态栏窗格滚动显示文本 161.如何在状态栏窗格加载进度条 162.如何在状态栏窗格加载图像 163.如何在状态栏窗格播放视频动画 第5章 光标和图标的应用 164.如何获取系统默认的光标大小 165.如何装入操作系统预置的光标 166.如何设置当前程序显示的光标 167.如何创建沙漏效果的等待光标 168.如何使用十字光标定位画线坐标 169.如何使用动画文件设置程序光标 170.如何捕捉光标指向的热区范围 171.如何将光标限制在指定范围内 172.如何获取光标当前的活动范围 173.如何获取系统默认的图标大小 174.如何获取可执行文件的图标 175.如何提取动态链接库的图标 176.如何提取图标文件的图标 177.如何以发送消息方式设置图标 178.如何使程序标题栏的图标旋转 179.如何在操作系统托盘设置图标 第6章 程序窗口界面 180.如何创建一个向导式的对话框窗体 181.如何创建一个属性页的对话框窗体 182.如何创建列表视图类型的程序窗体 183.如何创建不规则的对话框窗体 184.如何创建圆角状的非矩形窗体 185.如何使用文字线条填充窗体轮廓 186.如何根据图片的形状创建程序窗体 187.如何在窗体创建切分多视图窗口 188.如何在窗体创建切分同视图窗口 189.如何判断程序窗体是否为切分窗体 190.如何设置单文档程序窗体的背景颜色 191.如何在对话框窗体创建渐变色背景 192.如何随机更换对话框窗体的背景图像 193.如何设置HTML对话框窗体的背景图像 l94.如何获取默认的程序窗体边界宽度 195.如何获取窗体水平滚动条箭头宽度 196.如何获取窗体垂直滚动条箭头宽度 197.如何设置多文档程序的主窗口标题 198.如何设置多文档程序的子窗口标题 199.如何设置多文档程序的主窗口图标 200.如何设置多文档程序的子窗口图标 201.如何限制多文档程序窗口的大小 202.如何禁止用户拖动标题栏移动窗体 203.如何闪烁应用程序窗体的标题栏 204.如何定制窗体的边框线和标题栏 205.如何拖动没有标题栏的程序窗体. 206.如何拖动非标题栏区域移动窗体 207.如何拖动对话框主窗体移动程序 208.如何动态隐藏或显示应用程序窗体 209.如何动态移动和改变程序窗体的位置 210.如何动态改变应用程序窗口的大小 211.如何限制改变应用程序窗口的大小 212.如何限制应用程序窗口的缩放范围 213.如何固定单文档程序窗体的大小 214.如何使用网页作为程序的主窗体 215.如何发送消息最大化显示程序窗口 216.如何发送消息最小化隐藏程序窗口 217.如何发送消息还原(恢复)程序窗口 218.如何使MDI程序窗口最大化启动 219.如何使SDI程序窗口最大化启动 220.如何使SDI程序窗口最小化启动 221.如何以不同方式居显示程序窗口 222.如何使单文档程序窗口最顶层显示 223.如何实现全屏显示应用程序窗口 224.如何使程序窗口以任意透明度显示 225.如何透明显示程序窗口的部分区域 226.如何将程序窗口缩放到托盘显示 227.如何获取在任务栏显示的窗口程序 228.如何将其他窗口程序调至前台显示 229.如何以淡入的效果显示程序窗口 230.如何以淡出的效果隐藏程序窗口 231.如何以扩展的效果显示程序窗口 232.如何以动画收缩效果隐藏程序窗口 233.如何以扩展收缩效果展开程序窗口 234.如何以异步方式控制显示程序窗口 235.如何设置对话框程序窗口的启动位置 236.如何在上次关闭位置启动程序窗体 237.如何显示和关闭非模式对话框 238.如何在对话框程序加入闪屏效果 239.如何在单文档程序加入闪屏效果 240.如何使程序窗口自动适应图像尺寸 241.如何使用桌面区域填充程序窗口 242.如何在程序视图窗口添加插入符 243.如何实现QQ抽屉导航效果的界面 244.如何使用树形视图导航程序界面 第7章 程序管理和控制 245.如何捕获按下的Home等功能键 246.如何捕获按下的Air或Shift+Alt组合键 247.如何捕获按下的Ctrl或Clrl+Alt组合键 248.如何捕获按下的Ctrl或Ctrl+Shift组合键 249.如何捕获用户按下键盘的任一按键 250.如何使用钩子技术监视键盘的按键操作 251.如何使用小键盘数字键模拟鼠标单击 252.如何禁止使用Esc键关闭对话框程序 253.如何禁止使用Air+F4组合键关闭程序 254.如何使用回车键切换编辑框的输入焦点 255.如何为应用程序自定义加速键 256.如何创建热键及其消息处理函数 257.如何判断是否同按下了鼠标键和Ctrl键 258.如何判断鼠标按键是否单击了标题栏 259.如何跟踪显示鼠标移动的当前位置 260.如何在桌面上创建应用程序快捷方式 261.如何查询快捷方式所属的源程序名称 262.如何禁止在任务栏显示单文档程序标题 263.如何禁止多文档程序启动创建新文档 264.如何直接以发送消息方式关闭程序 265.如何重定向菜单消息命令到对话框 266.如何添加命令响应范围消息处理函数 267.如何在应用程序创建自定义消息 268.如何在应用程序寄送自定义消息 269.如何使用定器响应间隔发生的操作 270.如何使用互斥量禁止运行多个实例 271.如何使用映射文件禁止运行多个实例 272.如何在应用程序执行其他应用程序 273.如何查找当前系统停止响应的程序 274.如何判断指定窗口程序是否已经运行 275.如何使单文档程序启动显示对话框 276.如何在程序运行禁止关闭计算机 277.如何在关闭单文档程序给予提示 278.如何处理Windows程序的命令行参数 279.如何在应用程序运行命令行命令 280.如何获取执行程序的版权声明信息 281.如何创建最简单的MFC应用程序 282.如何使:MFC程序架构支持一档多视 283.如何在MFC:程序浏览PDF格式文件 第8章 打印机和打印实现 第9章 进程和线程管理 第10章 文件读写操作 第11章 文件和文件夹管理 第12章 字符串和数据转换 第13章 操作系统维护 第14章 计算机设备管理 第15章 文字和图像显示 第16章 音频和视频 第17章 网络通信 第18章 数据库管理 第19章 数据库访问 第20章 数据库查询 第21章 Word和Excel应用 第22章 WMI查询和管理 第23章 注册表综合应用
标准Windows应用程序窗口一般为带有标题栏的浅灰色矩形外观,因而“异形”对话框/窗口也主要是颜色与外形上动手脚。改变背景颜色 改变对话框窗口)的背景颜色是最简单的改变Windows应用程序外观的方法,根据Windows创建与管理机理,一般有两种方法。一种是处理WM_CTLCOLOR消息,首先创建所选背景颜色的刷子,然后调用SetBkColor()或SetDialogBkColor()以所创建的刷子来绘制窗口对话框的背景。需要重画窗口或对话(或对话的子控件,Windows向对话发送消息WM_CTLCOLOR,应用程序处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。另外一种是响应Windows的WM_ERASEBKGND消息,Windows向窗口发送一个WM_ERASEBKGND消息通知该窗口擦除背景,可以使用VC++的ClassWizard重载该消息的缺省处理程序来擦除背景(实际是用刷子画),并返回TRUE以防止Windows擦除窗口。2.改变窗口外形通过使用新的SDK函数SetWindowRgn(),可以将绘画和鼠标消息限定在窗口的一个指定的区域,因此实际上是使窗口成为指定的不规则形状(区域形状)。“区域”是Windows GDI一种强有力的机制,区域是设备上的一块空间,可以是任意形状,复杂的区域可以由各个小区域组合而成。Windows内含的区域创建函数有CreateRectRgn()、CreatePolyRgn()、CreatePolygonRgn()、CreateRoundRectRgn()和CreateEllipticRgn(),再通过CombineRgn()来组合区域,即可得到复杂形状的区域,获得复杂形状的窗口外形。通过上面的方法虽然可以得到“异形”窗口,但感觉颜色单调,外形也不够“COOL”,能否获得更酷的“异形”对话框/窗口呢?回答是肯定的。下面就介绍利用位图和蒙板创建“异形”对话框/窗口的方法。3.利用位图创建异形对话框窗口利用位图创建异形对话框原理是根据象素的颜色来进行“扣像”处理,对所有非指定颜色象素区域进行区域组合。利用这一技术,实际上就是实现对话框/窗口的位图背景,并且对指定的颜色区域进行透明处理。下面就以透明位图为背景的对话框为例来说明:首先用绘图软件如PhotoShop绘制编辑一幅拟做对话框背景用的图片,用BMP格式保存,假设存为Back.Bmp。需要说明的是,虽然Visual C++集成开发环境的资源编辑器只能编辑不超过16色的位图,但完全我们可以以真彩色方式存储,不必理会Visual C++的警告。下一步是用Visual C++的AppWizard创建一个基于对话框的应用程序假定命名为Trans。用资源编辑器引入背景图片Back.Bmp,如果是高彩色,不必理会出现的警告信息,点击OK确认即可。为了明确,修改默认的资源ID标识IDB_BITMAP1为IDB_BACKBMP。然后修改对话框的Style为Popup,Border为None,如图1 。图1向CTransDlg类添加区域处理功能模块void CTransDlg::SetupRegion(CDC *pDC /*对话框窗口DC*/, UINT BackBitmapID /*背景位图资源ID*/, UINT MaskBitmapID /*区域处理位图资源ID*/, COLORREF TransColor = 0x00000000 /*透明颜色值,默认为黑色*/)。到目前为止,我们暂认为MaskBitmapID等同于BackBitmapID。其核心工作是根据MaskBitmapID指示位图的象素颜色进行区域组合。完整的代码如下:void CTransDlg::SetupRegion(CDC *pDC /*对话框窗口DC*/, UINT BackBitmapID /*背景位图资源ID*/,UINT MaskBitmapID /*区域处理位图资源ID*/,COLORREF TransColor /*透明颜色值*/){CDC memDC;CBitmap cBitmap;CBitmap* pOldMemBmp = NULL;COLORREF cl;CRect cRect;UINT x, y;CRgn wndRgn, rgnTemp;//取得窗口大小GetWindowRect(&cRect);//背景位图资源IDm_BackBitmapID = BackBitmapID//装载位图cBitmap.LoadBitmap(MaskBitmapID);memDC.CreateCompatibleDC(pDC);pOldMemBmp = memDC.SelectObject(&cBitmap);//首先创建默认的完整区域为完整的窗口区域wndRgn.CreateRectRgn(0, 0, cRect.Width(), cRect.Height());//下面的两层循环为检查背景位图象素颜色,进行透明区域处理;//当象素颜色为指定的透明值,即将该点从区域剪裁掉。//其用到的几个成员变量m_MaskLeftOff、m_MaskTopOff、//m_MaskRightOff、m_MaskBottomOff、m_FrameWidth//和m_CaptionHeight,其作用后面再作说明,此可全部当作0来处理。for(x= m_FrameWidth+m_MaskLeftOff;x<=cRect.Width() - m_FrameWidth-m_MaskRightOff; x++){for(y = m_CaptionHeight+m_MaskTopOff; yBitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRC/DownloadFiles\a\2001-10-12\COPY);if (pOldMemBmp) memDC.SelectObject( pOldMemBmp );//删除系统却省的OnEraseBkgnd功能//return CDialog::OnEraseBkgnd(pDC);return TRUE;}接下来是在WM_PAINT的消息处理函数OnPaint()添加代码。由于当背景位图比较大进行区域处理比较耗,所以只在启动进行一次处理。一种方法是OnInitDialog()处理,但这样会在从启动程序窗口出现有相当的延迟,易引起程序尚未启动的误解。再一种方法就是在OnPaint()处理,但为了避免重复处理,可以加上一个判断标志。以下是OnPaint()的代码,正体为AppWizard生成,粗体为自己添加内容。void CTransDlg::OnPaint() {if (IsIconic()){……}else{if(m_nFirstRun){ //首次运行标志//修改鼠标光标为等待方式BeginWaitCursor();//设置背景区域SetupRegion(GetWindowDC(), 计算机教程用VC++实现异形窗口.来自www.itwen.comIT WEN计算机教程网 IDB_BACKBMP, IDB_BACKBMP, 0x00FFFFFF /*白色*/);//恢复鼠标光标为正常模式EndWaitCursor();m_nFirstRun = 0;}CDialog::OnPaint();}}剩下的工作就是根据背景位图的大小来设置对话框窗口的大小和位置,这可以在OnInitDialog()通过调用MoveWindow()来实现。再添加一些变量的声名和初始化,即可编译运行。图2为运行结果示例:图24.进一步的讨论前面实现了单一模式的异形对话框,但有些情况下又需要不同的样式,如有标题栏、边框等,或者只作局部的处理,这就是前面两个成员变量m_FrameWidth和m_CaptionHeight作用,通过在OnInitDialog()判断窗口样式,使m_FrameWidth和m_CaptionHeight取不同的值。这部分的代码为:BOOL CTransBmpDlg::OnInitDialog(){……// TODO: Add extra initialization herem_nFirstRun = 1;//数据设置,窗口左上角坐标:m_Left=0,m_Top=0 //背景位图宽高:m_Width=535,m_Height=105SetSize(0, 0, 535, 105);//蒙板处理区域与窗口边框的距离m_MaskLeftOff=m_MaskTopOff=m_MaskRightOff=m_MaskBottomOff=0;//窗口边框与标题栏象素值m_FrameWidth = m_CaptionHeight = 0;//取得窗口样式LONG style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);//如保留窗口风格样式,则根据不同的窗口边框类型    //选取不同的m_FrameWidth和m_CaptionHeight值, //也可以根据处理位置的需要进行付值if((style & WS_BORDER) == WS_BORDER)m_FrameWidth = ::GetSystemMetrics(SM_CXBORDER);if((style & WS_THICKFRAME) == WS_THICKFRAME)m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);if((style & DS_MODALFRAME) == DS_MODALFRAME)m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);if((style & WS_CAPTION) == WS_CAPTION){m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);m_CaptionHeight = ::GetSystemMetrics(SM_CYSMCAPTION);}m_CaptionHeight += m_FrameWidth * 2;//重置窗口的位置和大小MoveWindow(m_Left, m_Top, m_Width + m_FrameWidth * 2, m_Height + m_CaptionHeight, TRUE);……return TRUE; // return TRUE unless you set the focus to a control}另外,为进一步增加灵活性,使窗口样式不仅仅受背景位图颜色的控制。通过指定SetupRegion()的MaskBitmapID 为一个我们称之为“蒙板”的双色位图(多色彩也可以,但一般没有必要),即可实现需要的操作。图4为在同一背景位图上,通过图3的蒙板位图实现的效果,并且增加了对话框窗体的边框和标题栏属性。图3图4利用这种蒙板技术,可以创建出任意形状的窗口,而与背景位图无关。需要注意的是,对于对话框控件如按钮等,如处在或部分处在通明区域,则通明区域部分一并被剪裁掉,是否剪裁和剪裁位置与大小,利用蒙板可以很方便地进行控制。需要特别指出的是,SetWindowRgn()所指定的区域是针对整个窗口的,而Bitblt()/ StretchBlt()的输出区域是针对于客户区,两者在定位上是不同的,编程应加以注意并灵活应用,这也是前面之所以设置边框大小等变量的原因。5.结束语这种异形窗口的创建不仅适应于对话框,而且适应于所有的基于CWnd类的派生窗口。采用这一方法,你可以创建出任何只要你能够画出的窗体,实现只要可以画出,就可以做出的目标。本文代码在Visual C++ 5.0、6.0下调试通过,运行正常,操作系统为Windows98SE。
第一部分 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主要特点与新特性 3 1.4 Visual C++ 2010开发环境操作指南 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++语言标准(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风格程序分析 85 2.6 MFC新功能——Visual Studio风格程序分析 90 2.7 MFC新功能——Windows资源管理器风格程序分析 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 在列表控件滚动、排列、排序和查找 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 6.13 Visual C++ 2010 Visual Studio 2008风格文档视图开发框架 342 6.14 Visual C++ 2010 Windows资源管理器风格文档视图开发框架 346 6.15 小结 350 第7章 Visual C++ 2010 MFC应用程序界面与美化 351 7.1 应用程序窗口风格美化 351 7.1.1 借助ActiveSkin美化窗口 351 7.1.2 修改窗口外观 352 7.2 应用程序窗口图标与背景修改 359 7.2.1 修改窗口图标 359 7.2.2 修改背景 360 7.3 工具栏编程与美化 365 7.3.1 创建工具栏 365 7.3.2 在工具栏添加、删除按钮 366 7.3.3 从对话框创建工具栏 368 7.4 状态栏编程与美化 370 7.4.1 创建状态栏 370 7.4.2 在状态插入进度条 370 7.5 鼠标光标编程 371 7.5.1 鼠标光标编程步骤 371 7.5.2 鼠标的消息处理机制 373 7.5.3 示例 374 7.6 创建启动界面 376 7.7 创建特效窗口启动应用程序 378 7.8 创建特效窗口关闭应用程序 378 7.9 小结 383 第8章 Visual C++ 2010 MFC文本与字体 384 8.1 CFont字体类简介 384 8.1.1 CFont字体类成员介绍 384 8.1.2 CFont字体类初始化函数 385 8.1.3 其他成员介绍 390 8.2 创建文本插入符与图片插入符 391 8.2.1 创建文本插入符 391 8.2.2 创建图片插入符 394 8.2.3 创建随鼠标移动的插入符 396 8.3 输出文字与字体格式 397 8.3.1 输出固定文字 397 8.3.2 设定输出字体的格式 398 8.3.3 字符输入 399 8.4 输出彩色文字与变色文字 404 8.4.1 DrawText()函数和字符串资源 404 8.4.2 定器和变色文字 408 8.5 小结 410 第9章 Visual C++ 2010 MFC图形图像编程 411 9.1 Windows绘图简介 411 9.1.1 设备描述表 411 9.1.2 绘图属性 412 9.1.3 元文件和路径 412 9.1.4 颜色和调色板 412 9.1.5 图形设备接口函数 413 9.2 Windows屏幕绘图简介 414 9.2.1 窗口客户区 414 9.2.2 映射模式 414 9.2.3 图形刷新 416 9.3 微软GDI绘图简介 416 9.3.1 GDI基础 416 9.3.2 GDI结构 417 9.3.3 GDI函数调用 417 9.3.4 GDI基本图形 418 9.4 GDI笔绘图 419 9.4.1 CPen类简介 419 9.4.2 使用GDI绘制线条 419 9.4.3 使用CPen类绘制指定的线条 422 9.4.4 绘制连续的线条 424 9.5 GDI画刷绘图 425 9.5.1 CBrush类介绍 426 9.5.2 CBrush类简单画刷的实现 429 9.5.3 CBrush类位图画刷的实现 430 9.5.4 透明画刷的实现 431 9.6 小结 433 第10章 Visual C++ 2010 MFC动态函数链接库 434 10.1 动态函数链接库简介 434 10.1.1 什么是动态函数链接库 434 10.1.2 动态函数链接库的优点 435 10.1.3 动态函数链接库的起源 436 10.1.4 动态函数链接库的原理 436 10.2 调用动态函数链接库 436 10.2.1 静态链接 436 10.2.2 动态链接 438 10.3 Dll的框架简介 439 10.3.1 DllMain()函数简介 439 10.3.2 Dll的导出函数 439 10.4 创建MFC Dll范例 440 10.4.1 建立MFC Dll工程 440 10.4.2 添加实现代码 442 10.4.3 编译并调用 443 10.5 创建Win32 Dll范例 443 10.5.1 建立Win32工程 443 10.5.2 添加动态链接库代码 444 10.5.3 编译工程 444 10.6 创建资源Dll范例 445 10.6.1 建立MFC Application工程 445 10.6.2 建立资源Dll 445 10.6.3 加载资源Dll 446 10.7 hook技术 446 10.7.1 hook函数类型 446 10.7.2 使用hook函数 449 10.7.3 hook鼠标 449 10.7.4 hook键盘 450 10.8 小结 452 第11章 Visual C++ 2010 MFC Activex控件 454 11.1 Activex控件简介 454 11.2 Activex控件测试与注册 455 11.2.1 Activex控件的测试 455 11.2.2 Activex控件的注册 457 11.3 MFC Activex控件向导 458 11.4 Activex控件属性开发 458 11.4.1 添加常用属性 459 11.4.2 添加自定义属性 460 11.4.3 高级属性实现 460 11.4.4 访问环境属性 461 11.5 Activex控件事件开发 461 11.5.1 添加常用事件 462 11.5.2 添加自定义事件 463 11.6 Activex控件方法开发 464 11.6.1 添加常用方法 465 11.6.2 添加自定义方法 465 11.6.3 从方法返回错误代码 466 11.7 完整Activex控件范例 467 11.7.1 创建工程 467 11.7.2 clock控件的实现 469 11.7.3 添加常用属性 470 11.7.4 添加自定义属性 473 11.7.5 添加方法 474 11.7.6 添加常用事件 475 11.7.7 添加自定义事件 476 11.8 调用Activex控件 477 11.9 小结 478 第12章 Visual C++ 2010 MFC文件与注册表操作 479 12.1 文本操作串行化 479 12.1.1 文档类serialize()函数 479 12.1.2 CArchive对文件进行读写 482 12.1.3 文档操作串行化代码分析 485 12.2 CFile类 492 12.2.1 打开文件操作 493 12.2.2 读写文件操作 494 12.2.3 定位文件操作 496 12.2.4 关闭文件操作 497 12.2.5 异常操作 497 12.2.6 文件管理操作 498 12.3 .ini文件读写操作 500 12.4 注册表读写操作 502 12.4.1 注册表简介 502 12.4.2 注册表API 504 12.4.3 访问并修改注册表 507 12.5 小结 509 第13章 Visual C++ 2010 MFC数据库开发 510 13.1 数据库基本知识 510 13.2 SQL语言的基础知识 511 13.3 ODBC访问数据库 512 13.3.1 注册ODBC数据库 512 13.3.2 创建一个MFC的ODBC程序 514 13.3.3 程序结构分析 515 13.3.4 在视图上显示数据库查询结果 520 13.3.5 对查询结果排序及设置查询条件 524 13.3.6 动态设置查询条件并更新查询结果 527 13.4 ODBC更新数据库 532 13.5 ODBC访问SQL server 540 13.6 ado数据库访问 543 13.6.1 ado数据库访问概述 543 13.6.2 在Visual C++使用ado编程 546 13.7 ado访问SQL server数据库 556 13.8 小结 556 第14章 Visual C++2010 MFC多线程程序设计 557 14.1 进程和多线程的概念 557 14.2 线程的创建 558 14.2.1 创建工作者线程 558 14.2.2 创建用户界面线程 559 14.3 线程的终止 560 14.4 设置线程的优先级 562 14.5 暂停及重新启动线程 563 14.6 线程间的通信 571 14.7 线程的同步 572 14.7.1 临界区 572 14.7.2 互斥量 573 14.7.3 事件 573 14.7.4 信号量 574 14.8 小结 579 第15章 Visual C++ 2010 MFC网络程序设计 580 15.1 计算机网络的基础知识 580 15.1.1 TCP/IP协议模型 580 15.1.2 ip地址 582 15.1.3 端口 582 15.1.4 数据封装 582 15.2 Winsock简介 583 15.3 MFC对Windows Sockets的支持 583 15.3.1 Socket的定义 584 15.3.2 casyncSocket类介绍 584 15.3.3 cSocket类介绍 592 15.4 一个基于udp的聊天室示例 593 15.4.1 MFC对Windows Sockets的初始化 593 15.4.2 服务器端的实现 595 15.4.3 客户端的实现 599 15.5 一个基于TCP的聊天室示例 605 15.5.1 服务器端的实现 606 15.5.2 客户端的实现 609 15.6 小结 612 第16章 Visual C++ 2010 MFC进程通信 613 16.1 剪贴板通信 613 16.1.1 Openclipboard()函数 613 16.1.2 Closeclipboard()函数 614 16.1.3 emptyclipboard()函数 614 16.1.4 Setclipboarddata()函数 614 16.1.5 globalalloc()函数 615 16.1.6 globallock()函数 616 16.1.7 globalunlock()函数 616 16.1.8 Getclipboarddata()函数 616 16.1.9 一个利用剪贴板在不同进程之间交换数据的示例 616 16.2 邮槽通信 619 16.2.1 Createmailslot()函数 619 16.2.2 Getmailslotinfo()函数 620 16.2.3 Setmailslotinfo()函数 621 16.2.4 ReadFile()函数 621 16.2.5 GetFiletime()函数和SetFiletime()函数 621 16.2.6 CreateFile()函数 622 16.2.7 WriteFile()函数 623 16.2.8 Closehandle()函数 623 16.2.9 一个利用邮槽在不同进程间通信的示例 623 16.3 匿名管道通信 628 16.3.1 Createpipe()函数 628 16.3.2 Createprocess()函数 629 16.3.3 Getstdhandle()函数 631 16.3.4 ReadFile()和WriteFile()函数 632 16.3.5 一个利用匿名管道在父子进程间通信的示例 632 16.4 命名管道通信 637 16.4.1 Createnamedpipe()函数 637 16.4.2 connectnamedpipe()函数 639 16.4.3 disconnectnamedpipe()函数 640 16.4.4 waitnamedpipe()函数 640 16.4.5 利用命名管道通信的基本流程 640 16.4.6 一个利用命名管道在不同进程间通信的示例 641 16.5 共享内存通信 647 16.5.1 CreateFilemApping()函数 647 16.5.2 mapViewofFile()函数 648 16.5.3 unmapViewofFile()函数 649 16.5.4 OpenFilemApping()函数 649 16.5.5 利用共享内存通信的基本流程 649 16.5.6 一个利用共享内存在不同进程间通信的示例 650 16.6 小结 655 第三部分 Visual C++ 2010下MFC与clr进行开发 第17章 Visual C++ 2010 clr开发基础 656 17.1 什么是.net 656 17.2 .net框架 656 17.3 公共语言运行(clr) 657 17.3.1 托管代码 659 17.3.2 代码验证 659 17.3.3 代码访问验证 659 17.3.4 垃圾回收 659 17.3.5 语言的互操作性 660 17.3.6 实编译(jit) 660 17.4 通用类型系统(cts) 661 17.5 通用语言规范(cls) 663 17.6 程序集 664 17.6.1 元数据 664 17.6.2 程序集版本管理 665 17.6.3 微软间语言(msil) 665 17.6.4 资源 666 17.7 .net开发应用程序的范畴 666 17.8 .net框架类库 667 17.9 C++/clr开发语法简介 668 17.10 小结 670 第18章 Visual C++ 2010 clr Windows窗口编程 671 18.1 创建Windows应用程序 671 18.2 类层次结构 677 18.3 control类 677 18.3.1 大小与位置 678 18.3.2 外观 679 18.3.3 用户交互操作 679 18.3.4 Windows功能 680 18.4 标准Windows控件使用指南 681 18.4.1 Button控件 681 18.4.2 checkBox控件 681 18.4.3 radioButton控件 682 18.4.4 comboBox控件、ListBox控件和checkedListBox控件 682 18.4.5 datetimepicker控件 684 18.4.6 errorprovider组件 685 18.4.7 helpprovider组件 686 18.4.8 imageList组件 686 18.4.9 label控件 686 18.4.10 ListView控件 687 18.4.11 pictureBox控件 688 18.4.12 progressbar控件 689 18.4.13 TextBox控件、RichTextBox控件与maskedTextBox 18.4.13 控件 689 18.4.14 panel控件 690 18.4.15 flowlayoutpanel控件和tablelayoutpanel控件 690 18.4.16 splitcontainer控件 691 18.4.17 tabcontrol控件和tabpage控件 691 18.4.18 toolstrip控件 692 18.4.19 menustrip控件 694 18.4.20 conTextmenustrip控件 694 18.4.21 toolstripmenuitem控件 694 18.4.22 toolstripmanager类 695 18.4.23 toolstripcontainer控件 695 18.5 窗体Winform 695 18.5.1 form类 695 18.5.2 多文档界面 700 18.5.3 定制控件 700 18.6 小结 707 第19章 Visual C++ 2010 MFC与.net交互编程 708 19.1 编写托管扩展应用程序 708 19.2 编写访问.net的MFC程序 709 19.3 混合模式编程问题 711 19.4 运用.net类型 713 19.4.1 定义和使用托管类型 713 19.4.2 将非托管对象作为托管类的成员 715 19.4.3 装箱和拆箱 716 19.4.4 指针 717 19.4.5 在非托管代码使用托管数组 719 19.5 小结 720 第四部分 发布Visual C++ 2010程序 第20章 Visual C++ 2010应用程序部署 721 20.1 Windows installer介绍 722 20.2 一个简单的Windows应用程序 723 20.3 使用安装向导快速创建安装包 726 20.4 手动创建安装程序 728 20.5 使用安装编辑器 731 20.5.1 File system(文件系统编辑器) 731 20.5.2 registry编辑器 732 20.5.3 File types编辑器 733 20.5.4 user interface编辑器 734 20.5.5 custom actions编辑器 735 20.5.6 launch conditions编辑器 736 20.6 小结 736 第五部分 基于Windows 7平台用Visual C++ 2010开发 第21章 Visual C++ 2010基于Windows 7新特性开发 737 21.1 实现C++兼容开发 737 21.1.1 实现uac数据重定向 737 21.1.2 实现高dpi 741 21.1.3 实现安装程序检测 742 21.1.4 会话0隔离 743 21.1.5 用户界面特权隔离(uipi) 746 21.1.6 版本检查 748 21.2 Windows 7系统专题 750 21.2.1 实现超级任务栏 750 21.2.2 实现shell库 759 21.2.3 实现后台服务 762 21.2.4 开发基于Windows 7的 21.1.5 设备与性能应用 763 21.3 开发基于Windows 7的新特性 769 21.3.1 实现多点触摸 769 21.3.2 实现获取传感器与位置 771 21.3.3 实现Windows 7 ribbon界面开发 774 21.3.4 基于Visual C++ 2010开发基于Windows 7的语音识别与语音合成 776 21.3.5 基于Visual C++ 2010与Windows sdk for Windows 7开发Windows 7平台的tablet pc应用 787 21.3.6 开发Windows 7的安全体验cryptoAPI加密 804

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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