Q&A

  • 곰플레이어 같은 폼 리사이즈에 대해 질문 드립니다.
안녕하세요. 초짜 델파이 유저 Yull 입니다.

곰플레이어 프로그램을 보면, 메인폼이 라운딩처리(폼 모서리를 둥글게..)가 된 상태에서
폼 리사이즈가 가능합니다.

현재 Delphi 2007 을 사용하고 있고, 지금까지 시도해 본 것은

1. 폼의 Transparent 속성을 설정하고 폼에 이미지를 입히면 라운딩 효과가 나긴 하는데 (물론 리사이즈 가능)
    BorderStyle 이 bsSizeable 이다 보니 폼 테두리가 두껍게 나옵니다.

2. 폼의 BorderStyle 을 bsNone 으로 설정하고 (기본적으로 폼 리사이즈 불가상태)
    CreateRoundRectRgn 과 SetWindowRgn을 사용하여 폼 모서리를 둥글게 깎은 다음
    폼의 MouseMove 이벤트를 사용하여 코딩으로 폼 리사이즈를 구현한 것인데 편법으로 해서 그런지
    폼의 상단을 잡고 아래로 리사이즈를 하면 화면 전체가 이동해 버리고 (빈번하게 발생 ㅠ.ㅠ)
    폼의 이미지가 리프레시가 안되는 현상이 발생합니다. (MouseUp 후에는 괜찮습니다.)

곰플레이어를 보면 폼 테두리도 BorderStyle := bsNone 일때처럼 단선으로 나오면서 폼 리사이즈도
자연스럽게 되는데, 현재까지 아무리 검색해봐도 마땅한 해결책을 못찾은 상태입니다. 쩝.

구현하려고 하는 것은 폼의 테두리가 얇게 나오면서 폼 리사이즈가 가능한 것입니다.
고수님들의 조언 부탁드립니다.

즐거운 한주 되세요. ^^
4  COMMENTS
  • Profile
    최용일 2007.11.20 03:03
    안녕하세요. 최용일입니다.

    윈도우처럼 폼의 리사이즈를 하실려면 폼의 OnMouseMove이벤트를 쓰시는게 아니라 WM_NCHITTEST메세지를 이용해서 처리를 하시면 됩니다.

    아래 링크 참조하셔서 원하는 기능을 구현하세요...

    http://www.delphi.co.kr/zboard/view.php?id=qanda&page=1&sn1=&divpage=11&sn=off&ss=on&sc=on&keyword=WM_NCHITTEST&select_arrange=headnum&desc=asc&no=104278

    ^^ 항상 즐코하세요.
  • Profile
    Yull 2007.11.20 18:52
    답변 감사드립니다. ^^
    한가지 문제는, 폼을 API를 이용해 라운딩처리한 상태에서 리사이즈를
    해야 하는데 기존의 HITEST 메세지만을 받아서 처리하면 폼의 맥시멈
    사이즈가 변하질 않습니다.  이건 직접 보셔야지 설명이 되는데 ㅠ.ㅠ
  • Profile
    최용일 2007.11.20 21:19
    흠...

    첨부파일 참조해보세요...

  • Profile
    Yull 2007.11.22 03:00
    인사가 넘 늦었죠. ㅠ.ㅠ

    깊이 감사드립니다. ^^