검색결과 리스트
트레이에 해당되는 글 2건
- 2009.01.16 [C#]Tray Icon
- 2009.01.06 [C#]트레이 아이콘 버그.(OS 종료시)
글
Tray Icon..
-_-a 뭐 기본적으로 그런 내용이다;;
언젠가 쉽게 쓸 일이 있겠지 ㅋㅋ
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;//이벤트 취소
this.WindowState = FormWindowState.Minimized;//폼 최소화
this.ShowInTaskbar = false;//작업표시줄 표시 금지
}
private void Tray_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Visible = true;
this.ShowInTaskbar = true; // 현재 프로그램을 테스크 바에 표시하게 한다.
this.WindowState = FormWindowState.Normal; // 폼을 윈도 상태를 normal
Tray.Visible = false; // 트레이의 아이콘을 보이지 않게 한다.
}
아 -_- contextmenu 넣어줄라면?
this.tray.contextmenu=this.contextmenu(생성한것) 해주기!
설정
트랙백
댓글
글
3.0에서도 실제 해 본 것은 아니지만 여기에 대한 문제점 해결을 찾다보니
몇몇 방법이 있다는 것을 알았다.
1. Flag 변수 - 시스템 종료인지 단순한 창의 종료인지 구분
2. WndProc()함수 overriding
3. Form_Closing()함수 수정
이벤트 순서 : WM_QUERYENDSESSION - Form Close - WM_ENDSESSION
public static bool bEndSession = false;
/*logoff, shutdown, restart, poweroff */
protected override void WndProc(ref Message m)
{
const int WM_QUERYENDSESSION = 0x0011;
const int WM_ENDSESSION = 0x16;
const int WM_SYSCOMMAND = 0x112;
const int WM_CLOSE = 0x0010;
const int SC_CLOSE = 0xF060;
switch (m.Msg){
case WM_QUERYENDSESSION:
Console.WriteLine("WM_QUERYENDSESSION");
bEndSession = true;
break;
case WM_ENDSESSION:
Console.WriteLine("WM_ENDSESSION");
break;
case WM_SYSCOMMAND:
if (m.WParam.ToInt32() == SC_CLOSE)
{
Console.WriteLine("SC_CLOSE");
}
break;
case WM_CLOSE:
Console.WriteLine("WM_CLOSE");
break;
}
base.WndProc (ref m);
}
private void MainForm1_Closing(object sender, System.ComponentModel.CancelEventArgs e){
if (!bEndSession){
e.Cancel = true;
this.WindowState = FormWindowState.Minimized;
this.Hide();
}
else{
//WndProc()에서 처리하도록 함.
}
}
RECENT COMMENT