独一无② 发表于 2019-9-16 00:37:16

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

本帖最后由 独一无② 于 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的下面,所以此时修改一些配置数据啥的,我们会接收不到消息(还没建立消息循环),不知道这样理解对不对?

cplus 发表于 2019-9-16 09:38:49

请小甲鱼老师出山解答
页: [1]
查看完整版本: windows程序设计35课-插入符号