MFC如何制作一个透明的窗体
解决方案 »
- 设置快捷键(如:&D),那么D就有了一条下画线。除了用&符号外,能否用其他方式来设置?
- 随便 散点分
- 线程问题
- 轻轻松松开发皮肤软件
- 为何按钮disabled?
- Nero API(解决问题 必有重谢)
- 大虾救命,对双视图CTreeView CRichEditView选择什么文档类?
- vc中的消息机制问题
- 为什么客户区是下陷的?
- 怎样在右击窗口的标题栏弹出的菜单中增加一个菜单项并相应该菜单项??????????????????????????????????????????????????????????????
- 请问如何用MFC编写屏幕保护程序?
- 咨询各位了:VC+SQLSERVER的书籍(电子书籍)有没有?
在App的InitInstance()里如下做:
BOOL CTest_2003_2_25App::InitInstance()
{
.........
m_pMainWnd->ModifyStyleEx(0,WS_EX_TRANSPARENT,0);
return TRUE;
}
试一试^-^
我测试过,可以的。
第一步 定义功能
typedef BOOL (FAR PASCAL * FUNC1)(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);
第二步 实现代码
在OnInitDialog中加入下列代码
.....
HMODULE hModule = GetModuleHandle("user32.dll");
FUNC1 SetLayeredWindowAttributes;
SetLayeredWindowAttributes = (FUNC1) GetProcAddress (hModule, _T( "SetLayeredWindowAttributes" ) ); // 设置分层扩展标记
SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) | 0x80000L);
// 70% alpha
SetLayeredWindowAttributes(GetSafeHwnd(), 0, (255 * 70) / 100, 0x2);
直接在在OnInitDialog中加入下列代码就可以了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,230,2);
FreeLibrary(hInst);
}