我在一个createwindow创建的窗口下加两个button,但是他们不响应tab键,各位有什么好方法么?

解决方案 »

  1.   

    我的代码如下:hInst = hInstance; // Store instance handle in our global variable  hWnd = CreateWindow(szWindowClass, szTitle, WS_TILEDWINDOW,
          CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);   if (!hWnd)
       {
          return FALSE;
       }   CreateWindow("BUTTON", "ok", WS_CHILD | WS_VISIBLE | WS_TABSTOP|WS_BORDER ,
          100, 100, 100, 30, hWnd, (HMENU)BUTTON_OK, hInstance, NULL);
       CreateWindow("BUTTON", "cancel", WS_CHILD | WS_VISIBLE | WS_TABSTOP|WS_BORDER ,
          100, 200, 100, 30, hWnd, (HMENU)BUTTON_CANCEL, hInstance, NULL);
      

  2.   

    处理这个窗口的消息时使用 IsDialogMessage() 函数来处理,不要使用 TranslateMessage 和 DispatchMessage.
      

  3.   

    创建的 BUTTON 有没有 WS_TABSTOP 风格?
      

  4.   

    窗口有没有 WS_EX_CONTROLPARENT 扩展风格?
      

  5.   

    hWnd = CreateWindowEx(WS_EX_CONTROLPARENT, szWindowClass, szTitle,
         WS_TILEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
      

  6.   

    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /* hPrevInstance */,
     LPSTR     /* lpCmdLine */, int       /* nCmdShow */)
    {
    HWND hWnd = CreateWindowEx(WS_EX_CONTROLPARENT, "#32770",
    "Test For TabStop", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    0, 100, 0, 100, NULL, NULL, hInstance, NULL);
    if (!hWnd) {
    return FALSE;
    } CreateWindow("BUTTON", "ok", WS_CHILD | WS_VISIBLE | WS_TABSTOP,
      0, 0, 20, 20, hWnd, (HMENU)IDOK, hInstance, NULL);
    CreateWindow("BUTTON", "cancel", WS_CHILD | WS_VISIBLE | WS_TABSTOP,
      25, 0, 20, 20, hWnd, (HMENU)IDCANCEL, hInstance, NULL); MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
    if (msg.message == WM_COMMAND) {
    if (LOWORD(msg.wParam) == IDCANCEL) {
    break;
    }
    } if (!IsDialogMessage(hWnd, &msg)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    } return 0;
    }
      

  7.   

    好了,大侠真是有如神助阿
    (不过在evc底下还是有点问题。,我再看看)