C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20628] 감사합니다... (냉무)
박용우 [] 889 읽음    2002-08-06 01:12



유영인.Chris 님이 쓰신 글 :
: TrayBar의 버그로 어플리케이션이 비정상적으로 종료가 되면 나타나는 문제입니다. 그렇기 때문에 어플리케이션에서 어떤식으로 만들어도 그 버그는 나타나게 됩니다. 이 문제는 Builder 뿐만이 아니라 모든 어플리케이션에서 공통적으로 일어나는 문제입니다.
:
: 강제적으로 Refresh 시켜주는 방법 또한 먹지 않습니다. (부분적인 OS에서만 되는것 같더군요) 그래서 그냥 고전적인 방법으로 마우스를 아이콘 각각에 위치시키는 방법을 몇몇 어플리케이션에서는 사용하고 있습니다.
:
: 아래 소스는 해당하는 그 소스로, 제가 만든건 아니고 델파이로 뉴스그룹에 돌아다니던걸 빌더로 포팅해 본것 입니다. 테스트도 해봤는데, 잘 동작되네요.
:
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:
:  HWND              hdHandle;
:  RECT              rtRect;
:  int               itWidth, itHeight, itX, itY;
:  tagPOINT          tpPosition;
:
:
:  hdHandle = FindWindowEx(FindWindow("Shell_TrayWnd", NULL), 0, "TrayNotifyWnd", NULL);
:  GetWindowRect(hdHandle, &rtRect);
:
:  itWidth  = GetSystemMetrics(SM_CXSMICON);
:  itHeight = GetSystemMetrics(SM_CYSMICON);
:
:
:  GetCursorPos(&tpPosition);
:
:  for(itY = 0; itY <= (rtRect.bottom - rtRect.top) / itHeight; itY ++)
:    for(itX = 0; itX <= (rtRect.right - rtRect.left) / itWidth; itX ++) {
:      SetCursorPos(rtRect.left + itX * itWidth, rtRect.top + itY * itHeight);
:      Sleep(0);
:    }
:
:  SetCursorPos(tpPosition.x, tpPosition.y);
:
:
:  RedrawWindow(hdHandle, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW);
:
: }
: //---------------------------------------------------------------------------
:
:
: 박용우 님이 쓰신 글 :
: :
: : 답변이 없어서.. 한번 더 올립니다  
: : 혹시 방법이 없는건가요???
: :
: :
: :
: : 시스템 트레이 부분에 트레이 아이콘을 지우고 났는데도..
: : 비정상 종료 되면. .아이콘이 남아 있군요
: :
: : 이것을 없애려면... 마우스로 그 트레이 아이콘 위에 가야 없어지더라구요...
: :
: :
: : 아마도.. 마우스가 그 트레이 아이콘 위에 가면 repaint 하는거 같은데.. .
: : 시스템 트레이 부분을 repaint 하는 방법은... 없을까요...
: :
: : 고수님들 가르쳐 주세요...
: :
: : ^^; 부탁합니다 꾸우뻑
: :

+ -

관련 글 리스트
20593 [질문]프로그램 비정상 종료시 트레이 아이콘 바로 사라지게 하기 어떻게 하는지 아는분 ??? 박용우 981 2002/08/02
20616     Re:[질문]프로그램 비정상 종료시 트레이 아이콘 바로 사라지게 하기 어떻게 하는지 아는분 ??? 유영인.Chris 1576 2002/08/05
20628         감사합니다... (냉무) 박용우 889 2002/08/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.