여기저기 쓰임새가 많을 것 같아서 올려둡니다.


다이얼로그 테두리를 없애기 위해서는 다이얼로그 속성 -> Style에서 BorderNone으로 해주셔야 합니다.


// 아래는 다이얼로그 모서리 클릭 후 이동시 크기 조절, 다이얼로그 클릭 후 드래그 시 다이얼로그 이동 부분입니다.
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


Posted by 모과이IT
,