现在的位置: 首页 > 综合 > 正文

Windows 界面:透明窗体的实现

2013年10月12日 ⁄ 综合 ⁄ 共 559字 ⁄ 字号 评论关闭

本人一般不做 UI 的,当然除了一些小工具的简单界面。不过由于工具做多了,对分割窗口之类的东东也都有所涉猎,尽管是看看文档,依葫芦画瓢。

今天有找到个 API 函数实现窗体的透明,原来微软提供的接口还蛮丰富的吗,:-)

半透明对话框在OnInitDialog()中添加以下代码即可:

 // 透明窗口
 //加入WS_EX_LAYERED扩展属性
 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 fun = NULL;
  //取得SetLayeredWindowAttributes函数指针
  fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
  if(fun)fun(this->GetSafeHwnd(), 0, 220, 2);
  FreeLibrary(hInst);
 }

抱歉!评论已关闭.