100分!win32+Duilib写视频播放器的,有经验的高手请入。

maya8maya85 2016-06-20 10:18:22
我的问题不难,但请高手们要给出代码,而不是随便写个函数名,写个宏。如果是这样,分是不会给的。
我想要的效果就一个,全屏与退出全屏。请对win32+duilib了解高手们指导。
现在的情况是:

代码如下:以省去不重要的代码
// 将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:
<?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>

...全文
250 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
maya8maya85 2016-06-25
  • 打赏
  • 举报
回复
自己解决了,CSDN的人也是一般般,以为这里会有很多人才

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧