본문 바로가기

카테고리 없음

[윈도우즈 API] 정의되지 않은 Alt+키 입력시 Beep음 제거

반응형
// 아래 예제는 Alt+C 에 버튼이 반응하는 간단한 예제인데
// Alt+C 이외의 단른 조합이 입력되면 beep 음이 발생하는데
// 이를 제거하는 소스입니다

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure CMDialogChar(var Msg: TWMGetDlgCode); message CM_DIALOGCHAR;
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

// Alt+키 입력시 Beep음 제거
procedure TForm1.CMDialogChar(var Msg: TWMGetDlgCode);
begin
  inherited;
  Msg.Result := DLGC_WANTMESSAGE or DLGC_WANTALLKEYS or DLGC_WANTARROWS or
                DLGC_WANTTAB or DLGC_WANTCHARS;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.Width := 100;
  Button1.Caption := 'Click or Alt+&C'; // Alt+C 를 만든다
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Showmessage('Click or Alt+C');
end;

end.
반응형