鱼C论坛

 找回密码
 立即注册

【Win32 学习】自制对话框向导程序

已有 550 次阅读2013-8-5 17:45 |个人分类:WIN32学习

第一步:使用管理员身份打开VC,(为什么要用管理员身份呢?这是因为我的电脑是win7的,而且UAC设置并没有关,VC又是安装在C盘,所以待会儿写入模板的时候需要管理员权限才能写入C盘的VC安装目录下。XP好像不需要用管理员权限打开)打开后,点击【文件】【新建】”,弹出一个对话框,选择【Win32Application】,在右上角输入工程名,选择你的工程保存的位置,点击【确定】后弹出一个对话框,选择【一个简单的Win32程序】再点击【完成】,再在弹出对话框点【确定】即可。如图:




第二步:再次点击【文件】【新建】弹出对话框,选择【资源脚本】,输入文件名点击【确定】新建完成。弹出对话框如下图二。

上图中的文件名为rescource为我的拼写错误,我重新建了一个,下面我已经改正文件名为resource了!


对准上面对话框中的resource.rc 点击【右键】【插入】,弹出对话框,选中【dialog】点击【新建】,一个对话框窗体就创建完成了。
如图。

对准对话框主窗体内【双,弹出对话框的属性框,将原来的ID【IDD_DIALOG1】 修改为【IDD_MAIN】后点击【确定】。


然后自己随便画些按钮或者控件上去,这个就是你以后使用该向导创建的窗体的样子了。另外在更多样式选项卡选择居中,你的窗体出现就会在屏幕中间哦!
第三步:编辑cpp文件定制自己的个性模板
首先在工作区【FileView】选项卡中双击【工程名.cpp】文件(我这里是DialogApp.cpp,只因为刚才新建的工程名为DialogApp.cpp)编辑,可以看到如下字段
  1. #include"stdafx.h"
  2. intAPIENTRY WinMain(HINSTANCE hInstance,
  3.   
  4.                   
  5. HINSTANCE hPrevInstance,
  6.            
  7.           LPSTR  
  8.    lpCmdLine,
  9.            
  10.           int       
  11. nCmdShow)
  12. {
  13.          // TODO: Place code 
  14. here.
  15.           return0;
  16. }
复制代码

要在程序运行时显示创建的对话框,还需将如下字段添加到WinMain 函数return语句之前:
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
这儿的IDD_MAIN为前面设置的创建对话框资源Dialog的ID
注意:要使用创建的自定义资源,需要将创建过程生成的resource.h引入(直接使用会报错),所以还需要在文件头部添加如下代码:
#include “resource.h”
同时还要添加主窗口函数Main_Proc(注意这儿定义的函数名要和上述DialogBox中使用的第四个参数名一致,否则会报错),以及初始化函数Main_OnInitDialog,退出函数Main_OnClose,和按钮事件响应函数Main_OnCommand。 下面直接将这段代码复制过去即可。
  1. //初始化处理函数
  2. BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM 
  3. lParam)
  4. {
  5.           return 
  6. TRUE;
  7. }
  8. //按钮动作响应函数
  9. void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, 
  10. UINT codeNotify)
  11. {
  12.         

  13. }
  14. //退出信息处理函数
  15. void Main_OnClose(HWND hwnd)
  16. {
  17.     
  18. EndDialog(hwnd, 0);
  19. }
  20. //主窗口信息处理函数
  21. //WM_COMMAND - 处理应用程序菜单;WM_PAINT - 
  22. 绘制主窗口;WM_DESTORY - 发送退出信息并返回
  23. BOOL WINAPI Main_Proc(HWND hwnd, UINT uMsg, 
  24. WPARAM wParam, LPARAM lParam)
  25. {
  26.     switch(uMsg)
  27.   
  28.   {
  29.         HANDLE_MSG(hwnd, 
  30. WM_INITDIALOG, Main_OnInitDialog);//消息分流器,定义在<windowsx.h>中
  31.   
  32.       HANDLE_MSG(hwnd, WM_COMMAND, 
  33. Main_OnCommand);
  34.      
  35.    HANDLE_MSG(hwnd,WM_CLOSE, Main_OnClose);
  36.     
  37. }
  38.           return FALSE;
  39. }
复制代码
注意:因为Main_Proc 函数中使用了消息分流器HANDLE_MSG,此宏定义在windowsx.h中,所以要在文件头部添加:
  1. #include <windowsx.h>
复制代码
第四步: 编辑头文件
新建dialog.h并添加到工程,在文件中添加如下字段声明函数:
  1. //函数声明
  2. BOOL WINAPI Main_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM 
  3. lParam);
  4. BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM 
  5. lParam);
  6. void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT 
  7. codeNotify);
  8. void Main_OnClose(HWND hwnd);
复制代码
同时在【工程名.cpp】头部添加(我的事DialogApp.cpp)
#include "dialog.h"
第五步:创建工程向导
打开VC++6.0,依次选择【文件】【新建】【工程】【Custom AppWizard】
在右侧【工程名称】框中输入工程名,【位置】框中选择储存路径,选择【确定】
在弹出菜单选择【一个已存在的工程】,输入框中表示显示在工程向导中的名字,点击【下一步】,选择刚才创建Win32工程的dsp文件,就是前四步创建的"DialogApp.dsp"点击【完成】。



在工作区【FileView】选项卡中【Template Files】下编辑如下文件即可
【confirm.inf】文件中输入你想在向导窗口展示的文字及其排版(默认不修改就可以了)
要是编辑器默认支持MIF类,需在【StdAfx.cpp】中#include "stdafx.h"前端加入#include <afxdisp.h>,然后【运行】即可
否则会出现error LNK2001错误和error LNK1120错误。如果你不添加这行代码只需每次创建工程后执行以下步骤即可避免此错误:
工作区【FileView】选项卡中【工程名文件】(我这里是DialogApp files)右键,选择【设置】,然后在【常规】选项卡下【微软基础类】下选择【不使用 MFC】,点击【确定】即可。
再次打开 VC++6.0,(不再需要管理员权限了)选择【文件】【新建】你就会发现你新建的工程向导已经出现在列表里面了。







补充一下:如果创建的不好怎么删除它呢?找到你的VC6.0的安装目录,以我的为例,我是装在C盘。将C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Template下面的Win32 DialogApp.awx和Win32 DialogApp.pdb删除掉就可以了。

另一点:不能将向导工程文件放入对应的C:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Template中,会使得编译不出Win32 DialogApp.awx和Win32 DialogApp.pdb文件,亲身试验所得。

感谢如鹏网 IdentifyC

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 07:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部