WEB开发网
开发学院软件开发VC 在MFC中创建动态控件的生成与响应 阅读

在MFC中创建动态控件的生成与响应

 2007-03-15 21:52:12 来源:WEB开发网   
核心提示: 这样,我们就在当前对话框中的(20,10)处创建了宽60,在MFC中创建动态控件的生成与响应(3),高30,按钮文字为“动态按钮”的下压式按钮,会自动添加在AFX_MSG_MAP括起的区间内,如:BEGIN_MESSAGE_MAP(CTextEditorView,

这样,我们就在当前对话框中的(20,10)处创建了宽60,高30,按钮文字为“动态按钮”的下压式按钮。

为了使创建过程更方便易用,我定义了如下函数:

CButton* CTextEditorView::NewMyButton(int nID,CRect rect,int nStyle)
{
CString m_Caption;
m_Caption.LoadString( nID );//取按钮标题
CButton *p_Button = new CButton();
ASSERT_VALID(p_Button);
p_Button->Create( m_Caption, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | nStyle, rect, this, nID ); //创建按钮
return p_Button;
}

其中m_Caption.LoadString( nID )是从字符串表中读取按钮文本,这样在创建按钮ID时,应该把文本设置好,参数nStyle为除必须风格外的额外风格。

以下,我调用该函数创建三个按钮,并指定第一个按钮为默认按钮,按钮的ID已预先设置好了:

CButton *p_MyBut[3];
p_MyBut[0] = NewMyButton( ID_MYBUT1, CRect(10,20,50,35), BS_DEFPUSHBUTTON );
p_MyBut[1] = NewMyButton( ID_MYBUT2, CRect(55,20,95,35), 0 );
p_MyBut[2] = NewMyButton( ID_MYBUT3, CRect(100,20,140,35), 0 );
  二、动态控件的响应:

动态控件的响应函数不能用ClassWizard添加,只能手动添加。仍以上面的按钮为例,我们制作按钮的单击响应函数。

1.在MESSAGE_MAP中添加响应函数:

MESSAGE_MAP表中定义了消息响应函数,其格式为:消息名(ID,函数名),当我们用ClassWizard添加函数时,会自动添加在AFX_MSG_MAP括起的区间内,如:

BEGIN_MESSAGE_MAP(CTextEditorView, CFormView)
//{{AFX_MSG_MAP(CTextEditorView)
ON_BN_CLICKED(IDC_ICONBUT0, OnIconbut0)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

手工添加时不要添加到AFX_MSG_MAP区间内,以防ClassWizard不能正常工作,如:

上一页  1 2 3 4 5 6 7  下一页

Tags:MFC 创建 动态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接