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
[3263] Re:WM_DISPLAYCHANGE 윈도우 메시지 처리에 대해
박지훈.임프 [cbuilder] 4573 읽음    2000-04-05 00:00
임문환 님이 쓰신 글 :
: 안녕하십니까?
:
: 몇 일 전에 문의드렸던 아래아 한글 DDE 문제는 해결했습니다.
:
: 이 번에는 다른 질문을 드리고자 합니다.
:
: 모니터의 해상도가 변경된 경우 발생하는 WM_DISPLAYCHANGE 메시지에 반응하는 이밴트 처리기를 아래와 같이 구현하였습니다.
:
: 그런데 이상하게도 프로그램을 실행해둔 상태에서 제어판의 디스플레이에서 해상도를 변경하면
: 해당 이밴트 처리기인 WMDisplayChange가 호출되지 않고 Form1 내의 다른 메서드(이름은 완전히 다름)가 호출됩니다.
:
: 호출되는 메서드의 이름은 WMDisplayChange와는 전혀 다른 것으로서 코딩시 잘 못 입력할 수도 없는 그런 것입니다.
: 한편 잘못 호출된 메서드조차도 제대로 기능을 하지 않습니다.
: 무슨 문제가 있는 것일까요?
:
: 참고로 WM_NCHITTEST  메시지에 반응하는 WMNCHitTest는 제대로 작동합니다.
:
: 헤더 파일의 내용:
: class TForm1 : public TForm
: {
: __published:   

: private:
: void __fastcall WMNCHitTest(TMessage &Msg);
: void __fastcall WMDisplayChange(TMessage &Msg);
:
: public:
:   BEGIN_MESSAGE_MAP
:    MESSAGE_HANDLER(WM_NCHITTEST,TMessage,WMNCHitTest)
:    MESSAGE_HANDLER(WM_DISPLAYCHANGE,TMessage,WMDisplayChange)
:   END_MESSAGE_MAP(TForm)
: };
:
:
: 유닛 파일의 내용:
: void __fastcall TForm1::WMNCHitTest(TMessage &Msg)
: {
:  if(GetAsyncKeyState(VK_LBUTTON)<0)
:   Msg.Result = HTCAPTION;
:  else
:   Msg.Result=HTCLIENT;
: }
:
: //---------------------------------------------------------------------------
: void __fastcall TForm1::WMDisplayChange(TMessage &Msg)
: {
:   윈도우 및 컨트롤들의 위치와 크기를 조절하는 코드들
: }
:
: 끝.



임펠리테리입니다.

아랫분과 마찬가지로, 저도 동일한 예제를 만들어서 실행해보았는데, 결과는 아무 이상이 없더군요. 물론 의심이 가는 곳이 있긴 한데.. 이정도의 소스만으로는 알수가 없구요.
유닛 파일, 그러니까 헤더파일이 아닌 클래스 함수들의 바디가 있는 소스 파일에서 잘못 호출되는 함수와 WMDisplayChange() 함수의 위치를 바꾸어보시기 바랍니다. 지금 알려주신 내용만으로는 정확히 알 수가 없지만, 만약 잘못 호출된다고 하는 그 함수가 오버라이딩된 함수라면 그런 경우가 있을 수 있는 것으로 들었습니다.

만약 그래도 해결이 안되신다면, 소스 전체를 제게 보내주시면 분석해보도록 하지요. 물론 소스를 받아서 실행해보았는데도 같은 버그가 발견되지 않는다면 저도 어쩔 수가 없겠습니다만.

그럼 이만...

+ -

관련 글 리스트
3260 WM_DISPLAYCHANGE 윈도우 메시지 처리에 대해 임문환 4680 2000/04/04
3263     Re:WM_DISPLAYCHANGE 윈도우 메시지 처리에 대해 박지훈.임프 4573 2000/04/05
3262     Re:WM_DISPLAYCHANGE 윈도우 메시지 처리에 대해 전종욱 4775 2000/04/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.