Q&A

  • MDI의 child에서 hotkey설정은 어떻게 해야 중복이 안되나요?
procedure TForm1.WMHotKey(var M: TMessage);
begin
   if M.LParamHi = VK_ESCAPE then Init(3);
   if M.LParamHi = VK_F5 then Img_ViewClick(nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   if RegisterHotKey(Self.Handle, GlobalAddAtom('핫키ESCAPE'), 0, VK_ESCAPE) = False then
       ShowMessage('핫키 ESC 실패');
   if RegisterHotKey(Self.Handle, GlobalAddAtom('핫키F5'), 0, VK_F5) = False then
       ShowMessage('핫키 F5 실패');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   UnRegisterHotKey(Self.Handle, GlobalAddAtom('ESC'));
   UnRegisterHotKey(Self.Handle, GlobalAddAtom('F5'));
end;

===========
위와 같은 내용을 자식폼 마다 활용할려고 하는데...
다른 폼을 실행하면 핫키의 등록 실페 메뉴가 나옵니다..어떻게 해야 하나요?
고수님들의 조언을 기다립니다...
2  COMMENTS
  • Profile
    구창민 2007.07.23 21:53
    안녕하세요..
    말씀하신 부분중,
    "다른 폼을 실행하면 핫키의 등록 실패 메뉴가 나옵니다" <- 이 부분에서
    자식폼을 실행하실때 폼의 Create 이벤트에, Form1 의 Create 이벤트와 같은
    RegisterHotKey 문장이 있는건 아닐까 의심해 되네요..
    이미 선언되어진 핫키를 또 실행하려 해서가 아닌가 생각됩니다.
    핫키는 한번만 선언해두면 UnRegisterHotkey 가 나올때까지 다시 다른폼에 등록할 필요없이
    전역적으로 키가 사용됩니다.

    그럼~ 즐거운 프로그래밍 하시길~



  • Profile
    마이크로김 2007.07.21 01:08

    base 폼에 설정 하면 될것 같은데요!