逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

在mfc中动态创建按钮

第一步:
在Resource.h中,添加按钮ID:ID_BTN_TEMP = 1001
第二步:
在View类【CView的子类】中添加一个变量,判断按钮是否已经创建:
bool m_bIsCreatButton;

第三步:
创建一个按钮数组:
CBitmapButton *m_bitList[11]


第四步:
在View类【CView的子类】的构造函数中,初始化bIsCreatButton:
m_bIsCreatButton = false;

第五步:
在View类【CView的子类】中添加函数创建按钮:
CBitmapButton* CHisNavView::CreateButton(int nID, char* text,int left, int top, int right, int bottom)
{
 CRect rect;
 GetClientRect(rect);
 CBitmapButton *pButton = new CBitmapButton();
 ASSERT_VALID(pButton); pButton->Create(TEXT(text),
  WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  CRect(left, top, right, bottom),
  this, nID);
 return pButton;
}

其中,nID为按钮ID,text为按钮文本。 其他为按钮显示范围。

第六步:
在View类【CView的子类】的OnDraw方法中创建按钮:
m_bitList[0] = CreateButton(ID_BTN_TEMP, "天志的按钮", 50, 50, 150, 80); 

第六步:
在View类【CView的子类】中声明函数:
afx_msg void OnTest()

第七步:
在View类【CView的子类】的BEGIN_MESSAGE_MAP(CHisNavView, CView)添加:
ON_BN_CLICKED(ID_BTN_TEMP, CHisNavView::OnTest)

第八步:实现OnTest()函数
void CHisNavView::OnTest()
{
   MessageBox(TEXT("天志自己写着玩!"), NULL, MB_OK);
}

posted on   荣-  阅读(6956)  评论(2编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

统计

点击右上角即可分享
微信分享提示