您当前的位置: 首页 >  ui

插件开发

暂无认证

  • 1浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第二章 第十小节Duilib中创建模态窗口和非模态窗口

插件开发 发布时间:2022-04-03 07:31:28 ,浏览量:1

文章目录
    • 1.CComboUI控件
    • 2.作者答疑

1.CComboUI控件

  在win32中,窗口分为模态窗口和非模态窗口,模态窗口会阻塞线程的运行,直到窗口处理完毕,代码入下:

class CDuiFrameWnd : public WindowImplBase
{
public:
	virtual LPCTSTR    GetWindowClassName() const   { return _T("DUIMainFrame"); }
	virtual CDuiString GetSkinFile()                { return _T("Res/LabelText.xml"); }
	virtual CDuiString GetSkinFolder()              { return _T(""); }

	virtual void Notify(TNotifyUI& msg)
	{
		if (msg.sType == _T("click"))
		{
			if (msg.pSender->GetName() == _T("closebtn"))
			{
				::PostQuitMessage(0);

			}
			else if (msg.pSender->GetName() == _T("okbtn"))
			{
				::MessageBox(NULL, _T("提示"), _T("确定按钮"), NULL);
			}
		}
	}

	virtual void InitWindow()
	{
		shu_pai_radio = static_cast  (m_pm.FindControl(_T("shu_pai_radio")));
		ASSERT(shu_pai_radio != NULL);
	}

public:
	CButtonUI* shu_pai_radio;
};

void Test()
{
	CDuiFrameWnd * duiFrame=new CDuiFrameWnd;
	duiFrame->Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
	duiFrame->CenterWindow();
	duiFrame->ShowModal();//模态窗口显示
}

  非模态窗口就是普通窗口,不阻塞线程,代码如下:

void Test(HWND p)
{
	CDuiFrameWnd * duiFrame=new CDuiFrameWnd;
	duiFrame->Create(p, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); //UI_WNDSTYLE_CHILD
	duiFrame->CenterWindow();
	duiFrame->ShowWindow();//非模态窗口显示
}

非模态窗口中,还有一类就是子窗口,代码如下:

void Test(HWND p)
{
	CDuiFrameWnd * duiFrame=new CDuiFrameWnd;
	duiFrame->Create(p, _T("DUIWnd"), UI_WNDSTYLE_CHILD, WS_EX_WINDOWEDGE); //UI_WNDSTYLE_FRAME
	duiFrame->ShowWindow();
}
2.作者答疑

  如有疑问,请留言。

关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0482s