16,471
社区成员
发帖
与我相关
我的任务
分享
// 将HWND显示到CControlUI上面
class CWndUI: public CControlUI
{
public:
CWndUI(): m_hWnd(NULL){}
virtual void SetVisible(bool bVisible = true)
{
__super::SetVisible(bVisible);
::ShowWindow(m_hWnd, bVisible);
}
virtual void SetInternVisible(bool bVisible = true)
{
__super::SetInternVisible(bVisible);
::ShowWindow(m_hWnd, bVisible);
}
virtual void SetPos(RECT rc,bool bNeedInvalidate = true)
{
__super::SetPos(rc);
::SetWindowPos(m_hWnd, NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER | SWP_NOACTIVATE);
}
BOOL Attach(HWND hWndNew)
{
if (! ::IsWindow(hWndNew))
{
return FALSE;
}
m_hWnd = hWndNew;
return TRUE;
}
HWND Detach()
{
HWND hWnd = m_hWnd;
m_hWnd = NULL;
return hWnd;
}
HWND GetHWND()
{
return m_hWnd;
}
protected:
HWND m_hWnd;
};
class CDuiPlayFrameWnd : public WindowImplBase
{
virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); }
virtual CDuiString GetSkinFile() { return _T("PlayWindow.xml"); }
virtual CDuiString GetSkinFolder() { return _T(""); }
virtual CControlUI* CreateControl(LPCTSTR pstrClassName)
{
if (_tcsicmp(pstrClassName, _T("WndPlayPanel")) == 0)//WndPlayPanel播放控件
{
pUI = new CWndUI;
//如果加上WS_POPUP能全屏,但是这个子窗口就会不跟随父窗口了
hWnd = CreateWindow(_T("#32770"), NULL, WS_VISIBLE | WS_CHILD, 0, 0, 0, 0, m_PaintManager.GetPaintWindow(), (HMENU)0, NULL, NULL);
pUI->Attach(hWnd);
return pUI;
}
return NULL;
}
virtual void Notify(TNotifyUI& msg)
{
if (msg.sType == _T("click"))
{
if (msg.pSender->GetName() == _T("BtnFS"))//点击全屏按钮,下面的代码都是不行的
{
///////////////////////////////////////////////////////////////////////////////////////////////////
//LONG Style = GetWindowLong(hWnd, GWL_STYLE);
//Style = WS_CHILD | WS_POPUP;
//SetWindowLong(hWnd, GWL_STYLE, Style);
////////////////////////////////////////////////////////////////////////////////////////////////////
//SetWindowLong(hWnd, GWL_STYLE, WS_VISIBLE | WS_MAXIMIZE);//不成功
//SetWindowLong(hWnd, GWL_STYLE, WS_VISIBLE | WS_POPUP);
//RECT r;
//GetWindowRect(m_hWnd, &r);
//RECT rr;
//GetWindowRect(hWnd, &rr);
////////////////////////////////////////////////////////////////////////////////////////////////////
//SetWindowPos(hWnd, NULL, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
//ShowWindow(hWnd, SW_MAXIMIZE);
//UpdateWindow(hWnd);
//////////////////////////////////////////
}
}
}
public:
CWndUI *pUI;
}
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance);
HRESULT Hr = ::CoInitialize(NULL);
if (FAILED(Hr)) return 0;
CDuiPlayFrameWnd PlayWindowFrame;
PlayWindowFrame.Create(NULL, _T("DUISWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
PlayWindowFrame.CenterWindow();
PlayWindowFrame.ShowModal();
::CoUninitialize();
return 0;
}
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window size="720,480" sizebox="4,4,4,4" caption="0,0,0,30" mininfo="720,480">
<VerticalLayout enabled="true" width="720" height="480">
<HorizontalLayout enabled="true" height="30" bkimage="file='PlayWindow.png' corner='160,32,0,0'">
<VerticalLayout enabled="true" height="30" />
<VerticalLayout enabled="true" width="568" height="30">
<Button name="BtnFS" float="true" tooltip="全屏" pos="460,5,0,0" width="24" height="22" align="center" fivestatusimage="file='FS.png'" />
</VerticalLayout>
</HorizontalLayout>
</VerticalLayout>
</Window>