程序代码如下如何使TAB键按下时焦点在Edit控件和DefButton之间循环?现在只能在Edit之间循环,按TAB键时Edit文本显示区产生退格hwndButton = CreateWindow ( TEXT("button"), TEXT ("单击加运算"),
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
80, 170,20 * cxChar, 7 * cyChar / 4,
hwnd, (HMENU) ID_BUTTON,((LPCREATESTRUCT) lParam) -> hInstance, NULL);
for ( i = 0; i < 3 ; i++)
{
hwndEdit [i]= CreateWindowEx (WS_EX_CLIENTEDGE,TEXT ("edit"), NULL,
WS_CHILD | WS_VISIBLE |
WS_BORDER | ES_LEFT | ES_MULTILINE |
ES_AUTOHSCROLL | ES_AUTOVSCROLL,
80, cyChar * (1 + 3 * i),
20 * cxChar, 7 * cyChar / 4, hwnd, (HMENU) i,
((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
OldEdit[i] = (WNDPROC) SetWindowLong (hwndEdit[i], GWL_WNDPROC, (LONG)EditProc);
LRESULT CALLBACK EditProc (HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
int id = GetWindowLong (hwnd, GWL_ID) ;
switch (message)
{
case WM_KEYDOWN :
if (wParam == VK_TAB)
SetFocus (GetDlgItem (GetParent (hwnd),
(id + (GetKeyState (VK_SHIFT) < 0 ? 2 : 1)) % 3)) ;
break ;
case WM_SETFOCUS :
idFocus = id ;
break ;
}
return CallWindowProc (OldEdit[id], hwnd, message, wParam, lParam) ;
}
WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
80, 170,20 * cxChar, 7 * cyChar / 4,
hwnd, (HMENU) ID_BUTTON,((LPCREATESTRUCT) lParam) -> hInstance, NULL);
for ( i = 0; i < 3 ; i++)
{
hwndEdit [i]= CreateWindowEx (WS_EX_CLIENTEDGE,TEXT ("edit"), NULL,
WS_CHILD | WS_VISIBLE |
WS_BORDER | ES_LEFT | ES_MULTILINE |
ES_AUTOHSCROLL | ES_AUTOVSCROLL,
80, cyChar * (1 + 3 * i),
20 * cxChar, 7 * cyChar / 4, hwnd, (HMENU) i,
((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
OldEdit[i] = (WNDPROC) SetWindowLong (hwndEdit[i], GWL_WNDPROC, (LONG)EditProc);
LRESULT CALLBACK EditProc (HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
int id = GetWindowLong (hwnd, GWL_ID) ;
switch (message)
{
case WM_KEYDOWN :
if (wParam == VK_TAB)
SetFocus (GetDlgItem (GetParent (hwnd),
(id + (GetKeyState (VK_SHIFT) < 0 ? 2 : 1)) % 3)) ;
break ;
case WM_SETFOCUS :
idFocus = id ;
break ;
}
return CallWindowProc (OldEdit[id], hwnd, message, wParam, lParam) ;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货