MFC常用函数Ⅰ

①函数用于获取控件的句柄

CWnd* GetDlgItem(int nID) const;//检索指向对话框或其他窗口中指定控件或子窗口的指针。
HWND GetSafeHwnd() const;//用于得到窗口指针句柄。
GetDlgItem(ID)->GetSafeHwnd();//通过第一个函数返回的CWnd类指针调用第二个函数获取句柄

②获取本窗体句柄

this->GetSafeHwnd();//本窗体句柄           

 ③获取一个指定子窗口的父窗口句柄

HWND GetParent (HWND hWnd);
//hWnd:子窗口句柄,函数要获得该子窗口的父窗口句柄。
//如果函数成功,返回值为父窗口句柄。如果窗口无父窗口,则函数返回NULL。

④改变指定窗口的标题栏的文本内容(如果窗口有标题栏)。如果指定窗口是一个控件,则改变控件的文本内容。

BOOL SetWindowText(HWND hwnd,LPCTSTRlp String);
/*hWnd
要改变文本内容的窗口或控件的句柄。
lpString
指向一个空结束的字符串的指针,该字符串将作为窗口或控件的新文本。
*/

⑤窗口操作

        1.改变指定窗口的属性

        2.获取指定窗口的有关信息

1.    LONG SetWindowLong(
    HWND hWnd,               // handle to window
    int nIndex,              // offset of value to set
    LONG dwNewLong           // new value
);

2.    Long GetWindowLong(HWND hWnd,int nlndex);

参数nIndex

宏定义

常量

描述

GWL_EXSTYLE

-20

获取扩展窗口样式

GWL_HINSTANCE

-6

获取应用实例句柄

GWL_HWNDPARENT

-8

获取所有的窗口句柄

GWL_ID

-12

获取窗口ID

GWL_STYLE

-16

获得窗口样式

GWL_USERDATA

-21

获取用户设置的32位数据,其值默认为0

GWL_WNDPROC

-4

获取窗口过程地址或句柄。

参数dwNewLong

LVS_ICON大图标显示
LVS_SMALLICON 小图标显示
LVS_LIST 列表显示
LVS_REPORT详细报表显示
LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
LVS_SINGLESEL 同时只能选中列表中一项

⑥改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序

BOOL SetWindowPos(
    const CWnd* pWndInsertAfter,
    int x,//指定窗口左侧的新位置。
    int y,//指定窗口右侧的新位置。
    int cx,//指定窗口的新宽度。
    int cy,//指定窗口的新高度。
    UINT nFlags);

参数  pWndInsertAfter和nFlags可查看:MFC 桌面应用程序 | Microsoft Docs


⑦获取窗口位置

        1.获取指定窗口的边框矩形的大小

        2.获取指定窗口客户区的大小

        3.改变指定窗口的位置和大小

1.    BOOL GetWindowRect(HWND hWnd,LPRECT lpRect);
//LPRECT 指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。
2.    BOOL GetClientRect(HWND hWnd, LPRECT lpRect );
3.    BOOL MoveWindow( HWND hWnd,int X, int Y, int nWidth,int nHeight,BOOL bRepaint );
        //hWnd指定了窗口的句柄
        //x指定了CWnd的左边的新位置。
        //y指定了CWnd的顶部的新位置。
        //nWidth指定了CWnd的新宽度。
        //nHeight指定了CWnd的新高度。
        //bRepaint指定了是否要重画CWnd。
typedef struct tagRECT {
  LONG left;//指定矩形左上角的x坐标。
  LONG top;//指定矩形左上角的y坐标。
  LONG right;//指定矩形右下角的x坐标。
  LONG bottom;//指定矩形右下角的y坐标。
} RECT, *PRECT, *NPRECT, *LPRECT;

⑧坐标转换

        1.当前窗体坐标转换为屏幕坐标

        2.屏幕坐标转换为当前窗体坐标

1.   void ClientToScreen(LPRECT lpRect) const;// 将显示中的给定点或矩形的客户端坐标转换为屏幕坐标。
//lpRect 指向包含要CRect转换的客户端坐标的结构或对象。
2.   void ScreenToClient(LPRECT lpRect) const;//将显示中的给定点或矩形的屏幕坐标转换为客户端坐标。

⑨重绘

        1.使窗口无效化,向消息队列发送WM_PAINT消息,需要等待处理,再进行重绘

        2.绕过消息队列,直接给窗口发送WM_PAINT消息,立即重绘

1.    void Invalidate( BOOL bErase = TRUE );
2.    BOOL UpdateWindow(HWND hWnd);

⑩该函数允许/禁止指定的窗口或控件接受鼠标和键盘的输入(是否可用)

        1.设置控件是否可用

        2.判断控件是否可用

        3.设置控件是否可见

1.    BOOL EnableWindow(HWND hWnd,BOOL bEnable);
2.    BOOL IsWindowEnabled(HWND hWnd);
3.    BOOL ShowWindow(HWND hWnd, int nCmdShow);
        //nCmdShow 指定窗口如何显示。参数具体请参考下面的表格

宏定义

常量

描述

SW_FORCEMINIMIZEnCmdShow=11在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。
SW_HIDEnCmdShow=0隐藏窗口并激活其他窗口。
SW_MAXIMIZEnCmdShow=3最大化指定的窗口。
SW_MAXIMIZEnCmdShow=6最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
SW_RESTOREnCmdShow=9激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。
SW_SHOWnCmdShow=5在窗口原来的位置以原来的尺寸激活和显示窗口。
SW_SHOWDEFAULTnCmdShow=10依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。
SW_SHOWMAXIMIZEDnCmdShow=3激活窗口并将其最大化。
SW_SHOWMINIMIZEDnCmdShow=2激活窗口并将其最小化。
SW_SHOWMINNOACTIVEnCmdShow=7窗口最小化,激活窗口仍然维持激活状态。
SW_SHOWNAnCmdShow=8以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNOACTIVATEnCmdShow=4以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNORMALnCmdShow=1激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值