一个既简单又难的问题?? 我在一个createwindow创建的窗口下加两个button,但是他们不响应tab键,各位有什么好方法么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的代码如下: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); 处理这个窗口的消息时使用 IsDialogMessage() 函数来处理,不要使用 TranslateMessage 和 DispatchMessage. 创建的 BUTTON 有没有 WS_TABSTOP 风格? 窗口有没有 WS_EX_CONTROLPARENT 扩展风格? hWnd = CreateWindowEx(WS_EX_CONTROLPARENT, szWindowClass, szTitle, WS_TILEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); 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;} 好了,大侠真是有如神助阿(不过在evc底下还是有点问题。,我再看看) 请问如何存储一个变量中的数据 有关MFC中的OpenGL编程 向高手请教一个问题类型编码(30分,马上结贴)? UNICODE的路径转换问题,大虾来看看 这个问题怎么解决? 能否将进程句柄,作为int或者其它类型保存? ActiveX 控件,怎样直接绘制? 如何改變IE的窗口的標題? 如何使用DeviceIoControl对硬盘的绝对扇区进行读或写? 那里可以下载VC2.0?1.5也可以. 如何Microsoft FlexGrid Control控件总行数问题?急…… 关于CRecordSet
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);
WS_TILEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
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;
}
(不过在evc底下还是有点问题。,我再看看)