【VS开发】如何移植对话框?

标签:【VS开发】


问题描述:当开发好一个可视化界面的时候,想将其移植到另外的工程中,这个时候希望能够导出对话框资源,好直接在另一个工程中进行编辑,而不用再次编辑对话框上的空间资源等。本文基于Ribbon MFC视图中移植对话框的方法进行介绍和总结。


首先是对话框的相关头文件和源文件,这是必不可少的,之后是从对应的工程名.rc中拷贝出相关的代码段,可以根据对话框的ID去搜索相关的代码段,一般的从下面对话框的资源段进行copy:

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
// IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于 CameraLink"
FONT 9, "MS Shell Dlg", 0, 0, 0x1
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,14,14,21,20
LTEXT "CameraLink,1.0 版",IDC_STATIC,42,14,114,8,SS_NOPREFIX
LTEXT "Copyright (C) 2015",IDC_STATIC,42,26,114,8
DEFPUSHBUTTON "确定",IDOK,113,41,50,14,WS_GROUP
END IDD_DIALOG_MONITERDLG DIALOGEX 0, 0, 659, 298
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "设置",IDC_BUTTON_SET,448,36,50,24
EDITTEXT IDC_EDIT_ROWY1,264,36,48,14,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_COLX1,264,54,48,14,ES_CENTER | ES_AUTOHSCROLL
GROUPBOX "监视像素设置",IDC_STATIC,84,7,568,80
CTEXT "横坐标 X1:",IDC_STATIC,216,54,48,8
CTEXT "纵坐标 Y1:",IDC_STATIC,216,36,48,8
EDITTEXT IDC_EDIT_ROWY2,384,36,48,14,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_COLX2,384,54,48,14,ES_CENTER | ES_AUTOHSCROLL
CTEXT "横坐标 X2:",IDC_STATIC,336,54,48,8
CTEXT "纵坐标 Y2:",IDC_STATIC,336,36,48,8
CONTROL "鼠标输入",IDC_CHECK_MOUSE,"Button",BS_AUTOCHECKBOX | BS_CENTER | BS_VCENTER | WS_TABSTOP,138,36,54,10
CONTROL "手动输入",IDC_CHECK_HAND,"Button",BS_AUTOCHECKBOX | BS_CENTER | BS_VCENTER | WS_TABSTOP,138,54,54,10
GROUPBOX "输入方式",IDC_STATIC,132,24,66,48
GROUPBOX "坐标 1",IDC_STATIC,210,24,108,48
GROUPBOX "坐标 2",IDC_STATIC,330,24,108,48
CONTROL "单点灰度监视",IDC_CHECK_SINGLEPIXEL,"Button",BS_AUTOCHECKBOX | BS_CENTER | BS_VCENTER | WS_TABSTOP,30,36,78,10
CONTROL "线列灰度监视",IDC_CHECK_SCANLINE,"Button",BS_AUTOCHECKBOX | BS_CENTER | BS_VCENTER | WS_TABSTOP,30,54,78,10
GROUPBOX "监视内容",IDC_STATIC,24,24,96,48
COMBOBOX IDC_COMBO_YDISPLAYRANGE,540,36,82,45,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
GROUPBOX "Y显示设置",IDC_STATIC,516,24,126,48
END

另外还有两个点需要copy:

/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
// #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END IDD_DIALOG_MONITERDLG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 652
TOPMARGIN, 7
BOTTOMMARGIN, 291
END
END
#endif // APSTUDIO_INVOKED

和:

/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
// IDD_DIALOG_MONITERDLG DLGINIT
BEGIN
IDC_COMBO_YDISPLAYRANGE, 0x403, 12, 0
0xd659, 0xd7e1, 0xb6d4, 0xb5af, 0xd5f7, 0x00fb,
IDC_COMBO_YDISPLAYRANGE, 0x403, 15, 0
0x694d, 0x4d6e, 0x7861, 0xb6b7, 0xa7ce, 0xd4cf, 0xbeca, "\000"
0
END

最后还剩一步骤就是从resource.h文件中将相应的对话框ID和控件ID都定义到该工程的resource.h中,否则将出现无法编辑资源文件的错误,或者是未定义的ID的错误:

一般地,在Resource.h中定义的ID号都是会分段的,因为类型不同,如下:

#define IDR_RIBBON                      307
#define IDD_DIALOG_MONITERDLG 310
#define IDC_BUTTON_SET 1000
#define IDC_EDIT_ROWY1 1001
#define IDC_EDIT_COLX1 1002
#define IDC_EDIT_ROWY2 1003
#define IDC_EDIT_COLX2 1004
#define IDC_CHECK_MOUSE 1005
#define IDC_CHECK_HAND 1006
#define IDC_CHECK_SINGLEPIXEL 1008
#define IDC_CHECK_SCANLINE 1009
#define IDC_COMBO1 1010
#define IDC_COMBO_YDISPLAYRANGE 1010

上面几个步骤后,该移植过程就完成了·!


2016-7-12 13:50

张朋艺 pyzhangbit2010@126.com

【VS开发】如何移植对话框?的更多相关文章

  1. Android安卓书籍推荐《Android驱动开发与移植实战详解》下载

    百度云下载地址:点我 Android凭借其开源性.优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为市场占有率很高的智能手机操作系统. <Android驱动开发与 ...

  2. android软件简约记账app开发day08-时间对话框的书写+改bug,改bug

    android软件简约记账app开发day08-时间对话框的书写+改bug,改bug 绘制对话跨页面 在添加记账信息功能中,我提供了用户添加备注添加事件的功能,设计是点击时间会弹出一个时间对话框供用户 ...

  3. linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)

    linux 3.4.103 内核移植到 S3C6410 开发板 这个星期差点儿就搭在这里面了,一開始感觉非常不值得,移植这样的浪费时间的事情.想立刻搞定,然后安安静静看书 & coding. ...

  4. TSL1401线性CCD TM32F103开发平台移植源代码

    Technorati Tags: stm32 模块资料 对于线性CCD而言,开发着更多的是基于飞思卡尔系列单片机进行开发,前几天在做项目的时候需要用到该传感器,故使用了蓝宙CCD的驱动历程,然后对蓝宙 ...

  5. hfrk2410_a1.1开发板移植linux-2.6.32.27--网卡篇(cs8900)

    硬件:恒丰锐科开发板hfrk2410_A1.1 软件:linux-2.6.32.27 cs8900网卡移植: 将cs8900驱动源代码文件拷贝至drivers/net/,修改drivers/net/K ...

  6. [原]零基础学习SDL开发之移植SDL2.0到Android

    在[原]SDL开发教程我们知道了如何在pc下使用SDL进行开发,在android上面是否一样可以使用呢?答案是肯定的. 下面我们进行移植SDL到Android,这里都是基于SDL最新版进行移植的,在E ...

  7. MAVLink功能开发,移植教程。

    MAVLink功能开发 -----------------本文由"智御电子"提供,同时提供视频移植教程,以便电子爱好者交流学习.---------------- 1.MAVLink ...

  8. android 开发AlertDialog.builder对话框的实现

    AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...

  9. (嵌入式开发)移植最新uboot

    一:准备移植 1.从下面的官网下载最新的U-boot.用google英文版搜索最新的u-boot源码  ftp://ftp.denx.de/pub/u-boot/ 2.建立sourceinsight工 ...

随机推荐

  1. 【LuoguP4887】第十四分块(前体)

    题目链接 题意 区间两数异或在二进制下有 \(k\) 个 \(1\) 的对数. Sol 普通莫队的话,如果要实时维护好区间内的答案需要支持区间对一个数求答案. 直接做不是很好做,容易发现其实这也就是一 ...

  2. 吴恩达+neural-networks-deep-learning+第二周作业

    Logistic Regression with a Neural Network mindset v4 简单用logistic实现了猫的识别,logistic可以被看做一个简单的神经网络结构,下面是 ...

  3. CF1205C Palindromic Paths

    题目链接 问题分析 首先可以想到,坐标和为奇数的位置可以被唯一确定.同样的,如果假定\((1,2)\)是\(0\),那么坐标和为偶数的位置也可以被唯一确定.这样总共使用了\(n^2-3\)次询问. 那 ...

  4. Unity3D_(插件)小地图自刷新制作Minimap小地图

    制作小地图:小地图自刷新制作小地图 原理:用不同的图标表示场景中不同的游戏物体,将(场景中)游戏物体位置实时放置小地图上,并控制图标的位置更新 好处:可更好控制小地图上所需要显示的游戏物体 游戏项目已 ...

  5. 微信小程序_(视图)简单的swiper容器

    swiper容器效果 官方文档:传送门 swiper容器可实现简单的轮播图效果 结构程序 Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 ...

  6. koa2,koa-jwt中token验证实战详解

    用户身份验证通常有两种方式,一种是基于cookie的认证方式,另一种是基于token的认证方式.当前常见的无疑是基于token的认证方式.以下所提到的koa均为koa2版本. token认证的优点是无 ...

  7. 解决Cannot change version of project facet Dynamic Web Module to 3.1

    Open web.xml from project structure http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version= ...

  8. php 发送邮件(1)代码逻辑

    tp3.2 使用phpmailer发送短信邮箱 准备工作 1.thinkphp3.2 2.qq邮箱(开通过POP3/SMTP服务)在qq邮箱内,设置->账户->POP3/IMAP/SMTP ...

  9. leetcode-easy-others-191. Number of 1 Bits-NO

    mycode  不会... 输入是二进制....我还以为十进制.... 00000001011 = 11 题意: 编写一个将(无符号)整数作为输入的函数,并返回该数字二进制表示中等于1的位数.例如:输 ...

  10. fastjson解析list ,object中含有list, object中含有map

    1.首先定义测试vo package com.haiyisoft.cAssistantWeb.ui; import java.sql.Timestamp; public class vo {priva ...