小问题,大家看一下
新建一个窗口的时候会要先注册一个窗口类,然后再创建窗口(win32SDK)我不懂的地方是:
窗口类里为什么有个 类名字符串地址?
直接用WNDCLASSEX的变量名不行吗?
求解惑,求解惑
谢谢 小鸵鸟 发表于 2015-8-3 09:48
你说的这些我都知道,,我的疑问是,我感觉类名字符串地址和 WNDCLASSEX的变量名都可以找到这个 ...
这里应该是 涉及到 windows的设计中的东西,变量名的使用范围是有局限的,如果使用 全局变量会带来一些不确定的因素, 添加一个专门用于识别的 字符串是 使用了 映射的存储查找方式,在创建窗口类别过程中 会有一个 窗口类名和变量名地址的键值对存在,创建窗口的时候通过 字符串查找窗口类别,同时 windows 本身 还有一些特定的窗口类“button”"edit""dialog"等等,这些是不需要创建局部变量就可以直接使用的!简单讲就是 使用字符串的 查找 相对于 地址 更加直观!使得使用过程更加方便! 当然不行
少年
typedef struct _WNDCLASSEX {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLEhInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSHhbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX;
HWND CreateWindow(
LPCTSTR lpClassName,// pointer to registered class name
LPCTSTR lpWindowName, // pointer to window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // handle to menu or child-window identifier
HANDLE hInstance, // handle to application instance
LPVOID lpParam // pointer to window-creation data
);
设计的窗口类和创建的窗口之间 是靠窗口类名来联系 这个联系就是你指定的窗口类名
ryxcaixia 发表于 2015-8-3 08:34
当然不行
少年
typedef struct _WNDCLASSEX {
你说的这些我都知道,,我的疑问是,我感觉类名字符串地址和 WNDCLASSEX的变量名都可以找到这个类,,何必多此一举创造一个 类名字符串地址 呢? 和int a;对比
窗口类里类名字符串地址相当于int
WNDCLASSEX的变量名相当于 a;
为什么不用a来表示所有整数呢?因为整数很多,还可以有int b;
同理,同一个窗口类可以对应很多不同的WNDCLASSEX对象 为了鱼币。暖贴
我也遇到这个问题了啊
页:
[1]