龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC程序中实现控件的动态生成与响应(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
窗口风格: WS_CHILD 子窗口,必须有 WS_VISIBLE 窗口可见,一般都有 WS_DISABLED 禁用窗口,创建初始状态为灰色不可用的按钮时使用 WS_TABSTOP 可用Tab键选择 WS

  窗口风格:

  WS_CHILD 子窗口,必须有
  WS_VISIBLE 窗口可见,一般都有
  WS_DISABLED 禁用窗口,创建初始状态为灰色不可用的按钮时使用
  WS_TABSTOP 可用Tab键选择
  WS_GROUP 成组,用于成组的单选按钮中的第一个按钮

  按钮风格:

  BS_PUSHBUTTON 下压式按钮,也即普通按钮
  BS_AUTORADIOBUTTON 含自动选中状态的单选按钮
  BS_RADIOBUTTON 单选按钮,不常用
  BS_AUTOCHECKBOX 含自动选中状态的复选按钮
  BS_CHECKBOX 复选按钮,不常用
  BS_AUTO3STATE 含自动选中状态的三态复选按钮
  BS_3STATE 三态复选按钮,不常用
 
  以上风格指定了创建的按钮类型,不能同时使用,但必须有其一。

  BS_BITMAP 按钮上将显示位图
  BS_DEFPUSHBUTTON 设置为默认按钮,只用于下压式按钮,一个对话框中只能指定一个默认按钮
  rect指定按钮的大小和位置;
  pParentWnd指示拥有按钮的父窗口,不能为NULL;
  nID指定与按钮关联的ID号,用上一步创建的ID号。

  不同控件类的Create()函数略有不同,可参考相关资料。

  例:p_MyBut->Create( "动态按钮", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20,10,80,40), this, IDC_MYBUTTON );
这样,我们就在当前对话框中的(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 ); 

精彩图集

赞助商链接