窗体:GetWindowLong()

函数原型:

LONG GetWindowLong( HWND hWnd,int nIndex )

参数:

hWnd:指定窗口的句柄

nIndex:需要获得的信息的类型

值            功能

nIndex取值如下:

GWL_EXSTYLE    得到扩展的窗口风格

GWL_STYLE      得到窗口风格

GWL_WNDPROC    得到窗口回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用

GWL_HINSTANCE  得到应用程序运行实例的句柄

GWL_HWNDPARENT 得到父窗口的句柄

GWL_ID         得到窗口的标识符

GWL_USERDATA   得到和窗口相关联的32位的值(每一个窗口都有一个有意留给创建窗口的应用程序是用的32位的值)

当hWnd标识一个对话框时可以使用下面的值

Value Action

DWL_DLGPROC   得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用

DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值

DWL_USER      得到额外的应用程序私有信息,如一些句柄和指针等

返回值:

成功时,返回一个请求的32位的值

失败时,返回0,可以使用GetLastError来取得错误信息

时间: 2025-01-01 04:20:06

窗体:GetWindowLong()的相关文章

禁用窗体关闭按钮(使用GetWindowLong修改GWL_STYLE)

一般我们不想让窗体能够关闭, 首先想到的是在OnCloseQuery事件里设置CanClose := False, 不过在某些情况下这个会和程序关闭窗体的业务逻辑产生冲突 所以写了下面这个函数, 可以设置窗体上的部分控制按钮禁用和启用, 仅仅是按钮显示及对鼠标键盘的响应, 按钮功能方面不影响 type TSetWinButtons = set of (swb_Close, swb_Minimize, swb_Maximize); {设置窗体关闭按钮状态} procedure SetWindowB

纯win32实现PNG图片透明窗体

#include <windows.h> #include <gdiplus.h> /*  GDI+ startup token */ ULONG_PTR gdiplusStartupToken; /*  Declare Windows procedure  */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); // UpdateLayeredWindow Defination typedef BOOL(

Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法

最近在Delphi开发中用到了无边框窗体显示时,无法在任务栏使用右键弹出菜单的情况,经过整理,通过以下方法可以使右键菜单出现: procedure Tfrm_Base.InitSysMenu;var  WindowStyle: Integer;begin  WindowStyle := GetWindowLong(Handle, -16);  WindowStyle := WindowStyle or WS_SYSMENU or WS_MINIMIZEBOX;  WindowStyle:=Win

窗体皮肤实现 - 在标题栏上增加快速工具条(四)

前面做的工作就是想在标题区域增加快速工具条.前续的基础工作完成,想要在标题区域增加特殊区域都非常方便.只要在绘制时控制自定义区域需要占用标题区域多少空间,然后直接在所占位置绘制.做这个事情前,稍微把代码规整了下.所以界面皮肤处理放到一个单元中. 主要处理步骤 1.划出一个新区域(整个工具条作为一个区域) 2.处理区域检测(HitTest) 3.如果是新区域,把相应消息传给这个区域处理. 4.响应鼠标点击,执行Action 通过上述步骤就能扩展出所想要的标题区快速工具条的. 标题按钮区域是作为一个

窗体的扩展样式GWL_EXSTYLE用于SetWindowLong

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_LAYERED ); WS_EX_ACCEPTFILES = 0x00000010 指明了一个已创建视窗具有拖拽文件功能 WS_EX_APPWINDOW = 0x00040000 强制一个可见的顶级视窗到工具栏上 WS_EX_CLIENTEDGE = 0x00000200 使一个视窗具有凹陷边框 W

窗体皮肤实现 - 重绘窗体非客户区(三)

窗体边框基本的绘制和控制完成,在第二篇中主要遗留的问题. 标题区域图标和按钮没绘制 缩放时客户区显示有问题 解决完下面的问题,皮肤处理基本完整.大致的效果GIF GIF中TShape的颜色表现有些问题,实际是正常的. 绘制标题区域内容 获取标题有效区域 绘制窗体图标 绘制按钮 绘制标题 标题区域主要考虑窗体是否在最大化状态,最大化后实际的标题绘制区域会有变化.可以通过 IsZoomed 或 GetWindowLong(Handle, GWL_STYLE) and WS_MAXIMIZE = WS

C# 制作透明窗体

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using ControlExs; namespace

NSIS隐藏窗体标题栏自带的button(最大化,最小化,关闭X)

这个问题实在八月份逛csdn论坛的时候偶然遇到的,当时比較好奇楼主为啥要隐藏关闭button.就顺口问了下,结果楼主已经弃楼.未给出原因,猜着可能是为了做自己定义页面美化,无法改变按纽外观之类的,后来琢磨了下,认为改动窗体风格比較简单.这里使用的是GetWindowLong与 SetWindowLong两个API. Function onGUIInit System::Call 'user32::GetWindowLong(i$hwndparent,i -16)i.r0' intop $1 0x

使窗体拥有透明效果的API

一.背景FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAttributes是windows的新api,win2000以上才支持,它能使使窗体拥有透明效果.我在Google搜了下,介绍SetLayeredWindowAttributes的文章大多是delphi的和vb的.好不容易找到一篇vc的,依法炮制后,vc的IDE却说我SetLayeredWindowA