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
[75243] WndProc에 대해서(아래질문 관련)
궁금이... [darkman76] 2876 읽음    2019-01-15 02:43
안녕하세요 도움 많이 받고 있는 사람입니다.
개발 환경은 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);
    }
}

+ -

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