블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2797)
Unity3D (853)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

'메시지처리'에 해당되는 글 1건

  1. 2010.11.04 WinForm 컨트롤에서 메시지 처리 팁
작업하던 도중... 기록해 둬야 할 것 같아서 포스팅 합니다.

1. WinForm 상에서 Tab키 가로채기(Tab 키로 뭔가 하고 싶을 때)
윈폼에서는 몇몇 키 입력이 KeyPress 나 KeyDown 등의 이벤트 핸들러에서 잡지 못합니다.그 몇몇키중 하나가 Tab키 인데, 다음과 같이 ProcessCmdKey 메소드를 override 하는 방법으로 처리할수 있습니다.
  1. private const int WM_KEYDOWN = 0x100;
  2. private const int WM_SYSKEYDOWN = 0x104;
  3.  
  4. protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
  5. {
  6.     if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
  7.     {
  8.         switch (keyData)
  9.         {
  10.         case Keys.Tab:
  11.             //원하는 코드를 여기에 넣는다.
  12.             break;
  13.         default:
  14.             break;
  15.         }
  16.     }
  17.  
  18.     return base.ProcessCmdKey(ref msg, keyData);
  19. }

2. 타이틀바 더블클릭 메시지 가로채기 (예제는 커지지 않도록 하는 방법)
윈폼을 사용하면서, 타이틀바(Titlebar 또는 Captionbar)를 더블클릭했을 때 최대화(Maximize)되는데요, 이를 방지하고 싶었으나 프로퍼티상에서 찾을 수가 없어서 다음과 같이 WndProc 메소드를 override 하는 방법으로 해결했습니다. 다른 메시지 가로채기할 때에도 유용할 것 같군요.
  1. private const int WM_NCLBUTTONDBLCLK = 0xA3;
  2.  
  3. protected override void WndProc(ref Message m)
  4. {
  5.     switch (m.Msg)
  6.     {
  7.     case WM_NCLBUTTONDBLCLK:
  8.         if (this.WindowState == System.Windows.Forms.FormWindowState.Maximized)
  9.             this.WindowState = System.Windows.Forms.FormWindowState.Normal;
  10.         return;
  11.     default:
  12.         break;
  13.     }
  14.  
  15.     base.WndProc(ref m);
  16. }

3. 메시지와는 관련 없지만, 타이틀바에서 close(x)버튼 비활성화 하는 방법
출처 : http://vinothnat.blogspot.com/ (유용한 정보가 많네요.)
타이틀바에서 기본적으로 ControlBox 속성을 true 로 주면, 최대화/최소화/닫기 버튼이 나타납니다. ㅁ_x 이렇게요. 나타나게 한 뒤, 최대/최소화 버튼은 각각 MaximizeBox, MinimizeBox 속성을 false 로 해 줌으로서 안보이게 할 수 있지만, x 버튼은 사라지게 할 수 없습니다. 아직 사라지게 하는 방법은 찾지 못했지만(WndProc로 가능하긴 할 듯), 일단 비활성화(disable)하는 방법입니다.
  1. protected override CreateParams CreateParams
  2. {
  3.     get
  4.     {
  5.         CreateParams param = base.CreateParams;
  6.         param.ClassStyle = param.ClassStyle | 0x200;
  7.         return param;
  8.     }
  9. }

출처 : http://withsoju.tistory.com/487
반응형
Posted by blueasa
, |