微信小程序斗地主14关残局70关怎么过

CStatic 全屏恢复的有关问题
CStatic 全屏恢复的有关问题
编辑:www.fx114.net
本篇文章主要介绍了"CStatic 全屏恢复的有关问题",主要涉及到CStatic 全屏恢复的有关问题方面的内容,对于CStatic 全屏恢复的有关问题感兴趣的同学可以参考一下。
CStatic 全屏恢复的有关问题CStatic 全屏恢复的问题.我的界面上有个CStatic显示视频, 我想做的是鼠标双击全屏,再双击恢复。参考了CSDN上的一些代码,全屏是没问题,恢复的话,cstitac的dbclick事件完全无响应,断点无法命中。当我没全屏的时候,dbclick事件是好用的,帮忙分析一下,谢谢。头文件:... & bool m_isF CWnd* p_ & CWnd* saveP & CRect m_...CPP文件:void CxxxxPlayerDlg::OnStnDblclickStatic(){ // TODO: 在此添加控件通知处理程序代码//#if 0 if( !m_isFull ) { m_isFull = p_static =(CWnd *)GetDlgItem(IDC_STATIC_PLAYER); saveParent = p_static-&GetParent(); & p_static-&SetParent( GetDesktopWindow() ); GetDesktopWindow()-&GetWindowRect(&m_rect);& p_static-&SetWindowPos(&wndTopMost,m_rect.left,m_rect.top,m_rect.right,m_rect.bottom,SWP_SHOWWINDOW); Invalidate(TRUE); } else { m_isFull = p_static-&SetParent(saveParent); ScreenToClient(&m_rect); p_static-&MoveWindow(m_rect,FALSE); Invalidate(TRUE); }//#endif}
重载CxxxxPlayerDlg PreTranslateMessage处理C/C++ code
BOOL CxxxxPlayerDlg::PreTranslateMessage(MSG* pMsg)
// TODO: 在此添加专用代码和/或调用基类
if(pMsg-&message == WM_LBUTTONDBLCLK)
static HWND hStaticWnd = NULL;
if(GetDlgItem(IDC_STATIC_PLAYER))
hStaticWnd = GetDlgItem(IDC_STATIC_PLAYER)-&GetSafeHwnd();
if(pMsg-&hwnd == hStaticWnd)
static BOOL m_isFull = FALSE;
static RECT m_
static DWORD dwStyle = 0;
HWND hwnd = pMsg-&
if( !m_isFull )
m_isFull =
::GetWindowRect(hwnd, &m_rect);
dwStyle = ::GetWindowLong(hwnd, GWL_STYLE);
::SetWindowLong(hwnd, GWL_STYLE, (dwStyle & ~WS_CHILD)| WS_POPUP);
::SetParent(hwnd, NULL);
::SetWindowPos(hwnd, HWND_TOPMOST,//HWND_TOP,//
0,0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
SWP_SHOWWINDOW|SWP_FRAMECHANGED|SWP_DRAWFRAME);
m_isFull =
POINT ptLT = {m_rect.left, m_rect.top};
POINT ptRB = {m_rect.right, m_rect.bottom};
::ScreenToClient(GetSafeHwnd(), &ptLT);
::ScreenToClient(GetSafeHwnd(), &ptRB);
::SetWindowPos(hwnd, GetSafeHwnd(),
ptLT.x, ptLT.y, ptRB.x-ptLT.x, ptRB.y-ptLT.y,
SWP_SHOWWINDOW|SWP_FRAMECHANGED|SWP_DRAWFRAME);
::SetWindowLong(hwnd, GWL_STYLE, dwStyle);
::SetParent(hwnd, GetSafeHwnd());
TRACE(_T(&WM_LBUTTONDBLCLK hWnd=%ld\n&), pMsg-&hwnd);
return TRUE;
return CDialog::PreTranslateMessage(pMsg);
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:CStatic 继承于 CWnd,是一种特殊的窗体。他可以显示文本字符串(这也是最常用的用法)、图标、指针(cursor)、位图和增强图文元件. 通常静态控件不提供输入和输出。但是如果把他的属性设置为 SS_NOTIFY,他可以通知其父窗口的击鼠标事件。
一,CStatic 用于显示文本
如果文本不变,可以直接设置其 Caption。如果想在运行过程中改变其显示文本,可以用如下方式: 
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);  
pStatic-&SetWindowText(&Just a Test of Static Control!&);
二,CStatic 用于显示图标
如果要显示图标,则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码如下: 
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);  
LONG style = GetWindowLong(pStatic-&GetSafeHwnd(), GWL_STYLE);style |= SS_ICON;  
style |= SS_CENTERIMAGE;  SetWindowLong(pStatic-&GetSafeHwnd(),GWL_STYLE,style);  
pStatic-&SetIcon(m_hIcon);
三,CStatic 用于显示指针cursor
如果要显示 cursor,则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码如下:  
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
LONG style = GetWindowLong(pStatic-&GetSafeHwnd(), GWL_STYLE); style |= SS_ICON; style |= SS_CENTERIMAGE;
SetWindowLong(pStatic-&GetSafeHwnd(),GWL_STYLE,style);
pStatic-&SetCursor(OnQueryDragIcon());
四,CStatic 用于显示位图
如果要显示图标,则必须要设置窗口属性为 SS_BITMAP 和 SS_CENTERIMAGE,实例代码如下:  
//获得指向静态控件的指针 CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
//获得位图句柄 HBITMAP hBitmap=::LoadBitmap(AfxGetApp()-&m_hInstance, MAKEINTRESOURCE(IDB_BITMAP2));
//LONG result = SetWindowLong(pStatic-&GetSafeHwnd(),GWL_STYLE,style);
//设置静态控件的样式,使其可以使用位图,并试位标显示使居中 pStatic-&ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
//设置静态控件显示位图 pStatic-&SetBitmap(hBitmap);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:90495次
积分:1795
积分:1795
排名:千里之外
原创:79篇
转载:78篇
评论:12条
阅读:7907
(4)(12)(9)(20)(17)(3)(20)(4)(26)(4)(19)(18)本文实现了在OCX控件上双击鼠标,控件全屏,再次双击鼠标,控件恢复原始状态的功能。
1、首先需要创建一个MFC的OCX控件,比如:MFCActiveXControl1。
2、在头文件中增加全屏、恢复需要用到的成员变量
MFCActiveXControl1Ctrl.h
&&& // ------窗口全屏、恢复------
&&& BOOL m_bMouseDbClickF&& // 双击标识
&&& WINDOWPLACEMENT m_wpP&& // 双击之前的窗口状态
&&& HWND m_hwndP&&&&&&&&& // 保存父窗口
3、进入类视图标签页。选择MFCActiveXControl1Ctrl类。
之后进入属性标签页,并点击重写按钮(在上方的一排按钮中)。
4、找到PreCreateWindow,创建PreCreateWindow函数的实现。.h和.cpp中会自动创建该函数。
MFCActiveXControl1Ctrl.h
&&& virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
5、进入类视图标签页。选择MFCActiveXControl1Ctrl类。
之后进入属性标签页,并点击消息按钮(在上方的一排按钮中)。
选择WM_LBUTTONDBCLK,增加OnLButtonDblClk函数。
选择WM_WINDOWPOSCHANGING,增加OnWindowPosChanging函数。
MFCActiveXControl1Ctrl.h
&&& afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
&&& afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
6、在MFCActiveXControl1Ctrl.h头文件中增加下面几个函数。
&&& ///& 取得显示器宽、高
&&& void GetMaxMonitorRect(LPRECT prc);
&&& ///& 最大化窗口
&&& int MaxiumWindow();
&&& ///& 恢复窗口
&&& int ResetWindowSize();
7、在cpp中实现上面的函数,MFCActiveXControl1Ctrl.cpp
///& 窗口创建之前进行的操作
BOOL CMFCActiveXControl1Ctrl::PreCreateWindow(CREATESTRUCT& cs)
cs.lpszClass = _T(&STATIC&);
cs.style = SS_NOTIFY | WS_VISIBLE | WS_CHILD;
m_hwndParent = cs.hwndP
return COleControl::PreCreateWindow(cs);
///& 鼠标左键双击事件(窗口最大化、恢复)
void CMFCActiveXControl1Ctrl::OnLButtonDblClk(UINT nFlags, CPoint point)
FireDblClick();
m_bMouseDbClickFlag = !m_bMouseDbClickF
if (m_bMouseDbClickFlag)
MaxiumWindow();
ResetWindowSize();
COleControl::OnLButtonDblClk(nFlags, point);
///& 窗口位置变化时被调用(调用了SetWindowPos之后,框架会调用该函数)
void CMFCActiveXControl1Ctrl::OnWindowPosChanging(WINDOWPOS* lpwndpos)
if (::GetParent(m_hWnd) != m_hwndParent)
GetMaxMonitorRect(&rc);
lpwndpos-&cx = rc.Width();
lpwndpos-&cy = rc.Height();
lpwndpos-&x = rc.
lpwndpos-&y = rc.
COleControl::OnWindowPosChanging(lpwndpos);
///& 取得显示器宽、高
void CMFCActiveXControl1Ctrl::GetMaxMonitorRect(LPRECT prc)
HMONITOR hM
MONITORINFOEX
hMonitor = MonitorFromWindow(m_hWnd, MONITOR_DEFAULTTONEAREST);
mi.cbSize = sizeof(mi);
GetMonitorInfo(hMonitor, &mi);
rc = mi.rcM
///& 最大化窗口
int CMFCActiveXControl1Ctrl::MaxiumWindow()
HWND hwnd = GetSafeHwnd();
// 取得显示器的宽、高
GetMaxMonitorRect(&rc);
// 计算画面宽、高
int nWidth = rc.right - rc.
int nHeight = rc.bottom - rc.
// 取得原始位置并保存
m_wpPrev.length = sizeof(WINDOWPLACEMENT);
::GetWindowPlacement(m_hWnd, &m_wpPrev);
// 窗口全屏
SetParent(NULL);
DWORD dwFlag = SWP_DRAWFRAME;
BOOL bSucceed = ::SetWindowPos(m_hWnd, HWND_TOPMOST, rc.left, rc.top, nWidth, nHeight, dwFlag);
///& 恢复窗口
int CMFCActiveXControl1Ctrl::ResetWindowSize()
if (NULL != m_hwndParent)
::SetParent(m_hWnd, m_hwndParent);
m_wpPrev.flags = SW_SHOWMAXIMIZED;
::SetWindowPlacement(m_hWnd, &m_wpPrev);
HWND hWnd = ::FindWindow(&Shell_TrayWnd&, NULL);
HWND hStar = ::FindWindow(&Button&, NULL);
::ShowWindow(hWnd, SW_SHOW);
::ShowWindow(hStar, SW_SHOW);
8、修改警告错误
&&& HWND hWnd = ::FindWindow(&Shell_TrayWnd&, NULL);
&&& HWND hStar = ::FindWindow(&Button&, NULL);
这样写在字符集是Unicode的情况下会报错。改成下面这样即可
&&& HWND hWnd = ::FindWindow(_T(&Shell_TrayWnd&), NULL);
&&& HWND hStar = ::FindWindow(_T(&Button&), NULL);
或者将字符集设置为未设置也行。
9、编译控件,可以使用网页调用控件。
在控件上双击,控件就会全屏,再次双击,恢复原始状态。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:258920次
积分:2523
积分:2523
排名:第14051名
原创:48篇
转载:29篇
评论:26条
(1)(3)(1)(1)(1)(2)(1)(1)(3)(1)(4)(4)(5)(8)(2)(4)(6)(3)(2)(1)(3)(7)(1)(2)(2)(1)(2)(1)(1)(1)(2)(1)(1)(1)(7)MFC对话框中设置了几个继承自cstatic的控件,但刷新其中一个的文字时其他控件的文字都会消失是为什么?
下了订单半小时不到就不能取消了?
答: 比如常见的网吧电脑用的就是无盘网络技术。
优点:资源共享,节省资金。
缺点:访问速度慢,容易中毒!
答: dos下,输入netsh winsock reset 回车后重起.
或开始--运行--输入cmd --确定--弹出窗口后输入netsh winsock res...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区

我要回帖

更多关于 微信小程序斗地主闯关 的文章

 

随机推荐