这个变量怎么没有定义?

Uys*_*des 0 c++ winapi

这是我目前代码的片段.这绝对没有意义.它表示CASE COMMAND下的hEditEW未定义在上面明确定义的位置.这可能是一个非常简单的修复,但我有一点时间解决它.

case WM_CREATE:
         {
                  HWND hWndButton = CreateWindowEx(NULL, "Button", "Click to Convert", WS_TABSTOP|WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                      200, 370, 150, 50, hWnd, (HMENU)IDC_BUTTON_ONE, NULL, NULL);

                  HWND hEditEW = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "", WS_CHILD|ES_MULTILINE| WS_VISIBLE |
                      ES_AUTOHSCROLL | ES_AUTOVSCROLL, 25, 50, 220, 300, hWnd, (HMENU)IDC_EDITOR_BOX_EAST_WEST, NULL, NULL);

                  HWND hEditNS = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "", WS_CHILD | ES_MULTILINE | WS_VISIBLE |
                      ES_AUTOHSCROLL | ES_AUTOVSCROLL, 300, 50, 220, 300, hWnd, (HMENU)IDC_EDITOR_BOX_EAST_WEST, NULL, NULL);
         }
    break;

case WM_COMMAND:
       {
                   switch (LOWORD(wParam))
                   {
                   case IDC_BUTTON_ONE:
                   {
                                          LPWSTR buffer[256];
                                          SendMessage(hEditEW,
                                              WM_GETTEXT,
                                              sizeof(buffer) / sizeof(buffer[0]),
                                              reinterpret_cast<LPARAM>(buffer));
                                          HANDLE hFile = CreateFile("C:\\test.txt", GENERIC_READ,
                                              0, NULL, CREATE_NEW, FILE_FLAG_OVERLAPPED, NULL); 

                   }

                       break;
                   }
                   break;
      }
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 5

您在之后的范围中定义它case WM_CREATE并尝试在范围之后使用它case WM_COMMAND.这不会起作用 - 不同的范围.

你甚至不需要开关来演示这个问题:

{
   HWND hEditEW = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "", WS_CHILD|ES_MULTILINE| WS_VISIBLE |
                      ES_AUTOHSCROLL | ES_AUTOVSCROLL, 25, 50, 220, 300, hWnd, (HMENU)IDC_EDITOR_BOX_EAST_WEST, NULL, NULL);

}  //in scope up to here
{
   SendMessage(hEditEW,
      WM_GETTEXT,
      sizeof(buffer) / sizeof(buffer[0]),
      reinterpret_cast<LPARAM>(buffer));
}
Run Code Online (Sandbox Code Playgroud)