General Window

2016-02-19 12:19 3 1 收藏

下面图老师小编跟大家分享General Window,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

从VC提供的MFC类派生图中我们可以看出窗口的派生关系,派生图,

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

所有的窗口类都是由CWnd派生。所有CWnd的成员函数在其派生类中都可以使用。本节介绍一些常用的功能给大家。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

改变窗口状态:
BOOL EnableWindow( BOOL bEnable = TRUE );可以设置窗口的禁止/允许状态。BOOL IsWindowEnabled( );可以查询窗口的禁止/允许状态。
BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 )/BOOL ModifyStyleEx( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 );可以修改窗口的风格,而不需要调用SetWindowLong
BOOL IsWindowVisible( ) 可以检查窗口是否被显示。
BOOL ShowWindow( int nCmdShow );将改变窗口的显示状态,nCmdShow可取如下值:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

SW_HIDE 隐藏窗口

SW_MINIMIZE SW_SHOWMAXIMIZED 最小化窗口

SW_RESTORE 恢复窗口

SW_SHOW 显示窗口

SW_SHOWMINIMIZED 最大化窗口

改变窗口位置:
void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );可以移动窗口。
void GetWindowRect( LPRECT lpRect ) ;可以得到窗口的矩形位置。
BOOL IsIconic( ) ;可以检测窗口是否已经缩为图标。
BOOL SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );可以改变窗口的Z次序,此外还可以移动窗口位置。

使窗口失效,印发重绘:
void Invalidate( BOOL bErase = TRUE );使整个窗口失效,bErase将决定窗口是否产生重绘。
void InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE )/void InvalidateRgn( CRgn* pRgn, BOOL bErase = TRUE );将使指定的矩形/多边形区域失效。

窗口查找:
static CWnd* PASCAL FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName );可以以窗口的类名和窗口名查找窗口。任一参数设置为NULL表对该参数代表的数据进行任意匹配。如FindWindow("MyWnd",NULL)表明查找类名为MyWnd的所有窗口。
BOOL IsChild( const CWnd* pWnd ) 检测窗口是否为子窗口。
CWnd* GetParent( ) 得到父窗口指针。
CWnd* GetDlgItem( int nID ) 通过子窗口ID得到窗口指针。
int GetDlgCtrlID( ) 得到窗口ID值。
static CWnd* PASCAL WindowFromPoint( POINT point );将从屏幕上某点坐标得到包含该点的窗口指针。
static CWnd* PASCAL FromHandle( HWND hWnd );通过HWND构造一个CWnd*指针,但该指针在空闲时会被删除,所以不能保存供以后使用。

时钟:
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );可以创建一个时钟,如果lpfnTimer回调函数为NULL,窗口将会收到WM_TIMER消息,并可以在afx_msg void OnTimer( UINT nIDEvent );中安排处理代码
BOOL KillTimer( int nIDEvent );删除一个指定时钟。

可以利用重载来添加消息处理的虚函数:
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );窗口被创建时被调用
afx_msg void OnDestroy( );窗口被销毁时被调用
afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );需要得到窗口尺寸时被调用
afx_msg void OnSize( UINT nType, int cx, int cy );窗口改变大小后被调用
afx_msg void OnMove( int x, int y );窗口被移动后时被调用
afx_msg void OnPaint( );窗口需要重绘时时被调用,你可以填如绘图代码,对于视图类不需要重载OnPaint,所有绘图

来源:https://www.tulaoshi.com/n/20160219/1600576.html

延伸阅读
标签: Web开发
JavaScript中的Window窗口对象 他是JavaScript中最大的对象,它描述的是一个浏览器窗口。一般要引用它的属性和方法时,不需要用“window.xxx”这种形式,而直接使用“xxx”。一个框架页面也是一个窗口。 Window窗口对象有如下属性: name 窗口的名称,由打开它的连接(a target="...")或框架页(frame name="...")或某...
之前发了一篇使用Window API来实现管道技术的文章,后来改用C#来实现相同的效果,发现C#本身方便的进程线程机制使工作变得简单至极,随手记录一下。 首先,我们可以通过设置Process类,获取输出接口,代码如下: Process proc = new Process(); proc .StartInfo.FileName = strScript; proc .StartInfo.WorkingDirectory = strDirectory; pro...
标签: Web开发
昨晚有一段进站滤镜效果失效, 研究发现,某段JS中调用了window.onload = function()属性,同时在页面上又有body onload语句。导致window.onload事件覆盖掉body onload事件。 解决方法: attachEvent给onload添加所需运行的函数 if (document.all){ window.attachEvent('onload',FuncName) } else{ window.addEventListener('load',Fun...
标签: 电脑入门
1. 关于windows8的安装 1)下载windows8的光盘映像文件(.iso),下载地址网上很多,此处就不列出了(拷贝别人的^_^,文件名:cn_windows_8_x64_dvd_915407.iso) 2)制作U盘映像,本人使用的UltroISO,制作过程非常简单。 3)重启电脑,更改BIOS的首选启动项为U盘启动,安装windows8,安装过程需要输入密钥(本人使用的是:TK8TP-9JN6P-7X7WW-RFFTV...
    对桌面应用而言,X Window视窗系统是Linux中极具魅力的部分,充分挖掘其潜能会给我们的应用带来许多益处。下面就以流行的TurboLinux中文版为例,对应用中的常见问题做解答。 如何快速启动X Window图形登录界面? 在超级用户命令提示符#后键入init 5 指令。 说明∶Linux分为多个运行态(级别),默认的是3号...

经验教程

58

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部