VC/MFC 动态设置(创建)对话框的风格
(2010-08-10 21:26:27)
标签:
vc/mfc动态设置对话框风格ws_childws_popupws_overlapped转换 |
分类: 软件开发 |
一般而言,对话框风格的设置有几种方式,以下介绍其中两种。
第一种:
CWnd::ModifyStyle();或者 CWnd::ModifyStyleEx();
不过笔者发现,当WS_POPUP类型的对话框创建成功后,使用ModifyStyle(WS_POPUP,WS_CHILD)的效果不尽如人意,所以如果要实现对话框基本风格的改变,可采用以下第二种方法来实现对话框风格的动态设置(创建)。
以下是动态设置对话框风格的测试代码,可实现WS_CHILD,WS_POPUP和OVERLAPPED风格的相互转换。
/// 自定义的对话框风格--Added by 华仔103
2010-08-10
enum WINDOW_STYLE
{
};
/// 对话框测试类DlgtextDlg.h--Added by 华仔103 2010-08-10
#define BASE_TEXT_DLG CDialog
class CDlgtextDlg : public BASE_TEXT_DLG
{
public:
protected:
};
/// 对话框测试类DlgtextDlg.cpp--Added by 华仔103 2010-08-10
#include "DlgtextDlg.h"
/// 默认构造函数
CDlgtextDlg::CDlgtextDlg(CWnd* pParent )
{
}
/// 重载构造函数
CDlgtextDlg::CDlgtextDlg(WINDOW_STYLE nWindowStyle,CWnd* pParent
)
{
}
/// 设置窗口类型
void
{
}
/// 重载基类的PreCreateWindow函数,实现对话框风格的自定义
BOOL CDlgtextDlg::PreCreateWindow(CREATESTRUCT&
cs)
{
}
调用方式一:
#include "DlgtextDlg.h"
static CDlgtextDlg s_textDlg(WS_CHILD_WIN);
s_textDlg.Create(CDlgtextDlg::IDD);
CWnd* pParent = NULL;/// 传入你所需要的父窗口
s_textDlg.SetParent(pParent);
调用方式二:
#include "DlgtextDlg.h"
CDlgtextDlg m_textDlg;
/// 设置对话框风格
m_textDlg.SetWindowStyle(WS_CHILD_WIN);
/// 创建非模态对话框
m_textDlg.Create(CDlgtextDlg::IDD);
CWnd* pParent = NULL;/// 传入你所需要的父窗口
m_textDlg.SetParent(pParent);
/// 其他类型的对话框风格可举一反三。