logo资料库

Ocx全屏,Esc退出.doc

第1页 / 共1页
资料共1页,全文预览结束
MoveWindow(oldrect);//oldrect在OnPaint中获取
1.双击ocx中Dialog对话框全屏时只在左上角显示,而不是全屏。 查找原因是在Dialog的的父窗口的OnPaint函数中有对全屏的Dialog移动操作,所以未能全屏 在ocx的OnDraw操作Dialog同样出现不能全屏问题。父窗口在移动Dialog时先判断Dialog是否全屏 2.Dialog设置全屏时,窗口焦点不在Dialog上,无法获取键盘esc消息,用GetAsyncKeyState函数可以 获取任何时候键盘的按下状态,所以在Dialog中创建一线程一直抓取键盘状态 程序退出析构时,m_runing=false;::Sleep(10);以免读取不到m_running值,发展异常。 void GetKeyState(void) { while(m_running) { int ret=::GetAsyncKeyState(VK_ESCAPE)&0x8000; if(ret>0&&isSetFull) { } SetFullScreenState(); GetParent()->Invalidate(); ::Sleep(10); } } void SetFullScreenState() { if(!isSetFull) { m_parent=this->GetParent(); SetParent(GetDesktopWindow()); int width = ::GetSystemMetrics(SM_CXSCREEN); int height = ::GetSystemMetrics(SM_CYSCREEN); iSetForegroundWindow(); BringWindowToTop(); SetWindowPos(&wndTopMost,0, 0,width,height,SWP_SHOWWINDOW); isSetFull=true; } else { } } SetParent((CWnd*)m_parent); MoveWindow(oldrect);//oldrect在OnPaint中获取 ShowWindow(SW_SHOW); isSetFull=false;
分享到:
收藏