又一个修改对话框背景颜色

原创 2008年09月28日 10:50:00
 
BOOL CTestKEYDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnEraseBkgnd(pDC);
HBITMAP h_bitMap;
h_bitMap = SHLoadImageFile(L"bg.gif");
if(h_bitMap == NULL)
{
return false;
}
BITMAP bm;
GetObject(&h_bitMap,sizeof(HBITMAP),&bm);
/*
为一个图片赋值。
*/
HDC hDc = CreateCompatibleDC(pDC->GetSafeHdc());
/*
内存中的DC是仅仅存储在内存中的。当一个DC被创建的时候,它的外观(显示模式)只是一个象素大小。所以,在应用程序使用DC之前,
要先将一个大小合适的图片用"CreateCompatiableBitmap"“选择”到内存中,这样DC的大小就是图片的大小。
当内存中的一个DC被创建的时候,所有的属性都是默认值 ,如果想把它当做一个普通的DC,使用者必须设置它的属性,获得当前的设置,
和当前选中的画图用的画笔、画刷,的区域的大小。
CreateCompatibleDC函数只能用于支持光栅操作的设备。应用程序是否支持光栅操作,可以用"GetDeviceCaps"函数来获得。
当DC使用完后,用DeleteDC去销毁这个DC。
*/
/*
A memory DC exists only in memory. When the memory DC is created, its display surface is exactly one monochrome pixel wide and one monochrome pixel high.
Before an application can use a memory DC for drawing operations, it must select a bitmap of the correct width and height into the DC. 
To select a bitmap into a DC, use the CreateCompatibleBitmap function, specifying the height, width, and color organization required. 
When a memory DC is created, all attributes are set to normal default values. The memory DC can be used as a normal DC.
You can set the attributes; obtain the current settings of its attributes; and select pens, brushes, and regions.
The CreateCompatibleDC function can only be used with devices that support raster operations. 
An application can determine whether a device supports these operations by calling the GetDeviceCaps function. 
When you no longer need the memory DC, call the DeleteDC function. 
*/
HBITMAP hOldBmp = NULL;
hOldBmp = (HBITMAP)SelectObject(hDc,&h_bitMap);
/*
保存原先的图片信息,以便恢复。(用完后,需要对系统的信息进行恢复)
*/
/*
This function returns the previously selected object of the specified type. 
An application should always replace a new object with the original, 
default object after it has finished drawing with the new object. 
*/
CRect rect;
GetClientRect(&rect);
/*
获取当前客户区的大小。
*/
StretchBlt(pDC->GetSafeHdc(),rect.left,rect.top,rect.Width(),rect.Height(),
hDc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
/*
Draw the Picture .
*/
SelectObject(hDc,hOldBmp);
DeleteDC(hDc);
hDc = NULL;
if(h_bitMap != NULL)
{
DeleteObject(h_bitMap);
}

return TRUE;
}

如何改变对话框的背景颜色

1、如何改变对话框的背景颜色 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将...
  • stavck
  • stavck
  • 2006年09月20日 09:52
  • 8371

改变对话框的背景色

刚写了个
  • wwkaven
  • wwkaven
  • 2014年06月18日 16:10
  • 756

MFC修改对话框及控件背景颜色 - 很轻松!

1、修改静态文本框、编辑框、按钮等子控件的显示效果 MFC中对主窗口和子控件重绘之前都会调用OnCtlColor函数来进行一些基本的属性设置,如设置子控件的背景模式(是否透明等)、文本颜色、...
  • baobei0112
  • baobei0112
  • 2016年07月20日 11:01
  • 5803

【win32】标记菜单与对话框背景色

主要是想如下的一个程序,设定了一个标记菜单,在选定不同菜单的时候,客户区的颜色会改变,以此说明win32对话框客户区的背景颜色设置与标记菜单使用。 比起MFC里面的背景颜色改变,WIN32的要复杂得...
  • yongh701
  • yongh701
  • 2017年03月31日 20:35
  • 1164

mfc 改变对话框背景颜色

方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。   ----   其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。 下面的例子是将应用程序对话框设...
  • m372897500
  • m372897500
  • 2012年01月17日 11:26
  • 552

VS2012修改对话框背景颜色

SetDialogBkColor可以很方便地设置对跨框的背景颜色,可惜现在已经废弃了。我用Visual Studio 2012编译后会出现这个错误: 大意是用处理WM_CTLCOLORDLG消息...
  • linqiaqun
  • linqiaqun
  • 2013年11月07日 10:31
  • 4046

vc 修改对话框背景颜色

具体步骤:1,首先为所要改变颜色的对话框类添加WM_CTLCOLOR消息函数。2,给你的工程中的对话框类添加一个CBrush变量,如:CBrush   m_bkBrush; //准备一把背景刷子3,在...
  • iccome
  • iccome
  • 2011年06月11日 08:48
  • 2379

VC++修改对话框颜色方法

在软件开发中,出于界面的美观或是别的目的我们需要修改对话框的颜色,这时我们可以通过如下方法来达到目的。 注:本例使用VC++2010测试, 以下第一种方法不适合该版本的VC++库。...
  • xbmoxia
  • xbmoxia
  • 2014年09月10日 16:48
  • 1391

【VS开发】VS2010 MFC中控件、对话框等背景颜色动态修改的方法

【VS开发】VS2010 MFC中控件、对话框等背景颜色动态修改的方法标签(空格分隔):【VS开发】声明:引用请注明出处http://blog.csdn.net/lg1259156776/说明:最近突...
  • LG1259156776
  • LG1259156776
  • 2015年10月31日 16:33
  • 4351

MFC设置对话框背景色及控件颜色

MFC设置对话框背景色及控件颜色 一、使用背景图片更改对话框背景色 在对话框源文件void CxxDlg::OnPaint()函数中 if (IsIconic()) {     (这里省...
  • u013541325
  • u013541325
  • 2015年07月04日 15:53
  • 8248
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:又一个修改对话框背景颜色
举报原因:
原因补充:

(最多只允许输入30个字)