如何去掉窗口的边框,把程序中某个颜色透明 想实现类似QQ宠物那种,一个应用程序只有一个小企鹅 请问具体思路和代码是怎样的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 透明可以使用 AlphaBlend API整个窗体也可以使用 SetLayeredWindowAttributes API不过,这个API是2000以后的,98等不能使用 创建一个对话框,border样式改为none再SetWindowRgn设置对话框的外型,最后贴图 SetWindowRgn这个不是mfc的么,我试了下,好像不能用于普通的windows程序我在render函数中这样写,窗口看上去好像透明了,但是却使劲的闪,请问如何解决窗口闪呢? DWORD BACK_COLOR = RGB( 255,255,0 ); g_DDraw.FillColor( g_DDraw.GetBackSurface(), BACK_COLOR, NULL ); HWND hWnd = NULL; hWnd = g_App.GetWindow(); SetWindowLong(hWnd,GWL_EXSTYLE, GetWindowLong(hWnd,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(hWnd,BACK_COLOR,0,2); FreeLibrary(hInst); } g_DDraw.Flip( &g_App.GetWinRect() ); render里先FillColor然后再画图,这不找闪呢么。 额,试了网上说的好多法方,都不能,哪位大侠能给我分完整的可以运行的代码啊,谢了[email protected] 我每次画图时都先fillcolor,再显示,这样的话,我每次显示的东西都一样,中间没有显示空白,为啥会闪能说的具体点嘛? 其实就是以图片形状显示窗口.在Initdialog中:CDC* pDC; CDC memDC; CBitmap cBitmap; COLORREF col; CRect rect; int x,y; CRgn Rgn,rgn; pDC = GetDC(); GetWindowRect(&rect); cBitmap.LoadBitmap(IDB_BITMAP1); memDC.CreateCompatibleDC(pDC); memDC.SelectObject(&cBitmap); Rgn.CreateRectRgn(0,0,rect.Width(),rect.Height()); for(x=0;x<rect.Width();x++) { for(y=0;y<rect.Height();y++) { col=memDC.GetPixel(x,y); if(col==RGB(255,255,255)) { rgn.CreateRectRgn(x,y,x+1,y+1); Rgn.CombineRgn(&Rgn,&rgn,RGN_XOR); rgn.DeleteObject(); } } } SetWindowRgn((HRGN)Rgn,true); ReleaseDC(pDC);IDB_BITMAP1是不规则的图形. float3 * float4 的结果是什么? 菜鸟问个问题 请问一个接口函数? 一个简单,常用,但是却令我找了很长时间也没找到的问题 关于VC和数据库问题,100分,不够继续加 计算二值图像的面积 那位大虾能够提供双机容错和磁盘阵列的资料或下载地址!! 怎样编一个能显示AutoCAD的dxf文件的程序 VC中使用DataGrid,如何做到按一个“删除”按扭后才删除选中的记录? 怎样使登陆框不出现? 在调用EndModal之后PostMessage后消息处理顺序问题 dll中输出调试信息
整个窗体也可以使用 SetLayeredWindowAttributes API
不过,这个API是2000以后的,98等不能使用
再SetWindowRgn设置对话框的外型,最后贴图
g_DDraw.FillColor( g_DDraw.GetBackSurface(), BACK_COLOR, NULL ); HWND hWnd = NULL;
hWnd = g_App.GetWindow(); SetWindowLong(hWnd,GWL_EXSTYLE,
GetWindowLong(hWnd,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(hWnd,BACK_COLOR,0,2);
FreeLibrary(hInst);
} g_DDraw.Flip( &g_App.GetWinRect() );
[email protected]
CDC* pDC;
CDC memDC;
CBitmap cBitmap;
COLORREF col;
CRect rect;
int x,y;
CRgn Rgn,rgn;
pDC = GetDC();
GetWindowRect(&rect);
cBitmap.LoadBitmap(IDB_BITMAP1);
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&cBitmap);
Rgn.CreateRectRgn(0,0,rect.Width(),rect.Height());
for(x=0;x<rect.Width();x++)
{
for(y=0;y<rect.Height();y++)
{
col=memDC.GetPixel(x,y);
if(col==RGB(255,255,255))
{
rgn.CreateRectRgn(x,y,x+1,y+1);
Rgn.CombineRgn(&Rgn,&rgn,RGN_XOR);
rgn.DeleteObject();
}
}
}
SetWindowRgn((HRGN)Rgn,true);
ReleaseDC(pDC);IDB_BITMAP1是不规则的图形.