MFC創建橢圓形半透明對話框

橢圓形半透明對話框:vs20101.創建一個基於對話框的應用程序,工程名爲:OperateDlg。2.在工作區中選擇Class view標籤,展開OperateDlg classes|COperateDlgDlg,雙擊OnInitDialog()函數,在客戶區中添加如下代碼:


BOOL COperateDlgDlg::OnInitDialog()
{
...
 // TODO: 在此添加額外的初始化代碼
 //設置窗口透明度
 SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE)^0x80000);
 HINSTANCE hInst = LoadLibrary("User32.DLL");  // 加載庫文件
 if(hInst)
 {
  typedef BOOL (WINAPI* MYFUNC)(HWND, COLORREF, BYTE, DWORD);
  MYFUNC func = NULL;   // 函數指針
  // 取得SetLayeredWindowAttributes()函數指針
  func = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
  // 使用SetLayeredWindowAttributes函數設定透明度
  if(func)
   func(this->GetSafeHwnd(), RGB(0,0,0), 200, 0x2);
  FreeLibrary(hInst);
 }
 // 設置窗口形狀
 CRect Rect;
 CRgn newRgn;
 // 獲得當前窗體區域
 GetClientRect(&Rect);
 // 設置橢圓形區域
 newRgn.CreateEllipticRgn(0,0,Rect.Width(), Rect.Height());
 ::SetWindowRgn(this->m_hWnd, (HRGN)newRgn, TRUE);

 return TRUE;  // 除非將焦點設置到控件,否則返回 TRUE
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章