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
[75245] Re:Re:WndProc에 대해서(아래질문 관련)
궁금이... [darkman76] 2831 읽음    2019-01-15 14:11
빌더(TWx) 님이 쓰신 글 :
: 궁금이... 님이 쓰신 글 :
: : 안녕하세요 도움 많이 받고 있는 사람입니다.
: : 개발 환경은 2009 c++에서 하고 있구요
: : 폼에 border를 bsNone으로 하고 패널을 맨위에 위치시키기 위해 아래 글과 같이 질문 올렸더니
: : 감사하게도 빌더님이 아래 소스와 같이 WndProc을 사용하면 된다고 하여 적용하였더니 잘되더군요
: : 문제는 메뉴에서 서브폼을 불러 컨트롤 할려고 했더니 모든 이벤트를 메인 WndProc에서 먹는것 같더라고요
: : 아예 동작을 안합니다.
: : 그리고 서브폼에서도 WndProc 함수가 필요해서 선언하고 
: : default:
: :         TForm::WndProc(M);
: : 이쪽에 브레이크를 걸고 실행시키면 서브폼에서도 메시지가 넘어옵니다.
: : 근데 서브폼이 아예 동작을 안하네요 왜일까요?(마우스이벤트, 버튼등 모든게)
: : 간절히 답변 부탁드립니다.
: : 글머 수고하세요
: :
: :
: :
: :
: :
: : void __fastcall TForm1::WndProc(TMessage &M)
: : {
: :     static RECT rect = {0};
: : 
: :     switch (M.Msg)
: :     {
: :     case WM_CREATE:
: :         AdjustWindowRectEx(&rect, GetWindowLongPtr(Handle, GWL_STYLE) & ~WS_CAPTION, FALSE, NULL);
: :         rect.left *= -1;
: :         rect.top *= -1;
: :         return;
: : 
: :     case WM_NCACTIVATE:
: :         return;
: : 
: :     case WM_NCCALCSIZE:
: :         if (M.LParam)
: :         {
: :             NCCALCSIZE_PARAMS* sz = (NCCALCSIZE_PARAMS*)M.LParam;
: :             // sz->rgrc[0].top += 3; 상단 보더를 완전히 없애려면 코멘트 처리
: :             sz->rgrc[0].left += rect.left;
: :             sz->rgrc[0].right -= rect.right;
: :             sz->rgrc[0].bottom -= rect.bottom;
: :             return;
: :         }
: :         break;
: : 
: :     default:
: :         TForm::WndProc(M);
: :     }
: : }
: :
:
:
:
: 답변:
:
:
: 서브 폼이 있어요?
: 메세지가 라우팅 되도록 하려면...
:
:
: 
: void __fastcall TForm1::WndProc(TMessage &M)
: {
: 	static RECT rect = {0};
: 
: 	switch (M.Msg)
: 	{
: 	case WM_CREATE:
: 		AdjustWindowRectEx(&rect, GetWindowLongPtr(Handle, GWL_STYLE) & ~WS_CAPTION, FALSE, NULL);
: 		rect.left *= -1;
: 		rect.top *= -1;
: 		M.Result = 1;
: 		break;
: 
: 	case WM_NCACTIVATE:
: 		M.Result = 1;
: 		break;
: 
: 	case WM_NCCALCSIZE:
: 		if (M.LParam)
: 		{
: 			NCCALCSIZE_PARAMS* sz = (NCCALCSIZE_PARAMS*)M.LParam;
: //			sz->rgrc[0].top += 3;
: 			sz->rgrc[0].left += rect.left;
: 			sz->rgrc[0].right -= rect.right;
: 			sz->rgrc[0].bottom -= rect.bottom;
: 			M.Result = 1;
: 		}
: 		break;
: 
: 	default:
: 		TForm::WndProc(M);
: 	}
: }
: 
: 


매번 친절한 답변 정말 감사합니다.
가끔 느끼는 거지만 이런 답변을 해주시는게 가치로 환산할수 없는 큰 은혜로 생각됩니다.
복 많이 받으실거예요

+ -

관련 글 리스트
75243 WndProc에 대해서(아래질문 관련) 궁금이... 2905 2019/01/15
75244     Re:WndProc에 대해서(아래질문 관련) 빌더(TWx) 2788 2019/01/15
75245         Re:Re:WndProc에 대해서(아래질문 관련) 궁금이... 2831 2019/01/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.