在建立一个对话框窗口之后通过拦截WM_CTLCOLOREDIT返回用CreatePatternBrush建立的画刷.之后EDIT控件画刷就会用该画刷中所加载的图片平铺整个控件所在区域.当然需要把wParam所指向的HDC通过SetBkMode设置为透明模式

static LRESULT MyDeskProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
...{
#define ICON_SIZE 96
static POINT icoPos;
static dx=13,dy=7;
switch(message)...{
case WM_KEYDOWN:
switch(wParam)...{
case VK_MENU:
case VK_F1:
CreateMainMenu();
break;
case VK_RETURN:
CreateFavoriteWnd();
break;
case VK_UP:
CreateEPGPFWnd();
//CreatePFWnd();
break;
case VK_ESCAPE:
//DoPropertySheet(hwnd);
break;
}break;
case WM_COMMAND:
switch(wParam)...{
case 100:CreateMainMenu();break;
}
//SetCursorPos(LOWORD(lParam),HIWORD(lParam));
break;
case WM_CTLCOLOREDIT:
...{
static HBRUSH hb=0;
extern HINSTANCE hInstDVBRes;
if(hb==0)...{
HBITMAP b=(HBITMAP)LoadImage(hInstDVBRes,0x05,IMAGE_BITMAP,0,0,0);
hb=CreatePatternBrush(b);
}
SetBkMode((HDC)wParam,TRANSPARENT);
return hb;
}
case WM_DESTROY:
case WM_CLOSE:break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
}
使用WM_CTLCOLOREDIT自定义编辑框背景
本文介绍了一种通过拦截WM_CTLCOLOREDIT消息并利用CreatePatternBrush来为编辑控件(EDIT控件)设置背景图片的方法。这种方法能够使图片平铺在整个控件区域内,并且通过SetBkMode将HDC设置为透明模式,从而实现更加美观的视觉效果。
590





