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

델파이 Q&A
Delphi Programming Q&A
[14072] Re:윈도우를 최하위로 두고 싶은데요. Win7 64비트에서는 안됩니다. 방법이 없을까요?
빌더 [] 2573 읽음    2012-01-29 11:05
하두고 님이 쓰신 글 :
: DC := GetWindow(GetWindow(FindWindow('Progman', nil), GW_CHILD), GW_CHILD);
:     Windows.SetParent(handle, DC);
:
: 아시는 분들은 다 아시는 코드인데요.
: Win7 64비트에서는 아예 윈도우가 보이지 않습니다.
: 방법이 없을까요?
:
:
: <추가내용입니다>
: 이것 저것 만지작 거리다 보니 Win7 바탕화면의 테마를 Aero로 놓고
: 이 소스코드를 사용하면 창이 안보이네요.
:
: 기본테마나 고전테마로 놓으면 되고요.
:
: 그런데 웃기는건 기본테마나 고전테마로 놓아 창이 보이게 하고 나서
: 테마를 다시 Aero로 돌려놓으면 창이 그대로 보입니다.
:
: 문제는 재부팅한 후인데요.
:
: Aero테마로 놓고 재부팅을 하면 보였던 창이 다시 안보여요.
: 이거 어떻게 해결해야 할까요?


Aero 테마가 사용되지 않는 경우에는 "Program Manager" Progman 클래스를 패런트로 하는
윈도우 패런트/차일드 관계를 이용해서(Progman -> SHELLDLL_DefView -> SysListView32 )
윈도우 창을 데스크탑 윈도우 레이어에 두는 방법을 사용하면 되지만...

Aero 테마가 사용되면 윈도우즈 시스템이 위와 같은 패런트/차일드 관계를 이용하지 않고 ...
WorkerW 라는 클래스 네임을 갖는 워커 윈도우를 패런트로 해서 아래와 같이 다른 패런트/차일드 관계를
이용하기 때문에...

WorkerW -> SHELLDLL_DefView -> SysListView32

기존의 방법 대신 다른 방법을 이용해야 합니다.

시스템 런타임중에 차일드 윈도우를 갖지 않는 WorkerW 클래스의 다른 윈도우가 있을 수 있으니까
WorkerW 라는 클래스 네임을 갖는 윈도우를 찾되, 위와 같이 SHELLDLL_DefView와 SysListView32를
패런트/차일드 관계로 갖는 WorkerW 계층을 찾아서 해당하는 SysListView32 를 SetParent 로 지정해
주면 됩니다.

데스크탑을 확장해서 이용하는 멀티모니터 환경에서는 패런트/차일드 관계가 바뀌면서 윈도우 Rect 도
확장된 데스크탑 레이어의 좌표계를 따르게 돼 있기 때문에  이 점만 주의하면 됩니다.

가령 1(레프트), 2(라이트) 로 데스크탑을 확장해서 사용하는 듀얼모니터 환경에서...
2번이 주모니터(프라이머리)로 설정되어 있다면 SetParent로 윈도우를 데스크탑 레이어로 세팅하는 순간
해당 윈도우가 확장된 데스크탑의 좌표게를 따라 주모니터인 2번 모니터의 로컬 좌표계에서 1번 모니터로
이동 하게 된다는 거죠. 멀티모니터 환경도 고려한다면 이 부분에 대한 처리도 필요할 겁니다.

+ -

관련 글 리스트
14069 윈도우를 최하위로 두고 싶은데요. Win7 64비트에서는 안됩니다. 방법이 없을까요? 하두고 2016 2012/01/28
14072     Re:윈도우를 최하위로 두고 싶은데요. Win7 64비트에서는 안됩니다. 방법이 없을까요? 빌더 2573 2012/01/29
14078         Re:Re:빌더님 막상 구현을 하려하니.... 하두고 2090 2012/01/30
14073         저도 질문 있습니다 ??? 대박왕 2004 2012/01/29
14074             Re:빌더님 감사합니다. 그리고 대박왕님 하두고 2140 2012/01/29
14075                 Re: 두분 께 부연해서 말씀 드리면... 빌더 2152 2012/01/30
14077                     Re:Re: 빌더님 부연설명 감사합니다. 하두고 1975 2012/01/30
14076                     Re:Re: 감사합니다 ^^ 대박왕 1843 2012/01/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.