鱼C论坛

 找回密码
 立即注册
查看: 6533|回复: 6

小问题,大家看一下

[复制链接]
发表于 2015-8-3 00:11:42 | 显示全部楼层 |阅读模式
20鱼币
新建一个窗口的时候会要先注册一个窗口类,然后再创建窗口(win32  SDK)

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

求解惑,求解惑
谢谢

最佳答案

查看完整内容

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

使用道具 举报

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

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

使用道具 举报

发表于 2015-8-3 08:34:32 | 显示全部楼层
当然不行
少年
typedef struct _WNDCLASSEX {
    UINT    cbSize;
    UINT    style;
    WNDPROC lpfnWndProc;
    int     cbClsExtra;
    int     cbWndExtra;
    HANDLE  hInstance;
    HICON   hIcon;
    HCURSOR hCursor;
    HBRUSH  hbrBackground;
    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
);

设计的窗口类和创建的窗口之间 是靠窗口类名来联系 这个联系就是你指定的窗口类名
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-8-3 09:48:12 | 显示全部楼层
ryxcaixia 发表于 2015-8-3 08:34
当然不行
少年
typedef struct _WNDCLASSEX {

你说的这些我都知道,,我的疑问是,我感觉  类名字符串地址  和   WNDCLASSEX  的变量名都可以找到这个类,,何必多此一举创造一个    类名字符串地址   呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-8-6 00:42:00 | 显示全部楼层
和int a;对比
窗口类里类名字符串地址相当于  int
WNDCLASSEX的变量名相当于 a;

为什么不用a来表示所有整数呢?因为整数很多,还可以有int b;
同理,同一个窗口类可以对应很多不同的WNDCLASSEX对象
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-12 12:16:34 | 显示全部楼层
为了鱼币。暖贴
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-11 16:32:39 | 显示全部楼层
我也遇到这个问题了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-16 00:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表