Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизПри нажатии TAB фокус не перескакивает с одного контрола на др. Найти похожие ветки
← →
gdaujk © (2004-12-16 10:27) [0]
program MyProg;
uses
Windows,
Messages;
procedure CreateControls(Wnd: HWND);
begin
InitCommonControls;
Group1 := CreateWindow("button", "Âðåìÿ äåéñòâèÿ",
WS_CHILD or WS_VISIBLE or WS_TABSTOP
or WS_GROUP or BS_GROUPBOX,
7, 3, 176, 56,
Wnd, 0, hinstance, nil);
hLab := CreateWindow("static", "×àñ",
WS_CHILD or WS_VISIBLE or SS_LEFT or
WS_GROUP,
15, 29, 19, 13,
Wnd, 1, hInstance, nil);
hEd := CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", nil,
WS_CHILD or WS_VISIBLE or WS_TABSTOP or
ES_LEFT or ES_READONLY,
43, 28, 36, 18,
Wnd, 2, hInstance, nil);
hUD := CreateUpDownControl(WS_CHILD or WS_BORDER or
WS_VISIBLE or WS_TABSTOP or UDS_MY,
0, 0, 0, 0,
Wnd, 3, hInstance,
hEd, 23, 0, 0);
mLab := CreateWindow("static", "ìèíóòà",
WS_CHILD or WS_VISIBLE or SS_LEFT or
WS_GROUP,
90, 29, 36, 13,
Wnd, 4, hInstance, nil);
mEd := CreateWindowEx(WS_EX_CLIENTEDGE ,"edit", nil,
WS_CHILD or WS_VISIBLE or WS_TABSTOP or
ES_LEFT or ES_READONLY,
135, 28, 36, 18,
Wnd, 5, hInstance, nil);
mUD := CreateUpDownControl(WS_CHILD or WS_BORDER or WS_VISIBLE or WS_TABSTOP or UDS_MY,
0, 0, 0, 0,
Wnd, 6, hInstance,
mEd, 59, 0, 0);
end;
{WinMain}
function WinMain(aWND: HWND; aMsg: Integer; aWParam: WPARAM; aLParam: LPARAM): LRESULT; stdcall;
procedure RadioClick(Off: Boolean);
begin
if HiWord(awParam) = BN_CLICKED then
begin
EnableWindow(MusBtn, not Off);
MyOpt.ShutDown := Off;
end;
end;
begin
Result:=0;
case aMsg of
WM_CREATE:
begin
CreateControls(aWND);
end;
WM_COMMAND :
begin
case LoWord(awParam) of
10: RadioClick(True);
11: RadioClick(False);
end;
end;
MM_MCINOTIFY:
begin
CloseMCI(aWnd);
if MyOpt.CloseAfterStop and Play
then PostMessage (aWnd , WM_CLOSE, 0, 0);
end;
WM_DESTROY{WM_CLOSE}:
begin
DeleteObject(MainFont);
DelateSysTrayPlease;
PostQuitMessage(0);
Result:=0;
exit;
end;
else
Result := DefWindowProc(aWND, aMsg, aWParam, aLParam);
end;
end;
begin
WC.style := CS_HREDRAW or CS_VREDRAW;
WC.lpfnWndProc := @WinMain;
WC.cbClsExtra := 0;
WC.cbWndExtra := 0;
WC.hInstance := HInstance;
WC.hIcon := LoadIcon(hInstance, PChar("MAINICON"));
WC.hCursor := LoadCursor(0, IDC_ARROW);
WC.hbrBackground := COLOR_BTNFACE + 1;
WC.lpszMenuName := nil;
WC.lpszClassName := ClassName;
RegisterClass(WC);
MainWND := CreateWindowEx(WS_EX_CONTROLPARENT ,ClassName,
Name,
WS_CAPTION or WS_SYSMENU or WS_MINIMIZEBOX,
CenterX(291),
CenterY(198),
307, 197,
0, 0, hInstance, nil);
SysMenu := GetSystemMenu(MainWND, False);
DeleteMenu(SysMenu, SC_MAXIMIZE, MF_BYCOMMAND);
DeleteMenu(SysMenu, SC_SIZE, MF_BYCOMMAND);
GetOptions;
if not (LoadWithParam and MyOpt.Minimize)
then ShowWindow(MainWnd, 1);
UpdateWindow(MainWnd);
while(GetMessage(Mes, 0, 0, 0)) do
begin
TranslateMessage(Mes);
DispatchMessage(Mes);
end;
end.
← →
gdaujk © (2004-12-16 10:34) [1]
WM_KEYUP:
begin
if awParam = VK_TAB
then SetFocus(offRadio) ;
end;
← →
gdaujk © (2004-12-16 10:38) [2]
offRadio := CreateWindow("button", "Âûêëþ÷èòü êîìïüþòåð",
WS_CHILD or WS_VISIBLE or WS_TABSTOP or BS_AUTORADIOBUTTON,
15, 92, 134, 18,
Wnd, 10, hinstance, nil);
← →
DVM © (2004-12-16 10:39) [3]
> gdaujk © (16.12.04 10:34) [1]
> WM_KEYUP:
> begin
> if awParam = VK_TAB
> then SetFocus(offRadio) ;
> end;
Если это написано в главной оконной процедуре, то с какой стати это должно работать?
← →
gdaujk © (2004-12-16 10:43) [4]Ну, а как тогда сделать, чтоб фокус всё же менялся ???
← →
DVM © (2004-12-16 10:56) [5]
> Ну, а как тогда сделать, чтоб фокус всё же менялся ???
В цикл выборки сообщений поставить проверку и передачу фокуса. Или у каждого контрола в его оконной процедуре.
← →
SVM (Perm) (2004-12-16 13:25) [6]Смотри IsDialogMessage...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.059 c