【发布时间】:2011-05-31 18:35:56
【问题描述】:
我正在使用 Visual Studio 的 Windows 窗体,示例代码如下:
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
/*code cut*/
case WM_INITDIALOG:
return (INT_PTR)TRUE;
break;
虽然我的其他处理函数如下所示:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
/*code cut*/
return 0; // no magical casting or anything, just plain int
我有一个线索,当我在 WndProc() 中执行 return 0; 时,这意味着默认消息处理程序不会处理该消息?但是如果你这样做return 1; 它会使用默认处理程序来处理?
但是return (INT_PTR)TRUE; 的意义何在?在那里使用普通的return 0; 样式是否安全?我尝试编译,它也只适用于纯整数值。
另外,我不确定什么时候应该使用哪个值,示例代码有这样的:
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
但是return (INT_PTR)TRUE; 有什么意义呢?我将其更改为FALSE,但在功能上看不到任何差异。
所以,我不确定这是在做什么,有谁能让我清醒一下,什么时候应该使用return 1,什么时候应该使用return 0,什么时候应该使用其他东西(如果我应该)?
【问题讨论】:
-
我非常怀疑您是在使用 WinForms 并遇到此代码 - WinForms 是一个基于 .NET 的框架。
-
@ildjarn,我在那里写了“windows-forms”,但这个网站出于某种原因将其重命名为“winforms”。我也想知道它为什么这样做,我认为它只是它的另一个别名,所以我没有费心去改变它(如果它甚至可能......),“windows-forms”甚至是正确的名称吗?
-
“WinForms”只是“Windows Forms”的常见缩写,但同样,Windows Forms 是一种 .NET 技术,这显然是原生 C++。这通常称为 WinAPI 代码。
标签: c++ visual-studio-2008 winapi visual-c++