关于获取实例句柄h和窗口句柄的若干方法

作者在 2008-09-21 19:10:44 发布以下内容


1.根据id获取窗口句柄
  Hwnd hwnd = GetDlgItem(hwndParent,id).
2.根据窗口句柄,获取id
    id = GetWindowLong(hwndChild,GWL_ID)
    id = GetDlgCtrlID(hwndchild).
3.获取实例句柄的若干方法
    hInst = GetWindowLong(hwnd,GWL_HINSTANCE)
    把HINSTANCE 作为全局变量保存.
    当建立窗口时,参数lparam指向了一个建立结构的地址.
    可以这样获取实例句柄
    hInst = ((LPCREATESTRUCT)lParam)->hInstance.
经验 | 阅读 8435 次
文章评论,共2条
vfdff(作者)
2008-09-21 21:50
1
GetWindowLong函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参数:&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hWnd:窗口句柄及间接给出的窗口所属的窗口类。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nlndex:指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要获得任意其他值,指定下列值之一:&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_EXSTYLE;获得扩展窗日风格。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_STYLE:获得窗口风格。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_WNDPROC:获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用GWL_WNDPROC函数调用窗口过程。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_HINSTANCE:获得应用事例的句柄。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_HWNDPAAENT:如果父窗口存在,获得父窗口句柄。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_ID:获得窗口标识。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GWL_USERDATA:获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在hWnd参数标识了一个对话框时也可用下列值:&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWL_DLGPROC:获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWL_MSGRESULT:获得在对话框过程中一个消息处理的返回值。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWL_USER:获得应用程序私有的额外信息,例如一个句柄或指针。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用&nbsp;&nbsp;&nbsp;GetLastError函数。&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <br />
备注:通过使用函数RegisterClassEx将结构WNDCLASSEX中的cbWndExtra单元指定为一个非0值来保留额外类的存储空间。
duanzelong
2008-09-25 15:06
2
好东西
游客请输入验证码
浏览1943087次