MFC
SuperJun12345
这个作者很懒,什么都没留下…
展开
-
【MFC进阶】09多国语言切换
1.新建工程新建了一个对话框工程,工程名称为MultiLanguages,默认语言选择是“中文”。2.添加多国语言的资源在创建工程后,工程会添加默认的资源,如主对话框,都是“中文”资源。现在我们需要添加相应的英文的资源文件。为主窗口IDD_MULTILANGUAGES添加英文资源的方法为:(1)打开Resource View窗口。(2)右键IDD_MULTILANGUAGES,点击弹出菜单中的“Insert Copy”菜单,如下图所示。(3)弹出窗口资源复制语言选择窗口,选择语言为“英语(美国原创 2021-09-17 20:47:05 · 2939 阅读 · 2 评论 -
【MFC进阶】08媒体播放器mediaplayer
本示例创建过程如下:1.创建一个基于Dialogue的MFC工程2.打开资源中的dialogue模版,在模版上右键单击,选择 Insert ActiveX Control, 接下来在弹出的选择框中选择Windows Media Player. 这个控件就是微软提供的现成的播放器,可在属性页设置一些属性3.在播放器下面添加一个button用来打开视频文件,暂且命名为 Open file4.在cpp中添加button消息响应,加入如下代码://open the vedio file and play原创 2021-09-17 16:53:11 · 345 阅读 · 1 评论 -
【MFC进阶】07Socket
一、基于TCP协议的编程步骤服务器端1.加载套接字库(WSAStartup)2. 创建用于监听的套接字(socket),然后将其绑定到本地SOCKADDR(bind),并将其设为监听模式(listen)3. 等待客户请求的到来:一旦收到客户连接请求,返回一个对应该连接的套接字(accept)4. 利用返回的套接字与客户端进行通信(recv/send)5. 通信完毕,关闭套接字(closesocket)并终止套接字库的使用(WSACleanup)// 加载套接字库WSAData wsaData原创 2021-09-17 16:51:14 · 197 阅读 · 1 评论 -
【MFC进阶】05文件处理CFile
1.文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。CString strFileTitle;CFileFind finder;BOOL bWorking = finder.FindFile("C://windows//sysbkup//*.cab");while(bWorking) { bWorking=finder.FindNex原创 2021-09-17 16:36:39 · 224 阅读 · 0 评论 -
【MFC进阶】04画刷CBrush
MFC的CBrush类封装了画刷对象,创建画刷时,首先定义一个画刷对象,然后调用CreateSolidBrush、CreateHatchBrush或CreatePatternBrush函数。可以采用下面三种方式创建画刷。1、 创建单色画刷BOOL CreateSolidBrush( COLORREF crColor //画刷颜色);2、创建阴影画刷BOOL CreateHatchBrush( int nIndex, //阴影画刷类型 COLORREF crColor原创 2021-09-17 16:24:43 · 584 阅读 · 0 评论 -
【MFC进阶】03共享数据
做两个进程,一个进程把数据写到内存空间,一个进程从内存空间中读取数据.写数据的进程1.定义两个成员变量HANDLE m_hMapObject;//映射对象句柄LPTSTR m_pszMapView;//指向映射的地址空间2.在初始化对话框中获取一块内存空间//创建映射对象m_hMapObject = CreateFileMapping( (HANDLE)0xffffffff, //因为不是读写文件,所以不需要文件句柄 nullptr, //默认安全属性 PAGE_READWRITE原创 2021-09-17 16:21:41 · 186 阅读 · 0 评论 -
【MFC进阶】02线程
有关创建线程的问题有三种方法:1.C语言函数,调用_beginthread();2.API函数,调用CreateThread();3.MFC函数,调用AfxBeginThread();推荐使用MFC函数AfxBeginThread();利用MFC里的AfxBeginThread函数能很方便地创建线程以及对线程进行等待、唤醒等操作。1、函数原型CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc , LPVOID pParam , i原创 2021-09-17 16:06:49 · 190 阅读 · 0 评论 -
【MFC进阶】01进程
1.创建进程BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName, //进程的可执行地址,例如:c:\\program files\\tensent\\qq\\bin\\qq.exe _Inout_opt_ LPTSTR lpCommandLine, //命令行,一般填空,但是如果这里为空的话,第一个参数必须不能为空 _In_opt_ LPSECU原创 2021-09-17 15:56:29 · 120 阅读 · 0 评论 -
【MFC基础】28注册表
操作注册表的实现一般操作注册表的方法注册表内部结构:key->subkey->value->名称,类型,数据函数:RegCreateKey() RegCreateKeyEx() RegOpenKey() RegOpenKeyEx() RegSetValue() RegSetValueEx() RegQueryValue() RegQueryValueEx() RegDeleteKey() RegDeleteKeyEx() RegCloseKey()1.写注原创 2021-09-17 11:34:41 · 245 阅读 · 0 评论 -
【MFC基础】25窗口操作
MFC关于窗口的有关操作窗口让窗口一启动就最大化把应用程序类(CxxxApp)的 InitInstance() 函数中的m_pMainWnd->ShowWindow(SW_SHOW); 改为m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);则窗口一启动就最大化显示。如何设置窗口的初始尺寸在将应用程序类(CxxAPP)的 InitInstance() 函数中加入:m_pMainWnd->SetWindowPos(NULL,x,y,Wid原创 2021-09-17 11:24:36 · 362 阅读 · 0 评论 -
【MFC基础】24窗口指针
获得CWinApp-在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp-在其它类中只能用AfxGetApp()获得CMainFrame-在CMinApp中用AfxGetMainWnd()或者m_pMainWnd-在CChildFrame中可用GetParentFrame()-在其它类中用AfxGetMainWnd()获得CChildFrame-在CView中用GetParentFrame()-在CMainFrame原创 2021-09-17 11:12:32 · 299 阅读 · 0 评论 -
【MFC基础】23属性页Tab Control
属性页控件1、建立名为tabCtrl的mfc工程,添加Tab Control控件,设置属性ID为IDC_TAB,并添加变量m_tab在tabCtrlDlg.cpp文件函数BOOL CtabCtrlDlg::OnInitDialog()中添加// TODO: 在此添加额外的初始化代码m_tab.InsertItem(0,_T("第一页"));m_tab.InsertItem(1,_T("第二页"));2、在资源视图中添加两个dialog,分别设置属性ID为 IDD_PAGE1,IDD_PAGE2原创 2021-09-17 11:07:41 · 185 阅读 · 0 评论 -
【MFC基础】22发送消息
windows是消息驱动的,系统定义了很多消息,但同时它也允许我们自己定义消息。自定义消息有两种方法:(1)在WM_USER上加一个值来定义消息WM_USER(0x400)到0x7FFF都可以用来自定义消息(一般取WM_USER+100)。以MFC对话框程序为例,定义自己的消息要分以下几个步骤首先在发送端:①定义消息。在xxxDlg.cpp(xxx为发送端工程名)头部定义自己的消息WM_MY_OWN_MSG(名字随意)#define WM_MY_OWN_MSG WM_USER + 100②然后原创 2021-09-16 23:16:31 · 512 阅读 · 0 评论 -
【MFC基础】21图片控件
图片控件静态和动态加载图片1. 图片控件静态加载图片1)创建一个基于对话框的MFC工程,名称设置为“Example27”。2)准备一张Bitmap图片,名称设为“test.bmp”,放到工程的res文件夹中,res文件夹路径为…\Example27\Example27\res。3)在Resource View中的“Example27.rc*”节点上点右键,选择“Add Resource…”,弹出“Add Resource”对话框:然后在左侧的“Resource Type”中选择“Bitmap”,点原创 2021-09-16 23:05:32 · 762 阅读 · 1 评论 -
【MFC基础】20字体和颜色
1、改变对话框的底色在对话框的类中添加一个 private : CBrush m_brush;的成员变量。在类的构造函数中添加如下代码:m_brush.CreateSolidBrush(RGB(0,0,255)); //初始化为蓝色为对话框添加一个WM_CTLCOLOR消息响应函数,专门为控件着色的消息响应函数,代码如下:HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr =原创 2021-09-16 22:59:40 · 282 阅读 · 0 评论 -
【MFC基础】19文件对话框
新建一个编辑框和一个按钮,给按钮添加clicked事件函数:void CXXXDlg::OnBnClickedBtn1(){ // TODO: 在此添加控件通知处理程序代码 // 设置过滤器 TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"); // 构造打开文件对话框 CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);原创 2021-09-16 22:53:09 · 79 阅读 · 0 评论 -
【MFC基础】18定时器Timer
MFC定时器分步骤给出MFC定时器的使用方法。1.设置定时器启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下:CWnd::SetTimerUINT SetTimer(UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT*lpfnTimer) (HWND, UINT, UINT, DWORD) );返回值:如果函数成功,则返回新定时器的标识符。应用程序可以将这个值传递给KillTimer成员函数以销原创 2021-09-16 22:50:57 · 257 阅读 · 0 评论 -
【MFC基础】17工具条Toolbar
1、向导自动生成的CMFCToolBar向导自动生成的菜单会没有名字,在“工具栏和停靠窗口”的子菜单下会显示空。在CMainFrame::OnCreate()事件中给工具栏命名。2、自己添加一条工具栏自己添加的工具栏如果按照向导生成的样子去做,在菜单中是不会显示出来的,虽然工具栏已经生成了。要想让菜单在“工具栏和停靠窗口”中显示,是不能完全按照向导生成的样子做的。需要模仿向导生成的样子做但仍有点变化。(1) 创建自已的工具栏在头文件中定义一个工具栏变量。CMFCToolBar m_wndToo原创 2021-09-16 22:41:27 · 609 阅读 · 0 评论 -
【MFC基础】16模态和非模态对话框
对话框分为模态和非模态对话框两种模态对话框(Modal)d.DoModal()必须关闭才能返回主窗口非模态对话框(Modaless)p->Create(IDD_DIALOG,this);p->ShowWindow(SW_SHOW);1、建立mfc工程,添加Edit Control组件设置属性如图2、添加两个button 到对话框并分别设置两个button的caption属性为打开模态对话框 和 打开非模态对话框3、在资源视图中、右键单击dialog,选择插入dialog,并原创 2021-09-16 17:52:01 · 147 阅读 · 0 评论 -
【MFC基础】15状态栏StatusBar
方法11.添加成员变量CStatusBarCtrl m_StatusBar;2.在OnInitDialog()中加入:m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0); int strPartDim[3]= {100, 200, -1}; //分割数量m_StatusBar.SetParts(3, strPartDim);//设置状态栏文本m_StatusBar.SetText(“分栏一”原创 2021-09-16 17:46:41 · 333 阅读 · 0 评论 -
【MFC基础】14菜单Menu
1、创建弹出菜单(1)、利用向导,创建一个基于单文档的应用程序;(2)、在资源视图中选中”menu”,鼠标右键插入一新菜单IDR_POPMENU;(3)、在IDR_POPMENU菜单中添加”弹出菜单”选项,在”弹出菜单”下添加菜单命令”复制”、”粘贴”、”查找”、”测试”,分别修改其ID;(4)、分别对四个选项,添加消息处理函数,选中某选项,鼠标右键单击,选择Add Event Handler,类的类型选中view,消息类型选择COMMAND;(5)、选择Class View,选中view类,添加原创 2021-09-16 17:40:07 · 778 阅读 · 0 评论 -
【MFC基础】13s时间控件DateTime Picker
往MFC界面上拖一个Date Time Picker控件,然后选中,右键添加一个变量 比如 m_dtCtrl1、获得该控件的时间CTime m_date; //别看名字以为它只有时间,实际上它可以同时获得日期和时间信息m_dtCtrl.GetTime(m_date);//把控件里面的时间都获取到了m_date这个结构里面。需要哪些数据从m_date中取就可以了。不过CTime只能表示1970-2037年的数据,要表示更长时间段,可以用COleDateTime,表示1900以后几千年的数据。原创 2021-09-16 17:34:09 · 802 阅读 · 0 评论 -
【MFC基础】12树形控件Tree Control
Tree control控件的使用1、创建Tree control到对话框中2、设置属性 Has Buttons为true 和Has Lines为true 这样的话显示的比较好看3、在OnInitDialog函数中初始化控件//声明指向节点的句柄HTREEITEM hItem, hSubItem;HTREEITEM hNewRoot;//添加根结点hItem = m_MyTree.InsertItem(_T("文件名"), TVI_ROOT);//在根结点上添加3个子结点hSubItem原创 2021-09-16 16:54:41 · 632 阅读 · 0 评论 -
【MFC基础】11列表控件ListControl
以下未经说明,listctrl默认view 风格为report1. CListCtrl 风格LVS_ICON: 为每个item显示大图标LVS_SMALLICON: 为每个item显示小图标LVS_LIST: 显示一列带有小图标的itemLVS_REPORT: 显示item详细资料直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”2. 设置listctrl 风格及扩展风格LONG lStyle;lStyle = GetWindowLong(m_lis原创 2021-09-16 16:32:44 · 2469 阅读 · 0 评论 -
【MFC基础】10滑块控件Slide
在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下:主要要方法有:1、设置、取得滑动范围void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE ); void GetRange( int& nMin, int& nMax ) const;2、设置、取得按下左右箭头滑动间隔int SetLineSize( int nSize ); int GetLineSize( ) const;3、设置、取得按下Pg原创 2021-09-16 15:11:22 · 540 阅读 · 0 评论 -
【MFC基础】09进度条Progress
1、首先在初始化对话框中设置进度条的范围和初始位置CProgressCtrl* pProg = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS);pProg->SetRange(0, 100);pProg->SetPos(0);//也可关联控件变量2、在确定按钮中设置定时器//设置定时器SetTimer(1, 100, nullptr);//当开始的时候,按钮不可用CButton* pBtn = (CButton*)GetDlgItem(IDC原创 2021-09-16 15:03:48 · 394 阅读 · 0 评论 -
【MFC基础】08数值调节按钮SpinControl
Spin和Edit是配合使用的。1、绑定spin和editm_Spin.SetBuddy(GetDlgItem(m_Edit1)); m_Spin.SetRange(0,100);2、实现数值的增减双击控件添加消息void CAlarm::OnDeltaposSpin5(NMHDR *pNMHDR, LRESULT *pResult){ LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR); UpdateDat原创 2021-09-16 14:33:22 · 582 阅读 · 0 评论 -
【MFC基础】07滚动条ScrollBar
1、设置对话框的vertical scrollbar属性为true;2、在对话框的InitDialog函数中增加如下代码,完成CScrollBar的初始化. CScrollBar* pScrollBar = (CScrollBar*)GetDlgItem(IDC_SCROLLBAR_HORIZONTAL); pScrollBar->SetScrollRange(0,100);//滑块移动的位置为0——100; pScrollBar = (CScrollBar*)GetDlgItem(IDC_S原创 2021-09-16 14:22:08 · 1666 阅读 · 0 评论 -
【MFC基础】06列表框ListBox
1、添加方法1:关联控件变量//可以添加多行 m_List.AddString(_T("test")); m_List.AddString(_T("test")); m_List.AddString(_T("test"));方法2:利用CListBox类来操作,原理和向导添加一样的CString s(“test”);//获取指向控件的指针CListBox* pLb = (CListBox*)GetDlgItem(IDC_LIST);pLb->AddString(s);2、插原创 2021-09-15 20:21:11 · 2475 阅读 · 0 评论 -
【MFC基础】05组合框Combo Box
Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。1、定义控件对应变量假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代原创 2021-09-15 20:05:46 · 439 阅读 · 0 评论 -
【MFC基础】04单选按钮Radio Button
问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?先为对话框加上2个radio button,分别是Radio1和Radio2。关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,第1种((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);//不选上((CButton原创 2021-09-15 19:05:06 · 370 阅读 · 0 评论 -
【MFC基础】03复选框Check Box
MFC中复选框checkbox控件,至少有三种方法对其进行操作 第一种是利用Cbutton成员函数GetCheck和SetCheck, 第二种是利用CWnd成员函数IsDlgButtonChecked, 第三种是把checkbox复选框控件与BOOL型变量相关联。一、用CButton成员函数MFC中复选框CheckBox的基类是CButton。那么就可以用GetDlgItem来获取复选框的指针,再用Cbutton成员函数GetCheck和SetCheck来获取和设置选中状态。获取复选框状态:原创 2021-09-15 17:02:32 · 4888 阅读 · 1 评论 -
【MFC基础】02编辑框Edit Control
一、属性首先选中任意一个编辑框,看看编辑框都有哪些属性,其中常用到属性有: Multiline:多行,表示内容可以多行显示,一般记录性的编辑框需要多行; Password: 密码,表示文本以密码形式呈现,一般用来输出密码; Read only:只读,表示文本内容只能读不能写; Number: 数字,表示只能输入数字; Lowercase:小写,所有字母全部自动转换为小写显示; Uppercase:大写,所有字母全部自动转换为大写显示; Horizontal scroll:水平原创 2021-09-15 16:42:46 · 972 阅读 · 1 评论 -
【MFC基础】01静态文本框Static Text
【1】属性设置编辑框的属性主要在 Styles 选项卡中设置。重要属性有:Multiline :定义该编辑框为多行文本框。Number :限定输入的字符只能是数字字符。Border :为控件创建边界。Read-only :编辑框成为只读的,禁止用户编辑。【2】常用方法一、向Static文本添加文本有几下几种方法:方法1:CString s(“test”);//GetDlgItem()返回的是一个控件句柄,利用这个句柄来访问这个控件//与之相匹配的是GetDlgItem(IDC_STAT原创 2021-09-15 16:15:34 · 2847 阅读 · 1 评论