鱼C论坛

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

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

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

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

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

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

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

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-21 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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