• WinAPI GetWindowLong() SetWindowLong()


    GetWindowLong() SetWindowLong() 详解

    这两个函数在windows程序中有着重要的作用,依照MSDN说明以下这两个函数。

    /*****************************************************************/

    GetWindowLong

    这个函数可以通过一个窗口的句柄来得到窗口的一些其他的信息,比如ID等

    语法:

    LONG GetWindowLong( HWND hwnd,int nIndex);

    ·hwnd 是要查询的窗口的句柄

    ·nIndex 有几个标识符来让我们得到不同的信息:

    GWL_EXSTYLE extended windows styles

    GWL_STYLE   返回windows创建时的style

    GWL_WNDPROC 返回windows 的消息处理函数的地址

    GWL_HINSTANCE 返回应用程序的实例句柄

    GWL_ID 返回窗口的ID

    GWL_HWNDPARENT 返回这个窗口的父窗口句柄

    GWL_USERDATA 返回和这个窗口相关联的用户数据

    如果hwnd是一个对话框句柄,就可以使用下面几个标志:

    DWL_DLGPROC 同样是消息处理函数的地址

    DWL_MESRESULT 返回消息处理函数中的消息(????)

    DWL_USER 一些附加的内容

    ·返回值

         如果函数调用成功,就会返回一个所要查询的32-bit的值

         如果不成功,就会返回0.

    比如我们想要获得一个窗口的id,可以这样用

    Id = GetWindowLong(hwnd,GWL_ID);

    /**********************************************************/

    SetWindowLong

    该函数与GetWindowLong相仿,不过就是由获取信息变成了改变信息,我们可以通过这个函数来设定窗口的一些字段和属性。

    语法

    LONG SetWindowLong( HWND hwnd, int nIndex,   LONG dwNewLong );

    ·hwnd 就是窗口的句柄

    · nIndex 这个字段的标志和GetWindowLong是一样的,可以通用

    ·dwNewLong 是我们需要设定的那个值,要用它对窗口进行修改。

    返回值:

    当函数调用成功时,函数返回被修改的那个值。

    如果不成功,函数返回0。

    举个简单的例子,如果说我们想把主窗口的消息处理函数改为WndProcChanged(HWND,UINT,WPARAM,LPARAM);

    我们可以这样写:

       SetWindowLong(hwnd, GWL_WNDPROC, (LONG)WndProcChanged);

    这样,窗口的消息处理函数就成了我们刚刚声明的那个函数。其他的标志符都可以这样用。

  • 相关阅读:
    A “word-wrap” functionality(一个字符串包裹函数)
    First Unique Character in a String 的变种问题返回第一个找到符合条件的字符
    北美一工作搜索引擎公司技术岗面经
    一房地产数据服务初创公司的面经
    Prime numbers from 1 to 100 (打印 100 以内的素数)
    dubbo面试题(1)
    maven工具日常开发常用命令
    BaseMapper和继承
    《计算机是怎样跑起来的》读书笔记(2)
    AEAP工作总结模板套路
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662820.html
Copyright © 2020-2023  润新知