여기저기 쓰임새가 많을 것 같아서 올려둡니다.
다이얼로그 테두리를 없애기 위해서는 다이얼로그 속성 -> Style에서 Border를 None으로 해주셔야 합니다.
// 아래는 다이얼로그 모서리 클릭 후 이동시 크기 조절, 다이얼로그 클릭 후 드래그 시 다이얼로그 이동 부분입니다.
void CNStatDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// 다이얼로그 크기 조절
CRect moveableRect;
GetClientRect(&moveableRect);
moveableRect.left = max(1, moveableRect.right - 10);
moveableRect.top = max(1, moveableRect.bottom - 10);
if( PtInRect(&moveableRect, point))
{
SetCursor(LoadCursor(0,IDC_SIZEALL));
if( nFlags&MK_LBUTTON )
SendMessage(WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0);
}else // 다이얼로그 위치 이동
PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
CDialog::OnMouseMove(nFlags, point);
}
// 아래는 다이얼로그 투명도 조절 함수입니다.
typedef BOOL (WINAPI *SetLayer)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
#define LWA_COLORKEY 0x01
#define LWA_ALPHA 0x02
void CNStatDlg::n_SetDlgAlpha(int chAlpha) // 다이얼로그 투명도 조절
{
HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL"));
SetLayer pSetLayer = (SetLayer)GetProcAddress(hUser32, "SetLayeredWindowAttributes");
if(pSetLayer == NULL)
{
MessageBox("win2000 이상");
return;
}
SetWindowLong(this->m_hWnd, GWL_EXSTYLE, GetWindowLong(this->m_hWnd, GWL_EXSTYLE) | 0x80000);
pSetLayer(this->m_hWnd, 0,chAlpha, LWA_ALPHA);
}
출처: http://cafe.naver.com/injepnn.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=54
'개발지식창고 > MFC' 카테고리의 다른 글
Picture Control를 이용한 동적인 다이얼로그 연출 (0) | 2010.10.18 |
---|---|
[MFC]현제 프로그램이 실행되고 있는 디렉토리 구하기 (0) | 2010.09.20 |
MFC 어플리케이션 함수 호출 순서 (0) | 2010.09.20 |
MFC Class reference (0) | 2010.09.20 |
MFC tip or Reference (0) | 2010.09.20 |