MFC中的m_hwnd变量和WS_CHILD的作用、按钮是否被创建的判断

本文详细介绍了如何通过全局变量、静态局部变量和按钮内部成员变量来判断按钮是否被创建,并提供了相应的代码实现。同时,阐述了WS_CHILD与WS_POPUP的区别,以及如何灵活运用这些知识来管理窗口资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个内部成员变量CButton  m_btn;,判断该按钮是否被创建的方法:


1.

定义一个全局变量bool m_bIsCreate;


2.

定义一个static局部变量。

static bool bIsCreate = false;//只会被初始化一次

if(!bIsCreate)

{

m_btn.Create("添加", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,100), this,100);

bIsCreate=true;

}

else

{

m_btn.DestoryWindow();

bIsCreate=false;

}


3.

m_btn中有一个内部成员变量m_hwnd,保存了与m_btn相关的句柄,当m_btn与窗口相关联的时候,m_hwnd就不为NULL了。因此可以根据m_hwnd变量来判断m_btn这个按钮有没有被创建。


代码如下:

if(!m_btn.m_hwnd)

{

m_btn.Create("添加", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,100), this,100);

}

else

{

m_btn.DestoryWindow();

}

WS_CHILD表示生成的窗口是母窗口的子窗口,它与WS_POPUP对应的,区别是:
WS_CHILD生成的窗口,只有当前窗口(子窗口)关闭了,焦点才能回到母窗口,而POPUP则2个窗口可以分开操作。

一个简单的例子就是:你可以创建桌面的POPUP窗口,但不能创建桌面的CHILD窗口。
转自:http://zhidao.baidu.com/link?url=xBTNbKkKRnntEgFdggi1mLlT7pFsGLJQCtMEWWea3u0Qq2o1JLUmGuPPxKQrqckCXl6tNjI3cbtZW_f-qhUrUa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值