MFC-UI
文章平均质量分 55
luckyone906
这个作者很懒,什么都没留下…
展开
-
c++中MFC消息机制,UI线程和工作线程,模式对话框原理
c++原创 2022-10-13 19:48:09 · 1706 阅读 · 0 评论 -
MFC-创建模态对话框和非模态对话框的方法
在MFC中对话框有两种形式,一个是模态对话框(modeldialog box),一个是非模态对话框(modeless dialog box)。本文对此分别简述其创建方法。一、模态对话框(model dialog box)在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁。创建一个模态对话框的代码如下所示: //创建一个模态对话框 CTestDialog td; td.D.原创 2022-01-15 18:48:58 · 4741 阅读 · 0 评论 -
MFC中添加的ID资源号提示找不到声名问题
1.查看resource.h资源文件,基本上都是因为某些界面上的修改等原因造成了里面部分定义ID号值重复了才报的错,所以要在resource.h文件中手动修改成不一样的id值。原创 2022-01-15 18:40:32 · 335 阅读 · 0 评论 -
MFC-使用自定义控件的方法
1.在资源编辑中设计好界面。2.右键界面在类向导里创建类型后自动生成界面的.h和.cpp文件3.在使用该界面类型的类中创建该成员变量。4.Create创建注册窗体UICRect crect; GetClientRect(&crect); FontDiscernDialog* fd = new FontDiscernDialog(); if (fd->m_hWnd == NULL) { fd->Create(IDD_FORMV...原创 2022-01-15 16:57:56 · 2141 阅读 · 0 评论 -
MFC-Tab Control控件使用
在MFC当中使用Tab Control控件切换不同的界面,使用起来会复杂一些,至少是比Qt中的Tab Widget复杂得多。我接下来会以一个MFC对话框应用程序为例子,说明Tab Control控件的简单使用方法。1.1建立一个MFC对话框应用程序,在对话框中拖入Tab Control控件,效果如下:1.2在对话框类中,声明一个CTabCtrl变量:CTabCtrl m_tab;变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_转载 2022-01-15 13:59:44 · 2210 阅读 · 0 评论 -
MFC关于JPG图片显示处理的几个方式
做远程视频监控项目,接触较多图片处理方面问题,作为学习做以下记录:一、截图默认bmp格式转jpg压缩。采用jpglib库去实现。二、jpg图片接收后MFC显示(四种方式)MFC提供的CWnd只有默认加载BMP文件的接口,对JPG等图像是不支持的,而实际中经常需要用到非BMP的图片,在VC中加载.JPG格式的图片,有四种方法。第一种:用流对象加载。IPicture*m_pi...原创 2020-02-19 19:07:23 · 1852 阅读 · 0 评论 -
MFC显示JPG,bmp图片
主要代码如下://************************************// 方法说明: 显示JPG和GIF、BMP图片// 参数说明: CDC * pDC 设备环境对象// 参数说明: CString strPath 要显示的图片路径// 参数说明: int x 要显示的X位置...原创 2020-02-19 19:03:45 · 330 阅读 · 0 评论 -
浅谈MFC中BitBlt与StretchDIBits的区别
一、基础知识1.BitBltBitBlt 用于从原设备中复制位图到目标设备,语法格式如下:BOOL BitBlt(HDC hdcDest, // handle to destination DCint nXDest, // 目标矩形区域的左上角x轴坐标点。int nYDest, // 目标矩形区域的左上角y轴坐标点。int nWidth, // 在目标设备中绘制位图的宽度...转载 2019-07-21 18:18:01 · 624 阅读 · 0 评论 -
关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
OK,在上一篇文章中我提到了VC6和VS的差别,在VC6中我们只能依赖于CBITMAP HBITMAP以及BITMAP之间的转化关系,而在VS中,我们用CIMAGE类就可以全部搞定,那么究竟这三个类之间的转化关系是什么样的呢?图像显示的时候该怎么使用呢,别着急,听我慢慢道来。一、区分概念:首先:BITMAP是C++中定义的位图结构体HBITMAP是Windows中使用的位图句柄CB...转载 2019-07-24 06:57:40 · 1688 阅读 · 0 评论 -
CDC中图片绘制到控件上
CDC中////////////////////////////////////////////////////CDC->StretchBlt(int x,int y,int nWidth,int nHeight,CDC *pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight,DWORD dwRop)/////////...转载 2019-07-24 06:57:17 · 1158 阅读 · 0 评论 -
内存中绘图 Memdc
内存中绘图 MemdcCDC MemDC; //首先定义一个显示设备对象,所有的绘制首先绘制到这块内存中CBitmap MemBitmap; //定义一个位图对象//随后建立与屏幕显示兼容的内存显示设备MemDC.CreateCompatibleDC(NULL);MemDC.SetStretchBltMode(HALFTONE);//这时还不能绘图,因为没有地方画...转载 2019-07-25 18:10:01 · 1016 阅读 · 0 评论 -
MFC中动态创建button及添加响应事件
MFC中动态创建button及添加响应的事件,主要步骤如下:1、在头文件(**Dlg.h)中添加一个CButton类型,例如:CButton btn;2、在(**Dlg.cpp)的OnInitDialog中创建并显示button:btn.Create(“按钮”, WS_CHILD | BS_DEFPUSHBUTTON, CRect(10, 10, 100, 100), this, ...转载 2019-05-24 17:05:08 · 3428 阅读 · 0 评论 -
MFC动态按钮的创建及其消息响应 和 自定义消息
原文链接:http://www.cnblogs.com/gaohongchen01/p/4046525.html动态按钮(多个)的创建:1、在类中声明并定义按钮控件的ID#define IDC_D_BTN 100002、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针)3、手动释放对象指针下面是动态生成多个按钮的例子:CBut...转载 2019-05-24 16:22:29 · 961 阅读 · 0 评论 -
MFC的GDI绘制坐标问题
MoveWindow和CDC的位置不一样,MoveWindow:起点坐标,宽,高, CDC:起点坐标,终点坐标原创 2019-07-27 13:59:49 · 506 阅读 · 0 评论 -
MFC改变对话框背景图片实例
// TODO: 在此添加消息处理程序代码和/或调用默认值 CPaintDC dc(this); // device context for painting CRect rect; GetClientRect(&rect); //获取对话框长宽 CDC dcBmp; //定义并创建一个内存设备环境 ...转载 2019-07-21 15:41:05 · 500 阅读 · 0 评论 -
mfc中主窗体显示(任务栏上方显示)
intsx=GetSystemMetrics(SM_CXSCREEN);//获得屏幕的大小-宽intsy=GetSystemMetrics(SM_CYSCREEN);//获得高intst=GetSystemMetrics(SM_CYSIZE);//获得任务栏的高度MoveWindow(0,0,sx,sy-st);//移动窗口CRectrc;SystemPar...转载 2019-07-21 14:45:56 · 578 阅读 · 0 评论 -
MFC中OnCtlColor的用法(改变控件颜色)
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); return hbr; // TODO: 在此更改 DC 的任何特性 CBrush newB...原创 2019-07-21 14:31:53 · 4178 阅读 · 0 评论 -
MFC设置主界面背景图片、设置子窗体背景图片
//在Onpaint函数中加入如下代码 //----------给窗口设置背景图片---------------------------- CPaintDC dc(this); CRect myrect; GetClientRect(&myrect); CDC dcMem; ...转载 2019-05-29 15:52:54 · 3255 阅读 · 0 评论 -
MFC笔记2(控件位置调整)
1.根据计算,使用GetClientRect(& ...)就可以调整好2.遇到了OK和Cancel按钮通过GetDlgItem(ID..)找不到id资源号的情况,最后通过给控件绑定控件变量到类中就可以用了,而不需通过ID获取控件对象,但是可能有些对控件的操作在还没有初始化完成就开始,得判断绑定了的成员是否还没有创建好窗口句柄(控件->M_Hwnd)3.添加消息相应函数,OnS...原创 2019-06-01 09:24:59 · 859 阅读 · 0 评论 -
如何修改MFC的图标
更改IDR_MainFrm指向的ico文件, 该图标有两种格式,32×32和16×16,这两种格式都要改,还可以在主框架的OnCreate函数里指定使用哪个图标:HICON m_hIcon;在MainFrm的OnCreate()里m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);SetIcon(m_hIcon, TRUE); // Set...转载 2019-06-01 09:23:45 · 7867 阅读 · 1 评论 -
更改MFC生成的程序的默认exe图标
一般更改打开程序时的左上角的程序图标使用如下方法: 对话框为例,在对话框构造函数中m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON3);将最后的IDR_MAINFRAME改为自己的图标即可,上面改为了IDI_ICON3,更改的图标需要先导入或者添加进资源icon里,文档结构的应该类似,就是找到loadicon函数,将默认的mfc图标换成自己的。...转载 2019-06-25 15:25:32 · 752 阅读 · 0 评论 -
MFC 窗体样式修改
窗体创建之后,如何设置窗体的样式呢?一般情况下使用GetWindowLongW与SetWindowLongW即可实现窗体样式的修改或者使用ModifyStyle。关于MFC存在GetWindowLongW和GetWindowLongA使用哪一个,可以通过 IsWindowUnicode(this->m_hWnd)获取是使用哪一类型,true则使用GetWindowLongW反之使用G...转载 2019-06-24 19:26:21 · 1746 阅读 · 1 评论 -
MFC窗口风格 WS_style/WS_EX_style
窗口风格(Window style)WS_BORDER有边框窗口WS_CAPTION必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。WS_CHILD说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。WS_CHILDWINDOW同WS_CHILD。WS_CLIPCHILDREN绘制父...转载 2019-06-24 19:16:11 · 883 阅读 · 0 评论 -
MFC中将CBitmap画到cdc上
//取Picture矩形和它的DCCRectrect;CWnd*pWnd=GetDlgItem(IDC_PICTURE_LINK);pWnd->GetClientRect(rect);CDC*pDC=pWnd->GetDC();//创建内存DCCDCmemDC;memDC.CreateCompatibleDC(NULL);...原创 2019-07-21 11:42:44 · 684 阅读 · 0 评论 -
MFC中获取任务栏大小
MFC怎么获得当前屏幕大小你可以这样HWND hwnd=GetDesktopWindow();RECT rect;GetClientRect(hwnd,&rect);//可以得到桌面大小还有就是上面所说的int nScreenWidth, nScreenHeight;nScreenWidth = GetSystemMetrics(SM_CXSCREEN);nScreenH...转载 2019-07-21 14:08:35 · 1134 阅读 · 0 评论 -
VS2010 MFC中控件、对话框等背景颜色动态修改的方法
通过类向导,或者手动添加消息:WM_CTLCOLOR,其消息响应函数为:afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)1 2在每个控件开始绘制之前,都会向其父窗口发送WM_CTLCOLOR通告消息,在该消息的处理函数中,可以设置控件显示文本的前景色、背景色以及字体。该消息处理函数还要求返回一个画刷的句柄...转载 2019-06-03 09:55:42 · 1141 阅读 · 0 评论 -
MFC对话框中处理Enter或Esc按键事件方法
建立好的MFC的对话框,按下Enter或Esc时,系统会调用”默认“事件处理函数,也就是OnOK(),倘若自己的CFormView子类或者CDialog子类没有重写OnOK()函数,则会调用父类的OnOK,其结果是关闭界面。要屏蔽Enter键或Esc退出的功能,只需要将在CDialog中重写ONOK()函数即可。而要实现默认为“确定”功能,下面两种方法供参考:1.采用ClassWizard进...转载 2019-06-02 07:50:43 · 1427 阅读 · 0 评论 -
MFC控件随窗口大小变化原理及实现
本文主要针对MFC的dialog,实现控件随窗口大小变化。原理:首先获取dialog的初始大小,当窗口发送变动时,调用OnSize事件和方法,计算缩放比例,然后对界面中的所有控件进行缩放和布局。实现:创建一个CMFCDemoDlg的dialog对话框;// CMFCDemoDlg 对话框class CMFCDemoDlg : public CDialogEx{// 构造...转载 2019-06-01 09:24:27 · 1209 阅读 · 1 评论 -
mfc控件位置调整和坐标确定 .
在mfc工程中控件或者窗口位置的调整是经常遇到的,特别是基于对话框的工程。位置的调整包括坐标、长度和宽度的变化,一般在窗口类的OnSize函数中实现。控件位置的调整涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),功能意义如下:GetWindowRect():获得窗口在屏...转载 2019-06-01 09:24:11 · 5042 阅读 · 0 评论 -
MFC改变控件位置和大小
最近经常要用到改变控件在对话框上的位置和大小,一直找不到有效的方法,查看了很多资料。这篇博文还算靠谱,转载到这里了。 void CmyqeDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if(nType!=SIZE_MINIMIZED) ...转载 2019-06-01 09:24:01 · 2865 阅读 · 0 评论 -
MFC——在视图窗口加载背景图片
1.若是文档视图程序的话,在视图类的OnDraw(CDC* pDC)函数中调用pDC->TextOut()函数,就像平常输出文字一样。若是嫌文字的背景颜色破坏了图像,可以在输出文字之前调用pDC->SetBkMode(TRANSPARENT);2.若是在对话框应用程序中,就在对话框类的OnPaint()函数中创建一个局部对象CPaintDC dc(this);然后dc.TextOut...转载 2019-05-29 16:25:25 · 1637 阅读 · 1 评论