MFC中静态文本框贴图处理

1.静态文本控件贴png图片

在创建控件时添加SS_BITMAP属性SS_NOTIFY

CImage m_Icon.Load(wstring(L"tupian.png").c_str());

RECT rect;

HDC pDC = ::GetWindowDC(pImageStatic->m_hWnd);

::GetWindowRect(pImageStatic->m_hWnd,&rect);

m_Icon.TransparentBlt(pDC,rect,RGB(255,255,255));

pImageStatic->SetBitmap(m_Icon);

pImageStatic->ShowWindow(SW_SHOW);

::ReleaseDC(pImageStatic->m_hWnd,pDC);

2.静态文本控件贴bmp图片

在创建控件时添加SS_BITMAP与SS_NOTIFY属性

HBITMAP m_Icon = (HBITMAP)::LoadImage( NULL,L"tupian.bmp").c_str(), IMAGE_BITMAP, 21,21, LR_LOADFROMFILE);

m_pImageStatic->SetBitmap(m_Icon);

m_pImageStatic->ShowWindow(SW_SHOW);

3.静态文本控件贴ico图片

在创建控件时添加SS_ICON与SS_CENTERIMAGE属性

HICON m_Icon = (HICON)::LoadImage( NULL,(L"tupian.ico").c_str(), IMAGE_ICON, 16,16, LR_LOADFROMFILE);

m_pImageStatic->SetIcon(m_Icon);

4.设置对话框中控件颜色和背景

HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

switch(pWnd->GetDlgCtrlID())

{

case ID_STATUS_COLOR:

{

pDC->SetBkMode(TRANSPARENT);     //设置透明

pDC->SetTextColor(RGB(150,150,150));    //设置字体

pDC->SetBkColor(RGB(255,255, 255));    //设置背景色

break;

}

default:

break;

}

return (HBRUSH)GetStockObject(HOLLOW_BRUSH);

}

5.过滤对话框中的背景颜色

SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,

GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)|0x80000);

HINSTANCE hInst = LoadLibrary(L"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(),RGB(100,100,100),10,1);     //100,100,100 是要过滤的颜色

}

FreeLibrary(hInst);

}

6.更新对话框的主背景bmp图片

BOOL CDlg::OnEraseBkgnd(CDC* pDC)

{

CRect rect;

CDC   memDC;

CBitmap* pOldMemBmp = NULL;

GetWindowRect(&rect);

CBitmap* pBitmap = NULL;

CImage image;

image.Load(m_ImagePath.c_str());   //更新背景只需要更新此处的背景图片的路径

HBITMAP hbmp = image.Detach();

pBitmap = CBitmap::FromHandle(hbmp);

memDC.CreateCompatibleDC(pDC);

pOldMemBmp = memDC.SelectObject(pBitmap);

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0, SRCCOPY);

if(pOldMemBmp)

{

memDC.SelectObject(pOldMemBmp);

}

image.Destroy();

DeleteObject(pBitmap);

DeleteObject(hbmp);

memDC.DeleteDC();

return   TRUE;

}

时间: 2024-10-06 15:52:06

MFC中静态文本框贴图处理的相关文章

MFC更新静态文本框中数据,防止覆盖

1 在更新静态文本框之前首先隐藏控件 2 然后在显示出来. 3 代码: 4 GetDlgItem(IDC_TEXT_PM)->ShowWindow(SW_HIDE); 5 UpDate();//更新数据函数,自定义的 6 GetDlgItem(IDC_TEXT_PM)->ShowWindow(SW_SHOW);

【MFC设置静态文本框背景为透明】

视图类中加入OnCtlColor()函数: IDC_STATIC1为静态文本框ID HBRUSH CAngleView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); if((pWnd->GetDlgCtrlID() == IDC_STATIC1)) { pDC->SetTextColor(RGB(255,255,255))

MFC设置静态文本框,编辑框等控件背景和字体颜色

在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);参数nCtlColor用于指定控件的类型,可以是:.CTLCOLOR_BTN 按钮控件.CTLCOLOR_DLG 对话框.CTLCOLOR_EDIT 编辑框.CTLCOLOR_LISTBOX 列表控件.CTLCO

【转】VS2010/MFC编程入门之二十(常用控件:静态文本框)

本文转自鸡啄米:http://www.jizhuomi.com/software/177.html 感 谢鸡啄米对本文的贡献. 上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始鸡啄米将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控件.列表控件.树形控件和进度条控件等等.本节教程先来讲解静态文本框的使用. 控件的通知消息 在将静态文本框的使用之前,先大概讲讲控件的通知消息. 当控件有事件发

【MFC】MFC改变对话框中静态文本的字体大小

MFC改变对话框中静态文本的字体大小 2010/08/09 11:30 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体.对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了. 例子: 1.改静态文体的ID,如:IDC_STATIC1 2.添加一个Edit控件,建立一个关联的控件m_editControl. 3.在OnInitDialog中添加如下代码: CFont * f; f = new CFont; f->Creat

MFC静态文本框

1.简述 静态文本框(Static Text):静态文本框是最简单的控件,它主要用来显示文本信息,不能接受用户输入,一般不需要连接变量,也不需要处理消息. 2.Functions 2.1 void CWnd::SetWindowText( LPCTSTR lpszString ) void CStaticDialogDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 m_stext.SetWindowTextW(TEXT("Hello"

VS2010-MFC(常用控件:静态文本框)

转自:http://www.jizhuomi.com/software/179.html 关于对话框的使用和各种通用对话框的介绍就到此为止,从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控件.列表控件.树形控件和进度条控件等等.本节教程先来讲解静态文本框的使用. 控件的通知消息 在将静态文本框的使用之前,先大概讲讲控件的通知消息. 当控件有事件发生时,它会向父窗口发送通知消息.最常发生的事件就是鼠标单击了,此时控件会向父窗

静态文本框字体,颜色。网络通信软件分析。

设置静态文本框控件的背景色,文本框中字体.颜色: HBRUSH CUDPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (pWnd->GetDlgCtrlID()==IDC_STATIC_TITLE) { //设置绘图dc的背

Windows static控件(静态文本框控件)

文本不克不及主动换行,超越窗口规模会被隐蔽: 每次更改文本都要先擦除配景再从新输入,比拟费事. 实践开辟中普通运用静态文本框控件来输入文本.静态文本框是Windows 的一种规范控件,可以用来在窗口上显示一段文本,而且文本轻易遭到掌握.除了静态文本框,Windows的规范控件还有许多种,例如按钮.下拉菜单.单选按钮.复选框等.其实,控件也是一种窗口,也运用 CreateWindow 函数来创立.然则它们运用的窗口类的名字比拟特别,是由Windows预界说的:静态文本框控件的窗口类名是static