jkl666 发表于 2014-7-10 13:41:58

关于“缺省窗口函数”疑问。

本帖最后由 jkl666 于 2014-7-10 13:43 编辑

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
      HDC hdc;
      PAINTSTRUCT ps;
      RECT rect;

      switch (message)
      {
      case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                GetClientRect(hwnd, &rect);
                DrawText(hdc, TEXT("大家好,这是我的第一个窗口程序!"), -1, &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                EndPaint(hwnd, &ps);
                return 0;

      case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
      }

      return DefWindowProc (hwnd, message, wParam, lParam);
}
上述代码为甲鱼老师的Windows.c模板,有两个问题请指教:1,DefWindowProc函数返回值类型是什么,其返回值又是多少?
2,return把DefWindowProc函数的值,给了谁。。如何跟踪。若是给了windows,给了windows什么地方?

小甲鱼 发表于 2014-7-10 15:05:08

【API档案】DefWindowProc(http://bbs.fishc.com/thread-47807-1-1.html)有指出:DefWindowProc 的返回值就是消息处理结果,它取决于发送的消息。

【API档案】 DispatchMessage(http://bbs.fishc.com/thread-47260-1-1.html)同时指出:1. 返回值是窗口过程返回的值。2. 尽管返回值的含义依赖于被分派的消息,但返回值通常被忽略。

jkl666 发表于 2014-7-10 17:48:11

小甲鱼 发表于 2014-7-10 15:05
【API档案】DefWindowProc(http://bbs.fishc.com/thread-47807-1-1.html)有指出:DefWindowProc 的返回值 ...

谢谢,鱼老师。。我想知道Windows是如何调用DefWindowProc返回值的。因为在模板里就两个函数WinMain和WndProc,函数DefWindowProc的返回值跑哪里去了,不是WinMai就是WndProc?显然不可能。

小甲鱼 发表于 2014-7-10 18:24:03

jkl666 发表于 2014-7-10 17:48
谢谢,鱼老师。。我想知道Windows是如何调用DefWindowProc返回值的。因为在模板里就两个函数WinMain和Wnd ...

仔细看,【API档案】 DispatchMessage(http://bbs.fishc.com/thread-47260-1-1.html)同时指出:1. 返回值是窗口过程返回的值。2. 尽管返回值的含义依赖于被分派的消息,但返回值通常被忽略。

窗口过程的返回值都是作为 DispatchMessage 的返回值返回。

jkl666 发表于 2014-7-10 19:44:51

小甲鱼 发表于 2014-7-10 18:24
仔细看,【API档案】 DispatchMessage(http://bbs.fishc.com/thread-47260-1-1.html)同时指出:1. 返回 ...

茅塞顿开。

tlwangxd 发表于 2014-11-25 10:52:27

学习

智商是硬伤 发表于 2015-8-31 09:43:41

{:7_146:}
页: [1]
查看完整版本: 关于“缺省窗口函数”疑问。