zoukankan      html  css  js  c++  java
  • 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);

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

  • 相关阅读:
    Win10 UWP Tile Generator
    Win10 BackgroundTask
    UWP Tiles
    UWP Ad
    Win10 build package error collections
    Win10 八步打通 Nuget 发布打包
    Win10 UI入门 pivot multiable DataTemplate
    Win10 UI入门 导航滑动条 求UWP工作
    UWP Control Toolkit Collections 求UWP工作
    Win10 UI入门 SliderRectangle
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662820.html
Copyright © 2011-2022 走看看