VC 控件动态添加的方法

                                                VC 控件动态添加的方法

                                                                                                                   Flyli

有些时候为了某种目的,我们希望系统的控件能够自动根据我们的需要添加而不是必须提前在对话框里画进去,这个时候我们就需要动态的进行控件的生成.

具体的我们可以以CEdit(文本框控件)为例来说明

第一步:

    必须添加一个CEdit的指针,然后在给指针开辟相应的空间. 这里需要说明的是,我们必须定义指针,而不是直接定义这个类,具体原因我不在这里解释,这里我们这么写;

    CEdit* Text = new CEdit();

第二步:

    创建控件,我利用create看书对text进行初始化,并将其显示到桌面上.代码如下:

          RECT rect;

rect.top = 0;

          rect.left = 0;

         rect.right =100 ;

     rect.top = 100;

    Text->Create(WS_CHILD | WS_VISIBLE,rect,(CWnd*)this,FID_ADDRESS);

     这里需要加以说明的是第一个参数表明的是控件的样式,起具体含义可以从MSDN中获得,第二个参数是控件显示在窗口上的位置,第三个控件是控件所在窗口,第四个参数值得是控件的ID,其定义需要在resource.hString table资源中加以定义,假如测试用的话可以将其定义为一个未经定义过的常数,例如:2008.

之后的TEXT就可以被当成一个普通的经过DDX_Control的函数一样的控制了,比如想得到其中的数值,只需要

CString xxx;

text->GetWindowText(xxx);

这样控件中的数值就被读入到了xxx这个字符串中了.

此文章如需转载请注明作者姓名,谢谢合作

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过将按钮添加为列表控件的子项来在VC++中实现在 ListCtrl 中添加按钮控件的效果。下面是一种可能的实现方法: 1. 在 ListCtrl 控件上启用 `LVS_OWNERDRAWFIXED` 样式,以便自定义绘制子项。 2. 在 ListCtrl 控件添加按钮控件时,使用插入项的自定义绘制消息(`NM_CUSTOMDRAW`)来处理按钮的绘制和交互。 以下是一个简单的示例代码,演示如何在 ListCtrl 中添加按钮控件: ```cpp // 添加按钮的自定义绘制消息处理函数 BOOL CMyDialog::OnCustomDrawListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); *pResult = CDRF_DODEFAULT; // 判断子项类型 if (pLVCD->nmcd.dwDrawStage == CDDS_ITEMPREPAINT) { // 获取当前子项的索引 int nIndex = static_cast<int>(pLVCD->nmcd.dwItemSpec); // 判断当前子项是否为按钮 if (IsButton(nIndex)) { // 绘制按钮 DrawButton(pLVCD->nmcd.hdc, pLVCD->nmcd.rc); *pResult = CDRF_SKIPDEFAULT; // 跳过默认绘制 } } return TRUE; } // 绘制按钮函数 void CMyDialog::DrawButton(HDC hdc, const RECT& rect) { // 使用 GDI 绘制按钮外观 // ... // 绘制按钮文本 DrawText(hdc, _T("Button"), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); } // 判断子项是否为按钮函数 BOOL CMyDialog::IsButton(int nIndex) { // 根据索引判断子项是否为按钮 // ... return TRUE; // 假设所有子项都是按钮 } // 在初始化对话框中添加 ListCtrl 控件并启用自定义绘制 BOOL CMyDialog::OnInitDialog() { CDialogEx::OnInitDialog(); // 创建 ListCtrl 控件 m_listCtrl.Create(WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_OWNERDRAWFIXED, CRect(10, 10, 200, 200), this, IDC_LIST_CTRL); // 启用自定义绘制 m_listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT); m_listCtrl.SetCallbackMask(LVIS

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值