VC添加动态按钮Button

1、我们先给这个按钮宏定义一个ID号  (在View类的头文件中添加如下代码

#define IDC_DYNAMICBUTTON 1001

2、在view类中添加一个成员变量 (在view的头文件中输入下面代码)

public:
     CButton m_button;

 3、我们在view上面创建一个button (在view源文件中输入如下代码)

int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
     if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    // TODO: Add your specialized creation code here

   m_button.Create(
  //按钮标题
  "i am a dynimic button",
  //按钮风格
  WS_CHILD|WS_VISIBLE|WS_BORDER,
  //按钮大小
  CRect(100,40,300,80),
  //按钮父指针
  this,
  //该按钮对应的ID号
  IDC_DYNAMICBUTTON);

   return 0;
}

 4、添加消息响应函数声明  (view类的头文件public中添加

 afx_msg void OnClickButton();    //按钮消息处理函数声明

5、消息响应函数的映射在   (view的源文件public中添加

ON_BN_CLICKED(IDC_DYNAMICBUTTON,OnClickButton)   //按钮ON_BN_CLICKED消息的处理函数映射

6、添加消息响应函数的内容  就是你点击按钮后想要实现的功能 (在view的源文件中添加

void CMyView::OnClickButton()
{

AfxMessageBox("按钮被点到了!");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值