有时候我们需要在CEdit控件中放置一个CButton控件,使其内嵌在CEdit控件中,如下图所示。本文介绍了在MFC程序开发中实现该效果的方法,编程环境为VS2008。
首先新建一个对话框,然后在上面放置一个CEdit控件与一个CButton控件,其ID分别为IDC_EDIT与IDC_BUTTON。然后使用组合键Ctrl + D
调整Tab键顺序,使CButton控件的编号小于CEdit控件,如下图所示。
调整CButton控件的位置,使其位于CEdit控件之下,可以看到CEdit控件将CButton控件遮挡住了,如下图所示。
将CButton控件调整到合适的位置之后,为对话框关联一个类,并在该类的OnInitDialog
函数中添加以下代码。
GetDlgItem(IDC_EDIT)->ModifyStyle(0, WS_CLIPSIBLINGS);
((CEdit*)GetDlgItem(IDC_EDIT))->SetMargins(0, 24);
其中,第一句代码为CEdit控件设置WS_CLIPSIBLINGS属性,防止对CEdit控件进行绘制时遮盖CButton控件。第二句代码则是调整CEdit控件的文字显示区域,防止CButton控件遮盖CEdit控件中的文字。
完成以上步骤后启动程序就可以看到图1所示的效果了。