VisualFC使用 - DialogResize(对话框调整)

本文介绍如何利用WTL类向导实现对话框控件在窗口大小改变时的位置及尺寸调整,并提供具体步骤与示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 WTL中提供了对话框调整支持,能够指定对话框窗口在发生大小改变时控件相对主窗口的大小和位置变化。VisualFC的WTL类向导对这一机制具有良好的支持,代替手工编码操作。事例如下:

在VC中新建一WTL对话框应用程序。打开资源编辑器,将IDD_DIALOG的Border属性改为Resizing。新建的对话框窗口默认有三个按钮"OK,Cancel,About",我们再在左面添加一个"Edit"窗口,切换回类视图查看,选择CMainDlg类,点击VFC工具栏上的"WTL ClassWizard"按钮启动WTL类向导,选择WTL Resize控制页面,上面列表为控件ID显示,下面列表为加入了DialogResize控制的控件显示。选择控件列表中IDOK,点击Add Resize编辑Resize属性,选择DLSZ_MOVE_X,按确认,将在下面的Resize列表中显示”IDOK    DLSZ_MOVE_X"项。接下来添加IDCANCEL的Resize属性为DLSZ_MVOE_X,添加ID_APP_ABOUT的Resize属性为DLSZ_MOVE_X和DLSZ_MOVE_Y,添加IDC_EDIT1的Reisze属性为DLSZ_SIZE_X和DLSZ_SIZE_Y,最后按“OK”确认将自动在CMainDlg类中添加以下语句。

BEGIN_DLGRESIZE_MAP(CMainDlg)
    DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X)
    DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X)
    DLGRESIZE_CONTROL(ID_APP_ABOUT, DLSZ_MOVE_X 
|  DLSZ_MOVE_Y)
    DLGRESIZE_CONTROL(IDC_EDIT1, DLSZ_SIZE_X 
|  DLSZ_SIZE_Y)
END_DLGRESIZE_MAP()

接下来我们在需要在CMainDlg类中手工加入继承支持、消息链接表和在InitDialog中的初始控制。

class  CMainDlg :  public  CDialogImpl < CMainDlg > public  CUpdateUI < CMainDlg > ,
         
public  CMessageFilter,  public  CIdleHandler, 
                           
public  CDialogResize < CMainDlg >   // 我们手工加入的DialogResize继承支持
{
。。。。
    BEGIN_DLGRESIZE_MAP(CMainDlg)
        DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X)
        DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X)
        DLGRESIZE_CONTROL(ID_APP_ABOUT, DLSZ_MOVE_X 
| DLSZ_MOVE_Y)
        DLGRESIZE_CONTROL(IDC_EDIT1, DLSZ_SIZE_X 
| DLSZ_SIZE_Y)
    END_DLGRESIZE_MAP()
。。。。
    BEGIN_MSG_MAP(CMainDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
        COMMAND_ID_HANDLER(IDOK, OnOK)
        COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
        CHAIN_MSG_MAP(CDialogResize
<CMainDlg>)  //我们手工加入的消息链接
    END_MSG_MAP()
    LRESULT OnInitDialog(UINT 
/*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    
{
        。。。。
        DlgResize_Init(
true,true); //我们手工初始DialogResize控制
        return TRUE;
    }




。。。。
}
;

现在我们编译将生成能够在窗口大小发生改变时自动调整控件大小和位置的对话框应用程序。看起来并没有什么,使用VFC的WTL类向导后我们仍需手工添加部分代码,但这个对话框只有四个控件,如果你的对话框拥有更多的控件以后你会发现使用VFC的WTL类向导编辑对话框控件的Resize属性将会节省你在这方面上的许多的时间,试试看吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值