小鸵鸟 发表于 2015-8-3 00:11:42

小问题,大家看一下

新建一个窗口的时候会要先注册一个窗口类,然后再创建窗口(win32SDK)

我不懂的地方是:
窗口类里为什么有个      类名字符串地址?
直接用WNDCLASSEX的变量名不行吗?

求解惑,求解惑
谢谢

默默路过 发表于 2015-8-3 00:11:43

小鸵鸟 发表于 2015-8-3 09:48
你说的这些我都知道,,我的疑问是,我感觉类名字符串地址和   WNDCLASSEX的变量名都可以找到这个 ...

这里应该是 涉及到 windows的设计中的东西,变量名的使用范围是有局限的,如果使用 全局变量会带来一些不确定的因素, 添加一个专门用于识别的 字符串是 使用了 映射的存储查找方式,在创建窗口类别过程中 会有一个 窗口类名和变量名地址的键值对存在,创建窗口的时候通过 字符串查找窗口类别,同时 windows 本身 还有一些特定的窗口类“button”"edit""dialog"等等,这些是不需要创建局部变量就可以直接使用的!简单讲就是 使用字符串的 查找 相对于 地址 更加直观!使得使用过程更加方便!

ryxcaixia 发表于 2015-8-3 08:34:32

当然不行
少年
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
);

设计的窗口类和创建的窗口之间 是靠窗口类名来联系 这个联系就是你指定的窗口类名

小鸵鸟 发表于 2015-8-3 09:48:12

ryxcaixia 发表于 2015-8-3 08:34
当然不行
少年
typedef struct _WNDCLASSEX {


你说的这些我都知道,,我的疑问是,我感觉类名字符串地址和   WNDCLASSEX的变量名都可以找到这个类,,何必多此一举创造一个    类名字符串地址   呢?

仰望天上的光 发表于 2015-8-6 00:42:00

和int a;对比
窗口类里类名字符串地址相当于int
WNDCLASSEX的变量名相当于 a;

为什么不用a来表示所有整数呢?因为整数很多,还可以有int b;
同理,同一个窗口类可以对应很多不同的WNDCLASSEX对象

zzxtcx1314520 发表于 2015-11-12 12:16:34

为了鱼币。暖贴

chenshu 发表于 2016-1-11 16:32:39

我也遇到这个问题了啊
页: [1]
查看完整版本: 小问题,大家看一下