MFC 判断子窗体是不是已经打开,避免重复创建。解决方法

 

CSeriPortSendDlg是调用窗口的类名,复制12行-22行,把12,20行的“CSeriPortSendDlg”,替换成你需要调用的类名即可。

 //IDD是枚举类,需要在相应头文件中的public添加(enum { IDD = IDD_SERIPORTSEND_DIALOG };)。

//

class CSeriPortSendDlg : public CDialog
{
// 构造
public:
    CSeriPortSendDlg(CWnd* pParent = NULL);    // 标准构造函数

// 对话框数据
    enum { IDD = IDD_SERIPORTSEND_DIALOG };

//----------------------------IDD_SERIPORTSEND_DIALOG是被调用的窗口名字-----------------------------------

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

 

 

void Dialog_Home::OnBnClickedButtonSetting()
{
	// TODO: 在此添加控件通知处理程序代码--(txwtech)
	//CSeriPortSendDlg *m_picDlgPtr = new CSeriPortSendDlg();
	// 
	//if (m_picDlgPtr->m_hWnd == NULL)
	//{
	//	m_picDlgPtr->Create(IDD_SERIPORTSEND_DIALOG, this); // 创建非模态窗口
	//}
	//
	//m_picDlgPtr->ShowWindow(SW_SHOW);
	static CSeriPortSendDlg *p_Dlg1 = new CSeriPortSendDlg;
	HWND hWnd = p_Dlg1->GetSafeHwnd();
	if (IsWindow(hWnd))
	{
		p_Dlg1->ShowWindow(SW_SHOW);
	}
	else
	{
		p_Dlg1->Create(CSeriPortSendDlg::IDD, CWnd::FromHandle(p_Dlg1->GetSafeHwnd()));
		p_Dlg1->ShowWindow(SW_SHOW);
	}
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

txwtech笛克特科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值