Winapi 为什么在对话框进程中使指针保持静态?
我将介绍许多基本win32对话过程的示例。他们似乎采取了这种基本模式Winapi 为什么在对话框进程中使指针保持静态?,winapi,visual-c++,Winapi,Visual C++,我将介绍许多基本win32对话过程的示例。他们似乎采取了这种基本模式 class Person { char Name[63]; int Age; }; BOOL CALLBACK EditDlgProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { static Person* person; switch(uMsg) { case WM_INITDIALOG:
class Person
{
char Name[63];
int Age;
};
BOOL CALLBACK EditDlgProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static Person* person;
switch(uMsg)
{
case WM_INITDIALOG:
person = (Person*)lParam;
return FALSE;
case WM_COMMAND:
.....
}
return FALSE;
}
我想知道为什么让人静止
- 这是为了提高效率吗?(避免每次呼叫都将人员分配到lParam)
- 这是用来分享的吗李>
EditDlgProc()
之间保持指针person
的状态
它确保:
- 指针在程序的生命周期内只创建一次
- 它在对函数和函数的连续调用中保持指针的状态
- 仅在程序结束时销毁一次
请注意,在这种情况下,
静态
变量的范围仅限于函数,因此不能共享。这是为了在调用函数EditDlgProc()
之间保持指针person
的状态
它确保:
- 指针在程序的生命周期内只创建一次
- 它在对函数和函数的连续调用中保持指针的状态
- 仅在程序结束时销毁一次
请注意,在这种情况下,
静态
变量的作用域仅限于函数,因此不能共享。还请注意,使用静态表示一次只能有一个对话框副本。还请注意,使用静态表示一次只能有一个对话框副本。