鱼C论坛

 找回密码
 立即注册
查看: 1960|回复: 1

windows程序设计35课-插入符号

[复制链接]
发表于 2019-9-16 00:37:16 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 独一无② 于 2019-9-16 00:50 编辑

在甲鱼哥的第35课,插入字符这课中,对于一段代码不太理解,不知道啥时候会有这种情况出现:
  1.     case WM_CREATE:
  2.         hdc = GetDC(hwnd);
  3.         
  4.         SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));
  5.         GetTextMetrics(hdc, &tm);
  6.         cxChar = tm.tmAveCharWidth;
  7.         cyChar = tm.tmHeight;
  8.         
  9.         ReleaseDC(hwnd, hdc);
  10.         // 此处木有返回,木有break

  11.     case WM_SIZE:
复制代码

就是上面消息处理回调的WM_CREATE结束后为什么不用返回呢,这样会继续调用下面的WM_SIZE。
在CreateWindow的时候,WM_CREATE调用完也会有WM_SIZE消息产生,这样子不是会多调用了一次吗
因为我直接return好像程序也没出问题,说明这里应该是有中特殊情况才需要这样做。

同样的,在45课,数字时钟里面也出现了这样的设计
  1.     case WM_CREATE:
  2.         hBrushRed = CreateSolidBrush(RGB(255, 0, 0));
  3.         SetTimer(hwnd, ID_TIMER, 1000, NULL);
  4.         // 没有 return

  5.     case WM_SETTINGCHANGE:
复制代码

这节课里甲鱼哥提了下,说是以防止用户在中途修改设置。
这里的话我是这样理解的,因为消息循环在CreateWindow的下面,所以此时修改一些配置数据啥的,我们会接收不到消息(还没建立消息循环),不知道这样理解对不对?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-16 09:38:49 | 显示全部楼层
请小甲鱼老师出山解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 18:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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