MFC ActiveX 全屏?

wzw200 2009-06-02 05:44:03
我用MFC 写了一个ActiveX的播放器
可不没有办法让他全屏

我在网上找了一些资料,
发现都不太好用

那位做过这方面的程序。给点意间。谢谢

下面是窗体全屏代码放在ActiveX里不能用:


bool m_bFullScreen=true;//!m_bFullScreen; // 设置全屏显示标志
//一种更好的全屏显示
LONG style = ::GetWindowLong(this->m_hWnd,GWL_STYLE);
if(m_bFullScreen)//全屏显示
{
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(this->m_hWnd,GWL_STYLE, style);
this->ShowWindow(SW_SHOWMAXIMIZED);
CRect rect;
this->GetWindowRect(&rect);
::SetWindowPos(this->m_hWnd,HWND_NOTOPMOST,rect.left-1, rect.top-1, rect.right-rect.left + 3, rect.bottom-rect.top + 3, SWP_FRAMECHANGED);
}
else
{
style |= WS_DLGFRAME | WS_THICKFRAME;
SetWindowLong(this->m_hWnd, GWL_STYLE, style);
this->ShowWindow(SW_NORMAL);
}
...全文
573 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzz0513 2010-01-25
  • 打赏
  • 举报
回复
像你这样处理的话,alt+tab键切换窗口的时候就异常了。
wzw200 2009-06-20
  • 打赏
  • 举报
回复
对话框显示的时候就崩溃了 ,这个我也说不清啊 你调试下吧 !
arschcx 2009-06-16
  • 打赏
  • 举报
回复
再描述一下,我要写的控件是图形控件,刚刚试了一下在对话框里面调用控件本身,对话框显示的时候就崩溃了,苦恼,盼高人指点
arschcx 2009-06-16
  • 打赏
  • 举报
回复
#re wzw200
请问如果我要在对话框里面显示控件的全部内容:比如线条等等,然后全屏对话框,这个能不能实现?
wzw200 2009-06-03
  • 打赏
  • 举报
回复
好的 做找资料做出来吧
把下面的代码给大家了

思路:
双击窗体
1。把嵌入在ActiveX里有窗体“跳”出来
2。隐藏任务栏
再次双击和上面相反,又回到了这个ActiveX里去了


bool m_bFullScreen=false;
HWND m_hWndParent;
void CFfDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CDialog::OnLButtonDblClk(nFlags, point);

m_bFullScreen=!m_bFullScreen; // 设置全屏显示标志
//一种更好的全屏显示
LONG style = ::GetWindowLong(this->m_hWnd,GWL_STYLE);
if(m_bFullScreen)//全屏显示
{
//用MFC隐藏系统任务栏
CWnd * wnd = FindWindow("Shell_TrayWnd",NULL);
wnd->SetWindowPos(NULL,0,0,0,0,SWP_HIDEWINDOW);

m_hWndParent=::GetParent(m_hWnd);
::ShowWindow(m_hWndParent,SW_HIDE);
::SetParent(m_hWnd,NULL);
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(this->m_hWnd,GWL_STYLE, style);
this->ShowWindow(SW_SHOWMAXIMIZED);
//CRect rect;
//this->GetWindowRect(&rect);
//::SetWindowPos((this->m_hWnd,HWND_NOTOPMOST,rect.left-1, rect.top-1, rect.right-rect.left + 3, rect.bottom-rect.top + 3, SWP_FRAMECHANGED);

int nScreenWidth=GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight=GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->m_hWnd,HWND_NOTOPMOST,0,0, nScreenWidth,nScreenHeight, SWP_FRAMECHANGED);
}
else
{

//用MFC显示系统任务栏
CWnd * wnd = FindWindow("Shell_TrayWnd",NULL);
wnd->SetWindowPos(NULL,0,0,0,0,SWP_SHOWWINDOW);

style |= WS_DLGFRAME | WS_THICKFRAME;
SetWindowLong(this->m_hWnd, GWL_STYLE, style);
::SetParent(m_hWnd,m_hWndParent);
::ShowWindow(m_hWndParent,SW_SHOW);
}
}

wshcdr 2009-06-03
  • 打赏
  • 举报
回复
怎么新创建啊?
蒋晟 2009-06-03
  • 打赏
  • 举报
回复
新创建一个全屏窗口吧,比较容易
skyxie 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oyljerry 的回复:]
引用 3 楼 wzw200 的回复:
还在吗
IWebBrowser2::put_FullScreen(VARIANT_TRUE);

非静态成员函数的非法调用 为什么呢

你拿到当前Browser的指针m_pWebBrowser->put_FullScreen(VARIANT_TRUE);
[/Quote]

yes
oyljerry 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wzw200 的回复:]
还在吗
IWebBrowser2::put_FullScreen(VARIANT_TRUE);

非静态成员函数的非法调用  为什么呢
[/Quote]
你拿到当前Browser的指针m_pWebBrowser->put_FullScreen(VARIANT_TRUE);
wzw200 2009-06-02
  • 打赏
  • 举报
回复
还在吗
IWebBrowser2::put_FullScreen(VARIANT_TRUE);

非静态成员函数的非法调用 为什么呢
wzw200 2009-06-02
  • 打赏
  • 举报
回复
这样就可以了吗 好的 我先试试
skyxie 2009-06-02
  • 打赏
  • 举报
回复
你要先把IE设成全屏
IWebBrowser2::put_FullScreen(VARIANT_TRUE);

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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