封装窗口类用到的两个函数的效果验证
来源:互联网 发布:股票交易统计软件 编辑:程序博客网 时间:2024/05/17 21:40
#include <windows.h>
HINSTANCE g_hInst1 = NULL;
HINSTANCE g_hInst2 = NULL;
HWND g_hWnd1 = NULL;
HWND g_hWnd2 = NULL;
HWND g_hWnd3 = NULL;
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
g_hWnd3 = hWnd;// 核实一下窗口句柄
switch(uMsg)
{
case WM_CREATE:
{
g_hInst2 = (HINSTANCE)(((LPCREATESTRUCT)lParam)->lpCreateParams);// 提取出传过来的程序句柄存入g_hInst2
SetWindowLong(hWnd, GWL_USERDATA, (LONG)hWnd);// 压入当前的窗口句柄
}
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nCmdShow)
{
g_hInst1 = hInst;// 记录程序句柄在g_hInst1;
WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "haha";
RegisterClass(&wc);
g_hWnd1 = CreateWindowEx(0, "haha", "hahaha", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInst, (void*)hInst) ;// 记录窗口句柄在g_hWnd1,并把程序句柄给消息处理函数
g_hWnd2 = (HWND)GetWindowLong(g_hWnd1, GWL_USERDATA);// 提取消息函数中被压入的数值
DestroyWindow(g_hWnd1);
UnregisterClass("haha", hInst);
return 0;
}
上面是我的验证程序,试图自己封装窗口类的应该已经看明白了,几个全局变量用来记录数据传递情况
下面是调试跟踪的情况:
可以看到数据被正确传递了,但是也带来两个问题:
1.WNDCLASS的cvWndExtra在这种情况下没用,它的具体作用到底是什么?
2.windows API参考大全上说的,SetWindowLong只有在SetWindowPos之后才能起作用难道是错的?
- 封装窗口类用到的两个函数的效果验证
- 最近用到的一些封装函数~
- Minigui学习--窗口用到的一些函数
- 项目用到的窗口管理类
- 两个在存储方面的用到的函数
- C#身份证验证封装的函数方法
- 验证手机及邮箱的封装函数
- 模拟窗口类的封装
- 两个开发中常用到的
- 域验证的两个函数(C#)
- 经常用到的JavaScript验证
- 用到的函数
- javascipt用到的函数
- 可能用到的函数
- 简单封装的窗口
- 讲两个Halcon标定时要用到的两个内部函数
- 验证码的封装
- 封装SDK时用到的脚本
- XPath in JavaScript(xpath简介)
- c用户学Java程序
- 如何一回车就触发提交按钮 如何回车就下一个
- 痛论:加盟vs传销!
- Google AdSense 申请注册指南
- 封装窗口类用到的两个函数的效果验证
- PDP context激活的大致原理
- Java编程那些事儿105——网络编程技术4
- Struts2 Login+Mysql
- 2009年9大最热门IT技能
- 掌握 Ajax,第 10 部分: 使用 JSON 进行数据传输
- pp加速器各种问题官方最新回答
- VB6做了个简单的ListView内容导出函数
- 我的大学室友——五毒俱全