zoukankan      html  css  js  c++  java
  • 【VS开发】如何移植对话框?

    【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, "00" 
        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

  • 相关阅读:
    团队的最佳诠释
    诸葛烤鱼
    Agile Web Development with Rails 读书笔记 (四)
    Agile Web Development with Rails 读书笔记 (三)
    客户教育
    To Be Or Not To Be Is The Question
    [zz]记录一linux命令:xargs
    Ubuntu 12.04 开启 wubi 安装
    [zz]mknod用法以及主次设备号
    [zz]centos下安装KVM方法
  • 原文地址:https://www.cnblogs.com/huty/p/8518453.html
Copyright © 2011-2022 走看看