对话框皮肤

来源:互联网 发布:什么软件可以tvb 编辑:程序博客网 时间:2024/04/27 15:20

 

设置圆角对话框: (网上说在onsize中做,我还没有尝试,目前写在OnInitDialog 里面了)

CRect rect;

GetWindowRect(&rect);

CRgn reg;

reg.CreateRoundRectRgn(reg.left,reg.top,rgn.width(),rgn.Height());

SetWindowRgn(rgn,true);

 设置窗体启动时的大小:

SetWindowPos();   需要详细了解用法

MoveWindow();

注意屏幕坐标客户坐标转化

CenterWindow() 对话框居中设置

 子对话框 覆盖在父对话框上

子对话框 设置属性: 边框 none ,类型 child,

设置子对话框透明,  设置属性TransParent 为true

子对话框 通信父对话框

 

::SendMessage(::GetParent(this->m_hWnd),WM_SYSCOMMAND,0xF012,0);

表示,拖动子对话框 带动 父对话框 一起移动

 

在父 对话框的 oninitDialog 中,创建 非模态对话框

GetWindowRect(&rect);

ScreenToClient(&rect);

CsubDialog *pSubDialog

pSubDialog = new CsubDialog();

pSubDialog->Create(IDD_SUBDIALOG,this);

pSubDialog->MoveWindow(rect.left,rect.top,rect.Width(),50); 设置子对话框 在 父对话框 中的位置

pSubDialog->BringWindowToTop();  顶置子对话框

pSubDialog->ShowWindow(SW_SHOW);   显示子对话框

 

设置对话框风格:

ModifyStyleEX(0,WS_EX_TOPMOST,SWP_SHOWWINDOW);

 

设置透明对话框(没有尝试这个,现在记在这里,备用

 

SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
//SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE) | 0x80000);
   HINSTANCE hInst = LoadLibrary(L"User32.DLL");       
  if(hInst)           
  {           
      typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);           
      MYFUNC fun = NULL;          
      //取得SetLayeredWindowAttributes函数指针           
      fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");          
      if(fun)fun(this->GetSafeHwnd(),0,200,2);   
      Invalidate();  
      FreeLibrary(hInst);

}

原创粉丝点击