Q&A

  • MDI Child Form의 시스템 단축키 기능 없애기?
요즘 질문이 잦아지네요.

MDIForm 이구요...

MDI Child 열어놓구 여러 버튼중 하나를 'Ctrl+F4'로 잡아놨습니다.

근데 Child 폼이 자꾸 죽는거에요.

나중에 알았는데 Ctrl+F4하고 Ctrl+F6키가 시스템 키로 사용되고 있더라구요.

이 두 키가 안먹게 하고 제가 지정한걸 먹게 할려고 하는데

방법이 없을까요?
1  COMMENTS
  • Profile
    까치 2005.02.01 07:12



    KeyboardHook 을 직접 컨트로하면 될것 같습니다.

    이곳에서 검색하면 여러 방법이 나옵니다.

    -- 아래는 그중에 하나 -- 컨트롤 탭키를 제어하는 방법입니다.

    var
      Form1: TForm1;
      KeyHook: HHOOK;
      function KeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult; stdcall;
    implementation
    {$R *.dfm}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
        KeyHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHook, 0, GetCurrentThreadID);
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
        UnHookWindowsHookEx(KeyHook);
    end;

    function KeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult;
    begin
      if nCode > -1 then begin
        if (wParam = VK_TAB)and(GetKeyState(VK_CONTROL)<0) then begin
            Result := -1;
            exit;
        end;
      end;
      Result := CallNextHookEx(KeyHook, nCode, wParam, lParam);
    end;