본문 바로가기

Windows/MFC

dialog

자. 그럼 이런 옵션 다이얼로그를 직접 만들어 보겠습니다.

 

만드는 것은 그리 어렵지 않습니다. 다이얼로그를 각 탭의 갯수만큼만 더 만들어 주시면 되구요.


초반에 다이얼로그 위치를 잡을 때 아래와 같이 탭 컨트롤의 위치와 크기, 탭 버튼의 높이 정보를 이용해서 다이얼로그를 생성해 주시면 됩니다.

위치와 크기를 구하는 함수는 아래의 코드를 참고하세요.

  232     int iw,ih;

  233     CRect c,w,rc,th;

  234     GetWindowRect(&w);

  235     GetClientRect(&c);

  236     iw = (w.Width()-c.Width())/2;

  237     ih = (w.Height()-c.Height())-iw;

  238     m_ctrlTab.GetWindowRect(&rc);

  239     m_ctrlTab.GetItemRect(0, &th);

  240 

  241     rc.left        = rc.left - iw;

  242     rc.right    = rc.right - iw -2;

  243     rc.top        = rc.top - ih;

  244     rc.bottom    = rc.bottom - ih -2;

  245     rc.top        = rc.top + th.bottom;

  246     rc.DeflateRect(1,1);

  247 

  248     CTempDlg* p1 = new CTempDlg;

  249     p1->Create(CTempDlg::IDD, this);

  250     p1->MoveWindow(&rc, TRUE);

  251     p1->ShowWindow(SW_SHOW);

  252     m_pTempDlg = p1;


마지막으로 할 일은, xp 의 경우 탭 컨트롤의 바탕색이 일반 다이얼로그색이 아닌 밝은 은색으로 채워진다는 것인데,

 

이것을 다이얼로그에 직접 적용하려면 테마쪽 api 를 한번 호출해줘야 합니다.

다이얼로그 초기화 함수인 OnInitDialog() 에 밑에 코드를 한번 호출해 주세요.

   40 EnableThemeDialogTexture(GetSafeHwnd(), ETDT_ENABLETAB);


이제 정말 다 되었습니다.


아래의 그림의 첫 탭에는 xp 스타일을 적용한 것이구요, 3번째 탭에는 xp 스타일을 적용하지 않았을 때의 경우 입니다.
http://devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8300&page=1

'Windows > MFC' 카테고리의 다른 글

wcdma conection ConnMgrEstablishConnectionSync  (0) 2013.10.02
windows mobile 6에서 wcdma 망을 이용한 internet  (0) 2013.10.02
TextSelection  (0) 2013.10.02
vs2005 macro  (0) 2013.10.02
error C2243  (0) 2013.10.02