
VC++ 常用类、方法、函数、关键字
文章平均质量分 79
Phenixyf
这个作者很懒,什么都没留下…
展开
-
在MFC中使用printf
mfc printf转载 2022-08-24 10:53:43 · 1383 阅读 · 0 评论 -
ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中转载 2014-12-30 14:02:11 · 542 阅读 · 0 评论 -
如何得到句柄、窗口句柄
句柄 这一概念是MFC里的一个类,MFC有专门的函数来获取窗口句柄。HWND hwnd;hwnd=CreateWindow("my own windowshandle","jaycnvip",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);这是用一个句柄变量来保存新创建的窗口句柄。其它如:通过窗口标题获取窗转载 2012-08-22 18:07:48 · 3739 阅读 · 0 评论 -
break、continue、return的用法
break,continue和return这三个语句的用法新手们经常弄混淆,至少在我学习C语言的时候经常把它们的用法给搞错。不过现在好了,我已彻底搞清楚它们之间的用法!break语句:break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。 break转载 2015-05-27 14:07:12 · 530 阅读 · 0 评论 -
CreateFile,ReadFile等API详解
CreateFile,ReadFile等API详解一、*****CreateFile***** 这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象:控制台对象、通信资源对象、目录对象(只能打开)、磁盘设备对象、文件对象、邮槽对象、管道对象。 函数原型:HANDLE CreateFile(LPCTSTRlpFileName,转载 2015-05-28 11:32:59 · 4295 阅读 · 0 评论 -
异步IO模型和Overlapped结构
I/O设备处理必然让主程序停下来干等I/O的完成,解决这个问题,可以使用OVERLAPPED。OVERLAPPED I/O是WIN32的一项技术, 你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在I/O进行过程中仍然能够继续处理事务。事实上,操作系统内部正是以线程来I/O完成OVERLAPPED I/O。你可以获得线程的所有利益,而不需付出什么痛苦的代价。也就是转载 2015-05-28 13:29:50 · 778 阅读 · 0 评论 -
Overlapped模型深入分析(原理篇)
简述: Overlapped I/O也称Asynchronous I/O,异步I/O模型。异步I/O和同步I/O不同,同步I/O时,程序被挂起,一直到I/O处理完,程序才能获得控制。异步I/O,调用一个函数告诉OS,进行I/O操作,不等I/O结束就立即返回,继续程序执行,操作系统完成I/O之后,通知消息给你。Overlapped I/O只是一种模型,它可以由内核对象(hand),事件转载 2015-05-28 13:31:03 · 8420 阅读 · 0 评论 -
VC中外部函数如何获得对话框成员变量
在用定时器的时候,回调函数需要调用对话框中的成员变量,但回调函数不在对话框类中是全局的,于是开始琢磨怎么实现外部对对话框中的成员调用,大家都知道一个对话框是在theApp对象中声明创建的,也就是当编译完成theApp后才开始编译对话框类,然后生成对话框变量,那么就可以用theApp来调用对话框对象。后来发现theApp中有:m_pMainWnd = &dlg; 一句话,也就意味着对话框对象的指针赋转载 2015-05-28 15:10:54 · 633 阅读 · 0 评论 -
ShowWindow 对话框显示应用
在需要显示某个对话框时,可以使用ShowWindow函数。CMyDlg *pDlg = new CMyDlg;pDlg->Create(IDD_DLG_TEST);pDlg->ShowWindow(SW_SHOW); 也可以定义对话框类对象 CMyDlg m_MyDlg;m_MyDlg.ShowWindow(SW_SHOW); 此时注意ShowWindow函数原创 2015-06-06 14:39:47 · 5822 阅读 · 0 评论 -
CString常用方法汇总
1.CString::IsEmptyBOOL IsEmpty( ) const;返回值:如果CString 对象的长度为0,则返回非零值;否则返回0。说明:此成员函数用来测试一个CString 对象是否是空的。示例:下面的例子说明了如何使用CString::IsEmpty。// CString::IsEmpty 示例CString s;ASSERT( s.IsEmp转载 2014-12-05 15:59:49 · 789 阅读 · 0 评论 -
CString与char[] 的相互转换方法以及结尾乱码问题的分析解决
这是一个很常见的问题,下面记录下我的解决方案。 一、CString 转化成char[] 方法一:运用 CString.GetBuffer(0) 与 strcpy[cpp] view plaincopyprint?CString str; int len = str.GetLength(); char* arr = new char[len]; st转载 2015-06-08 11:28:40 · 2026 阅读 · 0 评论 -
获取窗口句柄的方法
BOOL CGVideoDlg::PreTranslateMessage(MSG*pMsg) { // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message == WM_LBUTTONDBLCLK) { CWnd *pWnd = FromHandle(pMsg->hwnd);转载 2014-12-01 10:25:01 · 4027 阅读 · 0 评论 -
点击按钮后弹出新的对话框
1. 在资源编辑框插入新的对话框,右键新对话框添加新类,注意Base Class要选CDialog: 2. 设置新Dialog属性,Style: Popup 3. 将新对话框的类的头文件添加到要使用的对话框头文件中,并为新对话框定义对象: 4. 在对应要弹出新对话框的消息函数中添加如下代码:ShowWindow函数的参数代表弹出窗口的类型,0不弹出。原创 2014-12-05 18:48:54 · 8246 阅读 · 0 评论 -
c++文件流基本用法(fstream, ifstream, ostream)
前言:c++的文件流处理其实很简单,前提是你能够理解它。文件流本质是利用了一个buffer中间层。有点类似标准输出和标准输入一样。c++ IO的设计保证IO效率,同时又兼顾封装性和易用性。本文将会讲述c++文件流的用法。有错误和疏漏的地方,欢迎批评指证。需要包含的头文件: 名字空间: std也可以试用fstream提供了三个类,用来实现c++对文件的操作。(文件的转载 2014-12-30 15:27:18 · 1471 阅读 · 0 评论 -
子对话框调用主对话框函数的方法
在CImageArea类中调用CGIFJPGDlg类(主对话框类)的DrawSelectedImage函数:1. 在CImageArea类的.cpp文件中includeCGIFJPGDlg类的头文件#include "GIFJPGDlg.h"2. 在要调用的函数中使用下面的语句:void CImageArea::OnPaint(){CPaintDC dc(thi原创 2014-12-15 10:35:57 · 4305 阅读 · 0 评论 -
获取当前系统时间
char szTime[32]; CTime time; time = CTime::GetCurrentTime(); sprintf(szTime, "%4d-%.2d-%.2d %.2d:%.2d:%.2d", time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinu转载 2014-12-31 13:57:34 · 409 阅读 · 0 评论 -
VC获取系统时间、程序运行时间
1.使用CTime类(获取系统当前时间,精确到秒)CString str;//获取系统时间CTime tm;tm=CTime::GetCurrentTime();//获取系统日期str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK);a,从CTimet中提取年月日时分秒 CTime t = CTi转载 2015-01-20 13:08:55 · 673 阅读 · 0 评论 -
CString处理有回车键的字符串
sLoadFile为要处理的字符串;CString sCombEdit[128] 为每个回车键之前的字符串暂存buffer。 CString sLoadFile; CString sTemp; CString sCombEdit[128]; sLoadFile.Empty(); sTemp.Empty(); CString sFind = "\r\n"; //原创 2014-12-15 18:29:38 · 3936 阅读 · 0 评论 -
怎样关闭整个程序
AfxGetMainWnd()->SendMessage(WM_CLOSE);原创 2014-12-31 13:54:49 · 510 阅读 · 0 评论 -
LPSTR、LPCSTR、LPTSTR和LPCTSTR的意义及区别
LPCTSTR,LPCSTR,LPTSTR,LPSTR的区别LPCSTR 32-bit 指针,指向一个常量字串 LPSTR 32-bit 指针,指向一个字串 LPCTSTR 32-bit 指针,指向一个常量字串。此字串可移植到Unicode 和DBCS LPTSTR 32-bit 指针,指向一个字串。此字串可移植到转载 2015-01-23 16:45:04 · 7731 阅读 · 0 评论 -
MFC子父窗口发送消息
1. 插入新对话框,并建立新类,注意Base Class要选CDialog; 2. 在新生成类的.cpp文件中,include主对话框的头文件:#include "PCRProjectDlg.h" // 主窗口类的头文件 3. 在父窗口的.h文件中,3.1 include子窗口的头文件:#include "ParsaveDlg.h" // 新添原创 2014-12-08 20:17:37 · 4474 阅读 · 1 评论 -
使用Tab控件时子主窗口发送多个消息
1. 在Resource.h文件中定义消息#define WM_OpenComm_event WM_USER + 101#define WM_CommTx_event WM_USER + 102注意,当新增加控件后,这些在Resouce.h中添加的语句会被清除,需重新再添加一次。 2. 在父窗口的.h文件,类定义中添加对应的消息处理函数,作为类的成员函数: afx_ms原创 2013-11-21 23:16:33 · 2199 阅读 · 0 评论 -
MFC子父窗口发送消息
在MFC中,使用用户自定义消息,子窗口向父窗口发送消息过程、代码:1)在resourse.h中增加定义://#define WM_add_event_ok (WM_USER + 100) //这种定义方法没有测试,不知道行不行;static UINT WM_add_event_ok = RegisterWindowMessage(_T("User"));//测试过,可行。2)在父窗转载 2013-09-08 15:55:50 · 2814 阅读 · 0 评论 -
关于VC++6.0中的字符串拼接函数strcat
原型:extern char *strcat(char *dest,char *src);头文件:#include 功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。 举例说明:[cpp] view pla转载 2015-06-30 22:57:26 · 1943 阅读 · 0 评论 -
COLORREF,COLOR,RGB,CString的转化总结分析
一、COLORREF与RGB的相互转化RGB(r,g,b)是一个宏实际上它做得事是((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))rgb(r,g,b) = 一个整型值 = r + g * 256 + b*255*256 COLORREF 是 一 个 32-bit 整 型 数 值,它 代 表 了 一 种 颜转载 2015-12-23 17:22:06 · 2212 阅读 · 0 评论 -
struct 定义、使用及用extern声明时注意事项
对比下面两种定义:struct A{int i;char c;float j;};这种定义结构体在使用时应该是:struct A b,c; // 定义了两个struct A 类型的变量b和c。 在VC++中,定义写成 A b,c; 也不会报错,并且可以正常运行。但是当用到多个A 时,或用到extern就很容易报错,说重复定义,例如自己写了一个函数,A原创 2015-10-22 15:08:45 · 2217 阅读 · 0 评论 -
CreateEvent的用法
CreateEvent的用法收藏新一篇: PreCreateWindow的作用和使用方法 | 旧一篇: VC中_T()的作用事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对转载 2017-05-16 19:04:11 · 28500 阅读 · 0 评论 -
Overlapped I/O
Overlapped I/O是Windows系统上的Asynchronous I/O implementation。啥叫asynchronous I/O ?借用Linux Man page中对AIO的介绍:The POSIX asynchronous I/O (AIO) interface allows applications to initiate one or more I/O op转载 2017-05-16 19:54:04 · 422 阅读 · 0 评论 -
谈谈MSG中的 WPARAM 和 LPARAM
第一:WPARAM 和 LPARAM 是什么东西 typedef uint wparam;//就是无符号整形 typedef long lparam;//就是长整形 typedef struct tagMSG { // msg转载 2017-04-27 17:53:36 · 1118 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面.CreateEvent函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。WaitForSingleObject()等待,直到参数所指定的O转载 2017-05-22 18:36:35 · 368 阅读 · 0 评论 -
互斥对象和线程同步
用最简单的语言说就是这个对象有两个状态比如我们称0和1,称什么一点也不重要,有信号和无信号就是相对的两个状态,没什么意义,你就认为一个状态是0另一个状态是1。在程序里如果加了WaitForSingleObject,那么程序到这里就去检测你给他的那个句柄的状态,如果是0程序就停在这里了,如果是1,程序就继续下去。那么线程同步就要利用这两个状态。假如你有两个线程,都有可能访问同一个文件,而同一个文件是转载 2017-05-22 18:42:38 · 295 阅读 · 0 评论 -
字符转换常用函数总结
1. 字符串16进制字符 AsicConvert(string,char); 例:编辑框中TEST中输入字符B5,按十六进制0xB5,将值赋给输出变量outdata; cstring sFind; GetDlgItemText(IDC_EDIT_TEST, sFind); unsigned char s1 = '1'; uns原创 2015-07-16 17:37:48 · 578 阅读 · 0 评论 -
CString,string,char*之间的转换
这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。转载 2017-12-27 21:08:25 · 231 阅读 · 0 评论 -
VC中添加WM_DEVICECHANGE消息(经典)
在mfc添加WM_DEVICECHANGE不像添加WM_MOUSEMOVE(举例)等等那样直接鼠标点击之后就自动添加。当中是有封装WM_DEVICECHANGE消息的(CWnd::OnDeviceChange),括号里的东西就是msdn里面的东西,就是说CWnd是有这个函数的。在开发的时候,我们不得不手动添加,而不是用IDE的自动添加功能。所以如果不了解mfc的消息机制的话,看起来会比较晦涩。入主...转载 2018-05-28 15:29:58 · 2204 阅读 · 0 评论 -
VC中CList用法及其成员的使用
初学mfc者,往往对CList等mfc的Collect类的使用感到迷惑,在使用中经常会遇到许多问题,导致对vc中的Collect类的使用产生了惧怕。以下,就个人经历而言,告诉大家如何使用CList。CList是一个双向链表类。 1、头文件名不可少Clist类定义在Afxtempl.h 头文件中,因此在使用该类时,需要加这个头文件名。 2、理解CList的声明和构造方法CList的声明如...转载 2018-06-26 18:43:52 · 8236 阅读 · 0 评论 -
Format 函数,%f,%d,%x,%p
Format函数:返回按指定方式格式化一个数组常量的字符形式。"%" [索引 ":"] ["-"] [宽度] ["." 摘要] 类型Format('x=%d', [12]); //'x=12' //最普通Format('x=%3d', [12]); //'x= 12' //指定宽度Format('x=%转载 2017-01-12 15:49:47 · 2626 阅读 · 0 评论 -
AfxGetApp->GetMainWnd()与AfxGetMainWnd
前台线程与后台线程,AfxGetApp->GetMainWnd()与AfxGetMainWnd的不同 顾名思义,前台指看得见,既然看得见自然要有窗口,而后台是看不见,看不见可以理解为没有窗口,既然没有窗口,那么用AfxGetMainWnd()取得其窗口句柄,未免有些搞笑,为什么呢?聪明的你想必早已明白,如果你曾经跟踪过AfxGetMainWnd()的调用,会发现它取得的是AFX_MO转载 2016-09-07 15:17:47 · 389 阅读 · 0 评论 -
CSpreadSheet类学习(操作EXCEL)
最近需要给别人做个小东西,要导入导出数据到excel,最前没有接触过,到网上搜了下,发下CSpreadSheet这个东西,有现成的东西自己就不用写了,呵呵! 由于需要对excel表格进行操作,在网上找了这个类。用odbc来实现的,具体的使用步骤基本上如下:CStringArray tempStrArray;CSpreadSheet ss(FileName, "LAB转载 2016-04-14 13:54:42 · 812 阅读 · 1 评论 -
GDI 总结三: CImage类使用
前言 CImage类是基于GDI+的,但是这里为什么要讲归于GDI? 主要是基于这样的考虑: 在GDI+环境中,我们可以直接使用GDI+ ,没多少必要再使用CImage类 但是,如果再GDI环境中,我们要想使用GDI+,有点麻烦,还得加转载 2015-12-17 18:38:18 · 928 阅读 · 0 评论 -
Tab不同子对话框间函数互相调用
主对话框类为CMyDialog,Tab控件的两个子对话框类分别为CList1和CList2。CList1中有成员函数GetChipaddress(); 在CList2中需要调用CList1的GetChipaddress函数。第一步:按Tab使用加载两个子对话框,在CMyDialog中添加两个子对话框成员变量class CMyDialog: public CdialogEx{原创 2015-12-22 11:41:35 · 2301 阅读 · 1 评论