首页
学习
活动
专区
圈层
工具
发布

Visual C++ 2017从入门到精通 - 01 窗口

通过 HWND 获得 Cwnd 指针可以调用 Cwnd::FromHandle 函数。

2 获得应用程序主窗口的指针

主窗口指针保存在 CWinThread::m_pMainWnd 中。可以首先调用 AfxGetApp 函数获得应用程序的指针,然后通过应用程序指针获得主窗口的指针。

3 获得指定点的窗口

获得指定点的窗口可以调用 CWnd::WindowFromPoint 函数。

a 在 CDemoDlg 类中重载 CWnd::PreTranslateMessage 函数。

b 在 CDemoDlg 类中添加 WM_MOUSEMOVE 消息处理函数。

4 最大化和最小化窗口

最大化和最小化窗口可以调用 CWnd::SendMessage 函数发送最大化或最小化窗口消息。

LRESULT SendMessage(

UINT message,    //发送的消息,值为 WM_SYSCOMMAND 时表示系统命令消息。

WPARAM wParam = 0,     //当 message 值为 WM_SYSCMMAND,参数 wParam 值为 SC_MAXIMIZE、SC_MINIMIZE、

LPARAM lParam = 0 );      //SC_RESTORE 时分别表示最大化窗口、最小化窗口、恢复窗口。

5 关闭窗口

关闭窗口可以调用 CWnd::SendMessage 函数发送 WM_CLOSE 消息。框架将调用 CWnd::OnClose 函数处理 WM_CLOSE 消息。默认情况下,OnClose 函数将调用 CWnd::DestroyWindow 函数关闭窗口。

6 设置窗口的大小和位置

设置窗口大小和位置可通过两种方法:1.调用 CWnd::SetWindowPos 函数;2.调用 CWnd::MoveWindow 函数。

7 居中显示窗口

使窗口居中显示可以调用 CWnd::CenterWindow 函数。

8 顶层显示窗口

使窗口顶层显示,可以调用 CWnd::SetWindowPos 函数,设置对话框窗口的层次为最顶层。

9 设置窗口图标

首先调用 CWinApp::LoadIcon 函数加载图标资源,然后调用 CWnd::SetIcon 函数设置图标。

10 获得和设置窗口的标题

获得和设置窗口标题可以分别调用 CWnd::GetWindowText 和 CWnd::SetWindowText 函数。

11 显示或隐藏窗口的标题栏

显示或隐藏窗口的标题栏可以调用 CWnd::ModifyStyle 函数。

12 改变窗口形状

标准窗口的形状是矩形的。改变窗口的形状首先调用 CRgn 类的成员函数创建相应形状的区域,然后调用 CWnd::SetWindowRgn 函数将其设置为窗口区域。

CRgn 类的 CreateRectRgn、CreateEllipticRgn、CreatePolygonRgn 和 CreateRoundRectRgn 函数可以分别用来创建矩形、椭圆形、多边形和圆矩形区域。

13 设置窗口的透明区域

设置窗口的透明区域,首先调用 CRgn::CreateRectRgn 创建一个区域,然后调用 CRgn::CombineRgn 函数将需要透明的区域去掉,最后调用 CWnd::SetWindowRgn 函数将其设置为窗口区域。

14 透明窗口

实现透明窗口,首先调用 CWnd::ModifyStyleEx 函数,添加窗口的 WS_EX_LAYERED(0x00080000) 扩展风格,然后调用 SDK 的 SetLayeredWindowAttributes 函数设置窗口的透明度和透明色。

15 窗口闪烁

使窗口闪烁可以调用 CWnd::FlashWindow 函数。

16 图片窗口

实现图片窗口,首先调用 CRgn::CreateRectRgn 和 CRgn::CombineRgn 函数创建并合并多个区域,然后调用 CWnd::SetWindowRgn 函数将其设置为窗口区域。

VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数):

http://guohaiyang.blog.163.com/blog/static/3213403720081027104147/

17 动画窗口

实现动画窗口,可以调用 SDK 的 AnimateWindow 函数。

18 桌面窗口

获得桌面窗口,可以调用 CWnd::GetDesktopWindow 函数。

19 最小化桌面所有窗口

Window 中可以利用快捷键 Win+M 最小化所有窗口。因此,可以通过向任务栏窗口发送 ID 为 0x1F5(Win+M) 的 WM_HOTKEY 消息,使桌面所有窗口最小化。首先调用 CWnd::FindWindow 函数获得窗口,然后调用 CWnd::SendMessage 函数向窗口发送消息。

20 获取任务栏窗口

获得任务栏窗口,可以调用 CWnd::FindWinow 函数。

21 显示或隐藏任务栏

显示或隐藏任务栏,首先调用 CWnd::FindWindow 函数获得窗口,然后调用 CWnd::ShowWindow 函数隐藏或显示窗口。

22 枚举桌面所有顶层窗口

枚举桌面所有顶层窗口有以下两种方法:

a 调用 CWnd::GetDesktopWindow 和 CWnd::GetWindow 函数:首先调用 CWnd::GetDesktopWindow 函数,获得桌面窗口,然后调用 CWnd::GetWindow 函数,枚举所有子窗口。

b 调用 SDK 的 EnumWindows 函数。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OXEHmBe_icm8LQOXRWypKkug0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券