打印

曲径通幽—关于Visual Stdio 自定义向导框的构建(1)

[复制链接]
1030|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dreamfly123123|  楼主 | 2015-12-1 09:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.建立WIN32 工程
打开VC++6.0,依次选择【File】—【New】
在弹出窗口选择【Projects】选项卡左侧选择【Win32 Application】,右侧【Project name】框中输入工程名DQ_Frame_App,【Location】框中选择储存路径,点击【OK】。在弹出菜单选择【A simple win32 application】,然后点击【Finish】。
接着点击【OK】
2.创建可视化对话框窗口资源
依次选择【File】—【New】,在弹出窗口选择【Files】选项卡,左侧选择【Resource Script】,右侧选中【Add to project】框,【File】中输入资源名DQ_Resoure,【Location】框中选择储存路径,点击【OK】。
在VC窗口编辑区可看见DQ_Resoure,右键选择【Insert】,
在弹出对话框中选择【Dialog】,点击【New】

在绘制对话框右键选择【Properties】。
在弹出框中更改【ID】为IDD_DQ。
然后回车,保存文件。
3.编辑cpp 文件定制个性模板
首先在工作区【FileView】选项卡中双击【DQ_Frame_App.cpp】文件编辑,可以看到如下字段
#include "stdafx.h"
int APIENTRY WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
return 0;
}
要在程序运行时显示创建的对话框,还需将如下字段添加到WinMain 函数return 语句之前:
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DQ), NULL, Main_Proc);
这儿的IDD_DQ 为前面设置的创建对话框资源Dialog 的ID
注意:要使用创建的自定义资源,需要将创建过程生成的DQ_Resource.h 引入(直接使用会报错),所以还需要在文件头部添加如下代码:
#include “DQ_Resource.h”
同时还要添加主窗口函数Main_Proc,以及初始化函Main_OnInitDialog,退出函数Main_OnClose,和按钮事件响应函数Main_OnCommand。各函数定义如下:
//初始化处理函数
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}
//按钮动作响应函数
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
            
}
//退出信息处理函数
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
//主窗口信息处理函数
//WM_COMMAND ‐ 处理应用程序菜单;
//WM_PAINT ‐ 绘制主窗口;
//WM_DESTORY ‐ 发送退出信息并返回
BOOL WINAPI  Main_Proc(  HWND  hwnd,
    UINT    uMsg,
WPARAM  wParam,
LPARAM  lParam)
{
switch(uMsg)
{
HANDLE_MSG(hwnd, WM_INITDIALOG, Main_OnInitDialog);
//消息分流器,定义在
HANDLE_MSG(hwnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hwnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
注意:因为Main_Proc 函数中使用了消息分流器HANDLE_MSG,此宏定义在windowsx.h中,所以要在文件头部添加:
#include <windowsx.h>
4.编辑头文件
实现函数声明,若上述四个函数顺序是Main_OnInitDialog,Main_OnCommand,Main_OnClose 三个函数在Main_Proc 之前,且这四个函数在WinMain 之前可以跳过此步骤因为C 语言函数必须先声明再使用,除非被调函数在主调函数前面!
新建DQ_Dialog.h 并添加到工程,在文件中添加如下字段声明函数:
//函数声明
BOOL WINAPI Main_Proc( HWND      hwnd,
UINT        uMsg,
WPARAM    wParam,
LPARAM     lParam);
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void Main_OnClose(HWND hwnd);
同时在【工程名.cpp】头部添加:
#include "DQ_Dialog.h"

相关帖子

沙发
keer_zu| | 2015-12-1 11:19 | 只看该作者
图片一直加载不成功啊

使用特权

评论回复
板凳
dreamfly123123|  楼主 | 2016-2-27 13:51 | 只看该作者
yyy71cj 发表于 2015-12-1 19:24
我怀疑这图片是从其他网站引用的。不过我看到了VC++的味道,面向对象的上位机编程时代这是要来了么? ...

我重新发一次,ENDCHINA上也有,都是我发的

使用特权

评论回复
地板
dreamfly123123|  楼主 | 2016-3-7 20:17 | 只看该作者
yyy71cj 发表于 2016-2-27 17:35
哦哦,图片尽量传到本站

好的,以后注意

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

29

帖子

1

粉丝