文档视界 最新最全的文档下载
当前位置:文档视界 › 完整版MFC中picture控件显示图片

完整版MFC中picture控件显示图片

完整版MFC中picture控件显示图片
完整版MFC中picture控件显示图片

PictureBox控件的主要作用是为用户显示图片。实际显示图片由Picture属性决定。Picture属性

包括被显示的图片的文件名(及可选的路径名)。注意窗体对象也具有Picture属性,通过设置该属性

可直接在窗体背景上显示图片。

要在运行时显示或替换图片,可利用函数LoadPicture 来设置Picture属性。提供图片文件名和可

选路径名,由LoadPicture 函数处理加载和显示图片的细节。

picMai n.Picture = LoadPicture("VANGOGH.BMP")

PictureBox 控件具有AutoSize 属性,当该属性设置为True时,PictureBox 能自动调整大小与显

示的图片匹配。如果要用AutoSize属性设置为True的PictureBox ,设计窗体时就需要特别小心。图

片将不考虑窗体上的其它控件而调整大小,这可能导致意想不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这种现象发生。

vc picture 控件的分类进行拉总结,

(一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID)

(二) 动态载入图片(即只需要在程序中指定图片的路径即可载入)

为方便说明,我们已经建好一个基于对话框的工程,名为Ttest.

对话框类为CTestDlg (一)vc picture 控件非动态载入图片?

方法1.先从最简单的开始,用picture 控件来实现?

步骤:

先在资源里Import 一张图片,ID为IDB_BITMAP2然后在对话框上添加一个picture 控件,右键点击打开

属性,将type下拉框选择BITMAP,紧跟着Image下面就出现一个下拉框,拉开就会看到所有已经载入好的图

片,选择你要的图片.运行程序即可看到.

方法2vc picture 控件.通过背景图同样如上,先载入一张图片,ID为IDB_BITMAP2

TestDlg.h 中

CBrush m_brBk;〃在public 中定义TestDlg.cpp 中

在初始化函数OnlnitDialog() 中加入:

BOOL CTestDlg::O nlni tDialog() {

CDialog::O nlni tDialog();

CBitmap bmp;

bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject();

return TRUE; // return TRUE uni ess you set the focus to a con trol }

在打开类向导,找到WM_CTLCOLORS、,重载得对应函数OnCtlColor(),添加如下:

HBRUSH CTestDlg::O nCtlColor(CDC* pDC,CWnd* pWnd,UINT n CtlColor) {

HBRUSH hbr = CDialog::O nCtlColor(pDC,pWnd,n CtlColor);

if (pWnd == this)

{

return m_brBk;

}

return hbr;

}

(二)vc picture 控件动态载入图片?

方法3图像控件(本例用KoDak图像编辑控件)

1. 首先应该保证系统中有这个控件。注意,它不能单独使用,必须和其他几个控件(特别是Imgcmn.dll ) 一同使用。如果没有,从别的机器上copy过来即可。这几个文件是Imgadmin.ocx , Imgcmn.dll ,lmgedit.ocx ,

Imgscan.ocx ,Imgshl.dll ,Imgthumb.ocx,Imgutil.dll ,把它们copy 至U windows/system 目录下,然后用regsvr32.exe 将它们分别注册。

2. 打开工程,进入资源管理器,在对话框上单击右键,单击Insert Activex control…选择Kodak图象编

辑控件,大小任意。

3. 在对话框上选中该控件,为其添加变量:m_ctrlPicture 。。

4. 在BOOL CTestDlg::OnlnitDialog() 添加如下:

BOOL CTestDlg::O nlni tDialog()

{

CDialog::O nlni tDialog();

m_ctrlPicture.Setlmage("aa.jpg"); // 保证图像在工程目录下,也可以写绝对路径

m_ctrlPicture.Display();

return TRUE; // return TRUE uni ess you set the focus to a con trol

// EXCEPTION: OCX Property Pages should return FALSE

}

编译运行就OK了,此种方法的好处就是可能针对多种图像格式.

方法 4 vc picture 控件通过CBitmap,HBITMAP,直接用On Pa in t()绘制

首先在CTestDlg类中声明一个变量:CBitmap m_bmp;

然后我们在对话框中加入一个picture 标签,名为IDC_STATIC1

然后:

BOOL CDisplayPic::O nlni tDialog()

{

CDialog::O nlni tDialog();

if( m_bmp.m_hObject != NULL )// 判断

m_bmp.DeleteObject();

///////// 载入图片

HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGet In sta nceHa ndle(),

"c://aaa.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);

if( hbmp == NULL )

return FALSE;

/////////////////////// 该断程序用来取得加载的BMP的信息////////////////////////

m_bmp.Attach( hbmp );

DIBSECTION ds;

BITMAPINFOHEADER & bmi nfo = ds.dsBmih;

m_bmp.GetObject( sizeof(ds), &ds );

int cx=bmi nfo.biWidth; // 得到图像宽度

int cy=bmi nfo.biHeight; // 得到图像高度

/////////////////// ////////////////////////////////

///////////// 得到了图像的宽度和高度后,我们就可以对图像大小进行适应,即调整控件的大小,让它正好显示一张图片///////////////////////////

CRect rect;

GetDlgltem(IDC_STATIC1)->GetWi ndowRect(&rect);

Scree nToClie nt(&rect);

GetDlgltem(IDC_STATIC1)->MoveWi ndow(rect.left,rect.top,cx,cy,true);〃调整大小

return TRUE; // return TRUE uni ess you set the focus to a con trol

// EXCEPTION: OCX Property Pages should return FALSE

}

图片加载成功了,标签大小也适应了,下面就是绘制绘制图像了,打开类向导,重载WM_PAIN消息void CDisplayPic::O nPai nt()

{

////////////// 以下三种情况任选一种会是不同效果(只能一种存在)11111111111

//CPaintDC dc(this); // 若用此句,得到的是对话框的DC,图片将被绘制在对话框上.

CPaintDC dc(GetDlgItem(IDC_STATIC1)); // 用此句,得到picture 控件的DC,图像将被绘制在控件上// CDC dc;

// dc.m_hDC=::GetDC(NULL); // 若用此两句,得到的是屏幕的DC,图片将被绘制在屏幕上

///////////////////////////////////////////////////////

CRect rcclie nt;

GetDlgItem(IDC_STATIC1)->GetClie ntRect(&rcclie nt);

CDC memdc;

memdc.CreateCompatibleDC( &dc);

CBitmap bitmap;

bitmap.CreateCompatibleBitmap( &dc, rcclie nt.Width(), rcclie nt.Height());

memdc.SelectObject( &bitmap );

CWnd::DefWi ndowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);

CDC maskdc;

maskdc.CreateCompatibleDC(&dc);

CBitmap maskbitmap;

maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);

maskdc.SelectObject( &maskbitmap );

maskdc.BitBlt( 0, 0, rcclient.Width(), rcclient.Height(), &memdc,

rcclient.left, rcclient.top, SRCCOPY);

CBrush brush;

brush.CreatePatter nBrush(&m_bmp);

dc.FillRect(rcclie nt, & brush);

dc.BitBlt(rcclie nt.left, rcclie nt.top, rcclie nt.Width(), rcclie nt.Height(),

&memdc, rcclient.left, rcclient.top,SRCPAINT);

brush.DeleteObject();

// Do not call CDialog::O nPain t() for pain ti ng messages

}

基于MFC控件STATIC显示图片数据

1. 在OnlnitDialog 中加入GetDlgltem(IDC_MY_PIC)->ModifyStyle ( SS_TYPEMASK, SS_OWNERDRAW );

2. 在butto按钮中加入以下,可以显示多中类型的图片资源

void CDlgpicDlg::O nTest()

{

// TODO: Add your comma nd han dler code here

CFileDialog fileDlg(TRUE,NULL,NULL,

OFN_ALLOWMULTISELECT,

_T("Picture Files (*.bmp *.ico *.jpg)|*bmp;*.ico;*jpg|All Files (*.*)|*.*『),

AfxGetMai nWnd());

CStri ng pathName;

if(fileDlg.DoModal ()==IDOK)

{

POSITION mPos=fileDlg.GetStartPositio n();

while(mPos!=NULL)

{

pathName=fileDlg.GetNextPathName(mPos);

if(m_pict.LoadPicture(pathName.GetBuffer(pathName.GetLe ngth())))

{

//防止有透明图片,消除已有的图片信息

CPaintDC dc(this); // device con text for painting

CRect rc;

GetDlgltem(IDC_MY_PIC)->GetWi ndowRect(&rc);

dc.FillSolidRect(rc, RGB(0, 0, 0));

In validate();

}

}

}

}

3. 给父窗口增加ON_WM_DRAWIT消息映射函数在OnDrawItem(int nlDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 消息映射函数里面绘制控件

void CDIgpicDlg::O nDrawltem(i nt nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)

{

// TODO: Add your message han dler code here an d/or call default

if(n IDCtl == IDC_MY_PIC)

{

if ( m_pict.m_pic)

{

RECT rect;

TRACE("--hell-- test---");

HWND hwnd = ::GetDlgltem(this->GetSafeHw nd(), IDC_MY_PIC);

HDC hDC = ::GetDC(::GetDlgItem(this->GetSafeHw nd(),IDC_MY_PIC));

//Get the DC for the CPicture Box

::GetClie ntRect(::GetDlgltem(this->GetSafeHw nd(), IDC_MY_PIC), & rect);

//Get dime nsions of it

m_pict.DrawPicture(hDC, 0, 0, rect.right - rect.left ,rect.bottom - rect.top );

::ReleaseDC(::GetDlgItem(this->GetSafeHw nd(),IDC_MY_PIC), hDC);

}

}

CDialog::O nDrawltem( nIDCtl, lpDrawItemStruct);

}

总结:如果在static 中需要显示图片,在ONPAINT中绘画没有效果,需要这么画:

1) 给static 控件增加SS_OWNERDR属W性GetDlgItem(IDC_MY_PIC)->ModifyStyle ( SS_TYPEMASK, SS_OWNERDRAW );

2) 给父窗口增加ON_WM_DRAWIT消息映射函数

3) 在OnDrawltem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 消息映射函数里面绘制控件

例如:下面给对话框里的IDC_STATIC_DRA\控件画个蓝色的背景

void CMyDlg::O nDrawltem(i nt nlDCtl, LPDRAWITEMSTRUCT IpDrawltemStruct)

{

if(n IDCtl == IDC_STATIC_DRAW)

{

CDC *pDC = CDC::FromHa ndle(lpDrawltemStruct->hDC);

pDC->FillSolidRect(10, 10, lpDrawltemStruct->rcltem.right - 20, lpDrawltemStruct->rcltem.bottom - 20, RGB(0, 0, 255));

return;

}

CDialog::O nDrawltem( nlDCtl, IpDrawltemStruct);

}

另外,还可以这么画,从CStatic继承一个新类,然后增加WM_PAIN消息处理,在On Pa int里面画。例如:class CMyStatic : public CStatic

{

afx_msg void OnPain t();

};

void CMyStatic::O nPai nt()

{

CPaintDC dc(this); // device con text for painting

CRect rc;

GetClie ntRect(rc);

dc.FillSolidRect(rc, RGB(0, 0, 255));

}

mfc载入图片

我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) 非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性, 将type下拉框选择BITMAP,紧跟着下面就出现一个

Image下拉框, 拉开就会看到所有已经载入好的图片, 选择你要的图片.运行程序即可看到. 方法2.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject(); . . . return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

MFC用户界面设计

MFC用户界面设计 (2007-07-03 14:08:02) 转载 MFC用户界面设计一 (创建一个MFC工程的框架) 打开VC++6.0选择New,出现如下界面: 然后选中MFC AppWizard[exe] ,即我们将创建一个MFC的可执行文件,然后在Project Name下面的框中写入这个工程的名字,注意: 工程的名字不要是中文的,且不要太过于长(到底多长是长我也不知道),最好使用英语的单词来定义你所要实现的工程项目的名字。 Location你可以自定义你的创建的这个工程的存放地方。个人建议不要存放在C盘。以防病毒感染之后C盘打不开,你的工作就全没有了。并且最好建一个专用的C++工程的存放文件夹。不推荐使用中文文件夹和存储路路径较长的文件

夹。如:D:\xx\xxx\xxx\xxx\xxx\xxx\xxxx\xxxxxxx\xxx(这样至少自己找的时候都要烦死了)。 Platform只有选择Win32了。在完成了这些之后就可以点击OK了。已开始创建的6小步中的第一步。如下图所示。 可以看见。上面的标题栏显示的是 MFC AppWizard Step 1,这一步是规划一个MFC程序框架的最重要的一部,我们可以选择 1:Single Document(单文档)即创建的程序能在某个时间内装入和编辑一个文档,使用了所有四个基类(C WinApp CFrameWnd CDocument Cview,至于四个基类都是什么作用参考第二章中所述)。典型的对话框应用程序包括配置硬件设备的应用程序、屏幕保护程序和游戏程序等。 2:Multiple Documents (多文档)一次可以装载和编辑多个文档,并且不但使用了所有四个基类,还使用了CFrameWnd的两个派生类,即CMDIFrameWnd和CMDIChildWnd。

mfc中插入背景图片

1、添加背景图片到“Bitmap”资源里。方法为“插入——资源”,如果还没有Bitmap,则新建一个Bitmap,否则选择资源 类型为“Bitmap”后“引入”想要插入的背景图片,我加入的背景图片如图1,加入过程如图2。 图1

图2 说明:引入的图片可以插入256色、16位色或更高色的图片,若是其他格式图片可用PS打开再另存为BMP、24位windows格式就可 以了。提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以了,没有影响的。 2、定位到void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: else { //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect;

GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP); //IDB_BITMAP是你自己的图对应的ID ,由于我刚刚加入的位图资源 //被我命名成了IDB_Bg,因而我这句就是bmpBackground.LoadBitmap(IDB_Bg); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); } 3、编译运行结果如图3。

几种视频文件的插入方法

几种视频文件的插入方法: 一、avi、asf、asx、mlv、mpg、wmv等视频文件的插入方法: 1、使用PoerPoint“插入”菜单中的“插入影片”命令法方法简单常用,在这里不再赘述; 2、使用PoerPoint“插入”菜单中的“插入对象”命令法; 3、使用插入控件法 使用这种方法必须保证系统中安装有Windows MediaPlayer或者RealPlayer播放器,首先将视频文件作为一个控件插入到幻灯片中,然后通过修改控件属性,达到播放视频的目的。 步骤如下: (1)运行PowerPoint程序,打开需要插入视频文件的幻灯片; (2)打开“视图”菜单,通过“工具栏”子项调出“控件工具箱”面板,从中选择“其他控件” 按钮单击; (3)在打开的控件选项界面中,选择“Windows Media Player”选项,再将鼠标移动到PowerPoint的幻灯片编辑区域中,画出一个合适大小的矩形区域,这个矩形区域会自动转变 为Windows Media Player播放器的界面; (4)用鼠标选中该播放界面,然后单击鼠标右键,从弹出的快捷菜单中选择“属性”命令, 打开该媒体播放界面的“属性”窗口; (5)在“属性”窗口中,在“URL”设置项处正确输入需要插入到幻灯片中视频文件的详细路径(绝对路径和相对路径都可以)和完整文件名,其他选项默认即可; (6)在幻灯片播放时,可以通过媒体播放器中的“播放”、“停止”、“暂停”和“调节音量” 以及“进度条”等按钮对视频进行自如的控制。 二、rm、ra、rmvb等视频文件的插入方法 使用Windows Media Player控件可以实现mpg、asf、avi、wmv等视频文件的播放,但它不支持RM视频文件的播放,那么如何在PowerPoint中实现RM视频文件的播放呢? 如果通过其他的视频转换软件把RM视频文件转换成A VI或MPG格式的文件再插入,速度慢且转换后的文件体积也大,我们同样可以通过利用PowerPoint中的“控件工具箱”来插 入RM格式的视频文件,方法如下: 1、打开PowerPoint幻灯片文件,打开需要插入视频文件的幻灯片;

mfc界面图书管理系统

目录 1.设计目的 (1) 2.问题描述 (2) 3.需求分析 (2) 3.1 数据需求 (2) 3.2 基本功能需求 (2) 3.3 非功能性需求 (3) 4.概要设计 (3) 5.详细设计 (5) 5.4.1增加书籍 (20) 5.4.2 删除书籍 (21) 5.4.3 查询书籍 (21) 6.调试分析 (22) 7.使用说明 (23) 8.设计总结 (26) 9.参考文献 (27)

《数据结构》课程设计 图书管理 1.设计目的 “数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。对于从事计算机科学及其应用的科技工作者来说,数据结构与算法是必须透彻地掌握的重要基础。 学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。课程设计是加强学生实践能力的一个强有力手段。课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编写中小型软件的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。 课程设计要求学生在完成程序设计的同时能够撰写比较规范的设计报告。严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

2.问题描述 采用Visual C++编程语言开发工具和MFC,设计并实现图书管理系统。该系统实现了图书管理中的添加,查询,删除,全部查询,退出等功能,以及汇总图书清单,包括对书籍各项信息的汇总。 3.需求分析 3.1 数据需求 图书信息:书名,所属类型,作者,定价,出版日期以及ISBN。 3.2 基本功能需求 1.汇总图书清单,包括对书籍各项信息的汇总;(各项信息包括书名,所属类型,作者,定价,出版日期以及ISBN。) 2.对书籍信息的增、删、查、全部查询等功能。其中删除功能主要依靠第一无二的ISBN,查询功能可以依靠任何一种图书信息(即书名,所属类型,作者,定价,出版日期以及ISBN任意一种)。

MFC背景图片修改

MFC添加背景图片方法 此文系转载,忘了博客地址了 VC++中如何给对话框加背景图片(2010-03-22 16:57:59) 方法一: 1、声明成员变量CBrush m_brush; 2、在InitDialog中添加代码: CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP1是图片资源ID m_brush.CreatePatternBrush(&bmp); 3、重载对话框的OnCtlColor,改最后的返回值: 1 return (HBRUSH)m_brush; 方法二: 把下面这段代码加进OnPaint()里就行了 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小

dc.SelectObject(pOldBrush); 方法三:使用StretchBlt()函数,具有图像自适应窗体功能 CPaintDC dc(this); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小 dc.SelectObject(pOldBrush);

MFC 在对话框显示图片的多种方法

MFC 在对话框显示图片的多种方法 我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) 非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性, 将type下拉框选择BITMAP,紧跟着下面就出现一个

Image下拉框, 拉开就会看到所有已经载入好的图片, 选择你要的图片.运行程序即可看到. 方法2.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp);

bmp.DeleteObject(); . . . return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

监控系统安装流程(视频监控安装教程)

监控安装指导与注意事项 A、线路安装与选材 1、电源线:要选“阻燃”电缆,皮结实,在省成本前提下,尽量用粗点的,以减少电源的衰减。 2、视频线:SYV75-3线传输在300米内,75-5线传输500米内,75-7的线可传输800米;超过500米距离,就要考虑采用“光缆”。另外,要注意“同轴电缆”的质量。 3、控制线:一般选用“带屏蔽”2*1.0的线缆,RVVP2*1.0。 4、穿线管:一般用“PVC管”即可,要“埋地、防爆”的工程,要选“镀锌”钢管。 B、控制设备安装 1、控制台与机柜:安装应平稳牢固,高度适当,便于操作维护。机柜架的背面、侧面,离墙距离,考虑到便于维修。 2、控制显示设备:安装应便于操作、牢靠,监视器应避免“外来光”直射,设备应有“通风散热”措施。 3、设置线槽线孔:机柜内所有线缆,依位置,设备电缆槽和进线孔,捆扎整齐、编号、标志。

4、设备散热通风:控制设备的工作环境,要在空调室内,并要清洁,设备间要留的空间,可加装风扇通风。 5、检测对地电压:监控室内,电源的火线、零线、地线,按照规范连接。检测量各设备“外壳”和“视频电缆”对地电压,电压越高,越易造成“摄像机”的损坏,避免“带电拔插”视频线。 C、摄像机的安装 1、监控安装高度:室内摄像机的安装高度以2.5~5米,为宜,室外以3.5~10米为宜;电梯内安装在其顶部。 2. 防雷绝缘:强电磁干扰下,摄像机安装,应与地绝缘;室外安装,要采取防雷措施。 3、选好BNC:BNC头非常关键,差的BNC头,会让你生不如死,一点都不夸张。 4、红外高度:红外线灯安装高度,不超过4米,上下俯角20度为佳,太高或太过,会使反射率低。 5、红外注意:红外灯避免直射光源、避免照射“全黑物、空旷处、水”等,容易吸收红外光,使红外效果大大减弱。 6、云台安装:要牢固,转动时无晃动,检查“云台的转动范围”,是否正常,解码器安装在云台附近。

MFC设置窗体背景图片(画刷)

MFC设置窗体背景图片(画刷) 先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中: CBrush m_brBk;//在public中定义 TestDlg.cpp中: 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 再打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(), 添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; } 按照上面的方法一路COPY下来运行,OK!并且由于图片是做为背景显示的,所以再添的按钮都能很好的显示出来,非常方便。 总结一下其中出现的变量和函数。 CBrush:类CBrush封装了Windows图形设备接口(GDI)中的画刷,画刷也就是采取什么方案填充图形的背景的工具。 OnInitDialog ( ):用于对对话框类的变量的初始化(注意:是在产生对话框之前就初始化),是WM_INITDIALOG消息产生的消息处理函数,覆盖该函数可改变对话框初始设置。 用法: virtual BOOL OnInitDialog();返回值指定对话框是否对它的一个控件设置输入焦点。如果OnInitDialog返回非零值,Windows 将输入焦点设在对话框的第一个控件上,只有在对话框明确将输入焦点设在某控件上,应用返回0。 CBitmap:类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供操纵位图的成员函数。 LoadBitmap ( ):CBitmap类的一个成员函数,从应用的可执行文件中加载一个命名的位图资源来初始化位图对象。 用法:

MFC启动画面设计

MFC启动画面设计 玩过微软的Office的人都知道,每当打开Office软件,在它初始化的那段时间里,都会出现一个画面,这个画面就是启动画面。 所谓启动画面也就是Splash Screen,你也可以说它是“炫耀画面”。它常常用以显示公司的标志和版权等信息。 目标 用一张位图来作为启动画面,在进入程序时显示。 策略 在应用程序类的I n i t I n s t a n c e ()函数中,在最早时刻创建启动窗口。启动窗口用一个位图类显示在普通窗口中。 步骤 1.创建一个启动窗口类 1)用ClassWizard创建一个从一般CWnd类(当然也可以是CFrameWnd类)派 生的普通窗口类。如图所示:

2)添加Create()成员函数到该类,在该函数中装入启动窗口中显示的位图,以及 在屏幕中央创建该窗口。 void CWzdSplash::Create(UINT nBitmapID) { m_bitmap.LoadBitmap(nBitmapID); BITMAP bitmap; m_bitmap.GetBitmap(&bitmap); int x=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2; int y=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2; CRect rect(x,y,x+bitmap.bmWidth,y+bitmap.bmHeight); CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDE R,rect,NULL,0); } 3)用ClassWizard添加一个WM_PAINT消息处理函数到该窗口类中,在这里用 BitBlt()把位图绘制到屏幕上。

MFC添加背景图片

问题 有的程序员希望在自己的应用程序中以有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。 许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用Windows API 函数来改变对话框的背景为某个位图呢? 方法 改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。 当Windows 准备改变对话框背景的颜色时,通常发送两个消息给对话框。第一个消息是WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框显示区域的任何显示。 第二个消息是WM_CTLCOLOR,发送此消息给对话框或窗口来表示Windows 需要知道对话框中控制的颜色。 在本节中,将重置对消息WM_ERASEBKGND 的处理,以便将位图绘制在窗口的背景上。另外,将重置对消息WM_CTLCOLOR 的处理,以避免对话框中的控制“剪补”位图。最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。 步骤 按照下列步骤实现一个例子程序。运行此例子程序,选择菜单Dialog 和菜单项Bitmap Background,将弹出一个对话框,显示背景位图和几个控制。 实现例子程序的具体步骤如下: 1.在Visual C++中,利用AppWizard 创建新的项目文件,并命名此项目文件为 Ld145。 2.进入资源编辑器并创建新的对话框模板。在对话框中,添加几个静态文本域和编辑域,以及几个单选按钮和列表框。对话框的实际组成并不重要,只要能够覆盖部分位图就可以了。 3.选择ClassWizard,为刚创建的对话框模板创建对话框类,新类命名为 CBitma PB kgdDlg。 4.在资源编辑器中创建新的位图。 5.进入ClassWizard,从下拉列表中选择CBitmapBkgdDlg,从对象列表中选择对象CBitmapBkgdDlg,从消息列表中选择消息WM_INITDIALOG,点击按钮Add Function,在CBitmapBkgdDlg 的方法OnInitDialog 中添加下列代码: BOOL CBitmapBkgdDlg::OnInitDialog() { CBitmap * pBmpOld; RECT rectClient; VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH)); VERIFY(m_Bitmap.LoadBitmap(IDB_BITMAP1)); m_Bitmap.GetObject(sizeof(BITMAP),&m_bmInfo);

MFC中picture控件显示图片

PictureBox控件的主要作用是为用户显示图片。实际显示图片由Picture属性决定。Picture属性包括被显示的图片的文件名(及可选的路径名)。注意窗体对象也具有Picture属性,通过设置该属性可直接在窗体背景上显示图片。 要在运行时显示或替换图片,可利用函数LoadPicture来设置Picture属性。提供图片文件名和可选路径名,由LoadPicture函数处理加载和显示图片的细节。 picMain.Picture = LoadPicture("VANGOGH.BMP") PictureBox控件具有AutoSize属性,当该属性设置为True时,PictureBox能自动调整大小与显示的图片匹配。如果要用AutoSize属性设置为True的PictureBox,设计窗体时就需要特别小心。图片将不考虑窗体上的其它控件而调整大小,这可能导致意想不到的后果,如覆盖其它控件。设计时应通过加载每一幅图片来检查是否有这种现象发生。 vc picture控件的分类进行拉总结, (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一) vc picture控件非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2,然后在对话框上添加一个picture控件,右键点击打开属性,将type下拉框选择BITMAP,紧跟着Image下面就出现一个下拉框,拉开就会看到所有已经载入好的图片,选择你要的图片.运行程序即可看到. 方法2vc picture控件.通过背景图 同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中 CBrush m_brBk;//在public中定义 TestDlg.cpp中 在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP2); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control } 在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下: HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this) { return m_brBk; } return hbr; }

MFC对话框背景---图片背景---背景色

对话框的背景 1、添加位图背景 首先在资源视图中添加bmp图片:选择项目名右击---添加—添加资源---Bitmap---导入---选择res文件中的位图(如果res文件中无位图请提前添加),此时可以知道位图ID为IDB_BITMAP1 (1)picture控件添加背景 在对话框中添加picture控件,并修改其属性,选中picture控件在属性表中修改Type为Bitmap,Image为IDB_BITMAP1。此时图片就显示在对话框中 (2)在CPP文件中初始化显示位图 添加位图后,在源文件XXXDlg.cpp的void C XXX Dlg::OnPaint()函数中添加初始化代码如下: void CbeijingDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpPri=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SR CCOPY); } }

MFC中设置对话框颜色、添加背景图片、添加音乐的方法

一、设置背景颜色的三种方法: 1、我们知道程序在运行的时候会调用OnPain函数,那么我们可以在这里设置背景颜色。void CFlipCardsDlg::OnPaint() { if (IsIconic()) { //保持不变 } else { CRect rc; GetClientRect( &rc );// 获取客户区 CPaintDC dc(this); dc.FillSolidRect(&rc, RGB(0,160,0)); // 填充客户区颜色 CDialog::OnPaint(); } } 2、第二种方法只要一条语句,但是这里要注意这里绘制的颜色是针对程序中所有的对话框(如果是单文档的话,好像不行) SetDialogBkColor(RGB(0,0,255),RGB(255,0,0)); // 前一个RGB是背景色,后一RGB是文本颜色 该函数放在工程的APP文件的初始化函数中。 3、第三种方法,利用ClassWizard重载OnCtlColor(),即WM_CTLCOLOR消息 在要着色的对话框中申明一个变量,CBRUSH m_hbrush;然后在项目的Dlg类初始化函数中给m_hbrush赋值。

m_brush.CreateSolidBrush(RGB(0, 255, 0)); 然后在OnCtlColor(...)返回该画刷就可以了,如下。 HBRUSH CFlipCardsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here switch (nCtlColor) { case CTLCOLOR_DLG: HBRUSH aBrush; aBrush = CreateSolidBrush(RGB(0, 150, 0)); hbr = aBrush; break; } // TODO: Return a different brush if the default is not desired return hbr; } 这样为对话框着色就可以实现了。 二、给MFC添加背景图图片代码: 定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码: //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect; GetClientRect(&rect);

MFC中更改背景图片

1.如果你建的是对话框应用程序,可以有以下方法改变对话框的背景色重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下: ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog { ... protected: CBrush m_brush; ... }; ---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::OnInitDialog() { ... // TODO: Add extra initialization here m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子 ... } ---- 步骤③利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息):HBRUSH CExampleDlgDlg::OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); //在这加一条是否为对话框的判断语句 if(nCtlColor ==CTLCOLOR_DLG) return m_brush; //返加绿色刷子 return hbr; } 2.如果建立的是单文档程序 CDC* pDC = GetDC(); CRect rect; GetClientRect(&rect); //加载背景位图 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); //图片ID BITMAP bmp; bitmap.GetBitmap(&bmp);

视频监控系统控件安装(从IE访问)

使用IE访问监控设备的时候,会自动从设备上下载控件并自动注册。当控件HCNetVideoActiveX.cab没有下载或注册成功的时候,则不能正常访问设备。 安装HCNetVideoActiveX.cab控件的方法如下: 1.使用IE访问前的注意事项: 降低IE的安全级别,选择IE“工具”->“Internet选项”->“安全”->“自定义级别”,将涉及到控件下载运行和脚本运行的选项都设置成“启用”和“提示”。然后再打开监控的IP地址,会自动安装控件。 2.使用IE访问的时候提示“网页上有错误”或者有“×”的显示 出现该情况,很有可能是控件没有下载成功或则有残余的控件相关内容没有删除。可参考3.清除控件的方法进行清除处理后,在设置安全级别后进行访问。 3.清除控件的方法: 1.关闭IE,进入Windows系统目录下,找到Downloaded ProgramFiles文件夹中的相关控件信息是否还在,若在,将其删除。(HCNetVideoActiveX.cab对应HCNetVideoActiveX Control,NewHCNetActiveX.cab对应NewHCNetActiveX Control) 2.进入system32文件夹下,确认是否还有残留的相关文件,若存在将其删除。如果是XP 的操作系统,还需要将Windows下LastGood文件夹中的相关文件删除。 HCNetVideoActiveX.cab的相关文件是 HCNetVideoActiveX.ocx,HCNetSDK.dll,playm4.dllShowHCRemCfgWnd.dll RemoteCfgRes_CHI.dll,RemoteCfgRes_ENG.dll,RemoteCfgRes_TRAD.dll. NewHCNetActiveX.cab的相关文件是 newocx.ocx,HCNetSDK.dll, playm4.dll,langchg.dll,ShowHCRemCfgWnd.dll,RemoteCfgRes_CHI.dll, RemoteCfgRes_ENG.dll,RemoteCfgRes_TRAD.dll. 3.在“开始”的“运行”中输入:regedit进入注册表,在“我的电脑”下的第一个文件夹“HKE_CLASSES_ROOT”下查找相关内容,如果存在,则是控件手动注册后,没有手动注销掉,需要用手动注销控件方法将其销毁。 说明:该情况一般适用于有我们提供的控件包,并使用其进行手动注册的情况。具体方法见4.手动注册的方法。 4.如果完成上述步骤后,还是无法下载控件,建议重启下电脑或换台电脑测试。IE浏览涉及到的内容较多,系统其他的插件有可能造成OCX控件下载不成功。 4.手动注册的方法:

MFC 对话框 背景图片 以及消除 字体重影 字体重叠

很多人都想改变对话框的背景图,其实很简单,只需要一个函数就可以了,不过还是有问题的,下面讲述。 只需要响应WM_ERASEBKGND消息,然后重载OnEraseBkgnd(CDC*pDC)这个函数就可以,首先我们要添加消息响应,由于该消息不能用MFC ClassWizard添加,因为ClassWizard 没有该消息添加的选项,我们需要手动添加,只需要在消息响应MAP添加一下ON_WM_ERASEBKGND(),如下所示: BEGIN_MESSAGE_MAP(CSerialTestDlg, CDialog) //{{AFX_MSG_MAP(CSerialTestDlg) ON_WM_ERASEBKGND()//添加重绘背景消息响应 //}}AFX_MSG_MAP END_MESSAGE_MAP() 我们然后进行消息响应,添加消息响应函数,然后在对话框类的声明文件添加该函数的声明virtual BOOL OnEraseBkgnd(CDC*pDC);在实现文件中进行该函数的书写,如: BOOL CSerialTestDlg::OnEraseBkgnd(CDC*pDC) { CBitmap m_bitmap; m_bitmap.LoadBitmap(IDB_DLGBK);//加载背景图片,选择你对应的图片ID CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&m_bitmap); CRect rect; GetWindowRect(&rect); ScreenToClient(&rect);//选择客户区域 BITMAP bmp; m_bitmap.GetBitmap(&bmp); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmW idth,bmp.bmHeight,SRCCOPY);//绘制BMP背景图 m_bitmap.DeleteObject(); return TRUE; } 但是这样做一般就可以,细心的人会发现字体有重叠,比如说静态文本框和EDIT控件,如果选择只读模式,作为输出,这时EDIT的背景是BMP背景图片,但是字体重叠,如下图,我这样就行消除。

C++ MFC界面读写USB HID设备数据程序

第一步:列举所有的HID设备: m_ctllHIDdevices.ResetContent(); //这是MFC里面一个list控件,用来显示所有的HID设备的,如果你没有界面,可以不需要此行 UpdateData(FALSE); //更新界面 CString temp; int Count = 0; //Total number of devices found DWORD strSize=0,requiredSize=0; BOOL result1,result2; ULONG DeviceInterfaceDetailDataSize; //定义一些变量,以后会用到 SP_DEVINFO_DA TA DeviceInfoData; SP_DEVICE_INTERFACE_DATA DeviceInterfaceData; PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData; //PSP_DEVICE_INTERFACE_DETAIL_DATA test; //第一步:获取deviceID GUID deviceId; HidD_GetHidGuid(&deviceId); //第二步:获取设备信息 HDEVINFO handle; handle = SetupDiGetClassDevs(&deviceId, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT); //Get only HID devices //第三步:对所有的设备进行枚举 //SetupDiEnumDeviceInterfaces(); result1=false; //定义一些变量 result2=false; CString temp11=""; do { DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DA TA); result1 = SetupDiEnumDeviceInterfaces( handle, NULL, // IN PSP_DEVINFO_DA TA DeviceInfoData, OPTIONAL &deviceId, Count, &DeviceInterfaceData ); //获得设备详细数据(初步) SetupDiGetDeviceInterfaceDetail(handle,

mfc背景音乐与图片的实现

MFC播放声音文件 一.播放声音文件的简单方法 在VC++ 中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中参数lpszSound是需要播放声音的.WAV文件的路径和文件名,hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。例如播放C:\sound\music.wav可以用sndPlaySound ( "c:\\sound\\music.wav ",SND_ASYNC);或PlaySound( "c:\\sound\\music.wav ",NULL, SND_ASYNC|SND_NODEFAULT );如果没有找到music.wav文件,第一种格式将播放系统默认的声音,第二种格式不会播放系统默认的声音。 二.将声音文件加入到程序中 在VC++的程序设计中,可以利用各种标准的资源,如位图,菜单,对话框等。同时VC++也允许用户自定义资源,因此我们可以将声音文件作为用户自定义资源加入程序资源文件中,经过编译连接生成EXE 文件,实现无.WAV文件的声音播放。 要实现作为资源的声音文件的播放,首先要在资源管理器中加入待播放的声音文件(实现过程并不复杂,这里不在叙述)。假设生成的声音文件资源标识符为IDR_WAVE1。在播放时只需要调用下面的语句: PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(), SND_ASYNC|SND_ RESOURCE|SND_NODEFAULT|SND_LOOP); 其中MAKEINTRESOURCE()宏将整数资源标识符转变为字符串,AfxGetResourceHandle()函数返回包含资源的模块句柄, SND_RESOURCE是必须的标志。 作为资源的声音文件的第二种播放方法是把资源读入内存后作为内存数据播放。具体步骤入下:1.获得包含资源的模块句柄: HMODULE hmod=AfxGetResourceHandle();

相关文档