|
답변감사합니다~~
제가 질문이 정확하지 않아서리...죄송...ㅠ.ㅠ
제가 하는게 각각 다른 2개의 폼을 하나의 트레이로 처리하고 싶거든여...
그 두개의 폼은 데스크탑 화면에 동시에 나타날 수 없고...
트레이에서 폼1, 폼2를 show, hide할 건지 결정해서 둘 중 하나만 보여줘야 하거든여...
그래서 처음엔 빌더에 있는 TrayIcon컴포넌트 사용해서 했었는데..
컴포넌트를 1개 사용했을땐...컴포넌트가 위치한 폼1은 잘 되는데 폼 2는 Minimize할때 폼2가 줄어드는 모습이 보이는게 아니라 폼1이 줄어드는 모습이 보이고...폼1,2에 둘다 컴포넌트를 사용했을때는 트레이에서 다시 활성화 할때 폼2를 활성화시키면 폼1의 Visible = false로 해도 폼1이 같이떠서 보이더라고여...ㅠ.ㅠ
그래서 일부러 따로 트레이만 처리하는 파일을 만든거거덩여...
이곳저곳 뒤져보면서 TMessage의 LParam이 윈도우로부터 메시지를 받아 처리할 수 있다고 알게 되서 밑에 있는것 처럼 코딩을 했는데요...뭐가 어찌 된건지 안되서리...ㅠ.ㅠ
다른 예제 프로그램이나 빌더에 있는 예제도 봤거덩여..
그래서 저런 비슷한 부분에서 중단점 추가하고...한라인씩 디버깅 해 보니까 마우스 포인터가 트레이아이콘위로 가자마자 딱 멈추더라고여...제가 저부분 기냥 건너 뛰던데..
어느부분이 잘못된건지...ㅠ.ㅠ
다시한번 도움을 주세요~~~
님이 쓰신 글 :
: 제가 이해를 완벽히는 다 못했습니다.
: 하시려는 부분은 간단히 구현가능한 부분인 것으로는 여겨집니다.
:
: 일반적으로 트레이 아이콘에 좌측 버튼을 버블클릭하는 이벤트나 우측 마우스로 메뉴를 보여 선택하게 하는 방법 또는 좌측 마우스를 한번 눌러서 그냥 선택메뉴를 보이는 방법 등으로 나눌 수 있을 겁니다.
:
: 트레이 아이콘은 직접 코딩을 하셔서 만드셔도 되고
: 또는 빌더의 컴포넌트를 사용하셔도 됩니다.
:
: 제가 보기엔 별로 문제가 없다면 그냥 컴포넌트를 사용하세요~
:
: 콤퍼넌트의 트레이아이콘 활성화를 위해서 조절하셔야 할부분은 세가지 입니다.
:
: 우선 팝업 메뉴를 메인 폼에 두신 후 프로퍼티를 그 메뉴에 연결하는 겁니다.
:
: 두번째는 Visible 프로퍼티를 트레이아이콘화할때 값을 true로 변경하는 겁니다.
:
: 세번째 클릭 이벤트에서 마우스 버튼을 구별하여 메뉴를 사용할 수 있게 하면 되는 겁니다.
:
: 한번 해보시고 정녕 안되시면 예제를 하나 드리겠습니다.
:
: 빵샹시 님이 쓰신 글 :
: : 안녕하세요..
: : 트레이 아이콘을 여기 게시판보고 따라서 만들었거든요..
: : 메인 폼 따로...트레이 아이콘 작업만 따로 처리 하는 cpp파일을 따로 만들고요...
: : 그래서 메인폼에서 트레이 아이콘 처리 하는부분을 불러와서 트레이아이콘이 만들어지긴 했는데요..
: : 이 트레이아이콘에서 팝업창을 띄워야 하는데..잘 안되서요..
: : 게시판에 나온대로 보고 해봤는데도 잘 안되고..
: : 1..팝업창을 띄우는 부분까지 트레이아이콘만 처리하는 cpp파일에서 처리하게 하고 싶은데..그건 안되는건가요??
: : 2..안된다면 메인폼에서 띄울때 어떻게 해야 하는지 알려주세요!!
: :
: : //트레이 아이콘의 팝업매뉴 띄우기
: : void __fastcall TrayIcon::TrayPop(TMessage& Msg)
: : {
: : if(Msg.LParam == WM_RBUTTONUP)
: : {
: : MainForm->TrayMenu->Popup(Mouse->CursorPos.x, Mouse->CursorPos.y);
: : SetForegroundWindow(Handle);
: : }
: : else if (Msg.LParam == WM_LBUTTONUP)
: : {
: : MainForm->Show();
: : }
: : }
: :
: : 빌더에 있는 트레이 아이콘 예제도 따라해보고..이곳 게시판에 있는 내용도 따라 해 봤는데 잘 안됬습니다..
: : 고수님들 알려주세요~~
|