C/C++
文章平均质量分 68
HiRuyue
这个作者很懒,什么都没留下…
展开
-
_cdecl 和_stdcall及其他调用方式
_cdecl 是CDeclaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数无需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是转载 2013-03-29 00:31:42 · 519 阅读 · 0 评论 -
UTF-8编码规则
UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如转载 2013-04-01 16:18:58 · 1348 阅读 · 0 评论 -
文档类CDocument子框架类CFrameWnd及视图类CView的关系及相互调用
文档对象:是用来保存数据的。 视图对象:是用来显示和编辑数据的。 应用程序框架:框架是用来管理不同文档显示界面的。例如你有一个数据网格显示界面,还有一个图形显示界面,它们的数据可能都来自你的文档,但是视图不同,怎么办用框架。为什么不用视图?为的是把界面管理独立的拿出来。 文档模板:mfc把文档/视图/框架视为一体,只要你创建文档/视图框架结构的程序,必定会为你创建这三个类转载 2013-04-03 11:38:06 · 898 阅读 · 0 评论 -
枚举串口四法
串口作为最基本的电脑通信 I/O 接口,其使用虽然在 PC 上越来越少,但是在工业仪器领域仍然用的相当普遍,由于笔者工作中需要用到串口,而且发现枚举串口至今仍未搞得很清楚,为此自己先整理下,希望大侠和同行们对我不懂和错误的地方指点一下。 1 、查询注册表查询注册表的方法是网上见到的比较常见的方法,该方法就是使用编程方法读取注册表内信息,相当于用户通过在运行框内输入 ”regedit”(转载 2013-04-03 16:04:28 · 713 阅读 · 0 评论 -
VC消息大全
hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。lParam 通常是一个指向内存中数据的指针。由于WParam、lPar转载 2013-04-03 14:18:45 · 545 阅读 · 0 评论 -
Unicode与UTF-8互转(C语言实现)
1. 基础1.1 ASCII码我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被称为一个字节(byte). 也就是说, 一个字节一共可以用来表示256种不同的状态, 每一个状态对应一个符号, 就是256个符号, 从 0000000到11111111.转载 2013-04-03 15:21:41 · 563 阅读 · 0 评论 -
VC中数据类型转换
CString->TCHAR*的转化可以用函数GetBuff()函数原型为:LPTSTR GetBuffer( int nMinBufLength );CString str("CString");TCHAR* szMsg = new TCHAR[100];//其参数为CString字符串的长度szMsg = str.GetBuffer(str.GetLength());s转载 2013-04-03 14:13:40 · 599 阅读 · 0 评论 -
VC中SPIN旋转按钮的使用
只要在初始化里这样写CSpinButtonCtrl * pSpinspeed=(CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1); ASSERT(pSpinspeed!=NULL); //设置伙伴窗口 pSpinspeed->SetBuddy(GetDlgItem(IDC_EDIT1)); pSpinspeed->SetRange(0,转载 2013-04-03 09:16:49 · 1782 阅读 · 0 评论 -
VC编程之组合框
1.如何正确的得到ComBox的指针CComboBox *mComb = (CComboBox*)GetDlgItem(IDC_DuanCB);CComboBox *mComb = (CComboBox*)::GetDlgItem(m_hWnd,IDC_DuanCB);2.CComboBox控件详解CComboBox控件又称作组合框控件,其有三种形态可供选择,1.简单组合框(Sim转载 2013-04-03 10:47:47 · 1874 阅读 · 0 评论 -
VC 进制转换(二进制、十进制和十六进制)
//10->2CString DecimalToBin(int iDecimal){char c[20];_itoa(iDecimal, c, 2 );CString str(c);return str;}//10->16CString DecimalToHex(int iDecimal){char c[20];sprintf(c, "%x", i转载 2013-04-03 14:16:11 · 2272 阅读 · 0 评论 -
MFC中CImageList的使用
图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位图构成,其中包含透明位图模式(实际上,所有的再一个图像列表中的图标都被存储在一个屏幕设备的位图中)。可以利用windows API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像邓操作。图像列表控件提供了控制图像列表额基转载 2013-04-03 14:23:12 · 880 阅读 · 0 评论 -
VC unicode编程
UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置: C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE 在ProjectSetting/link/output 中设置Entry为wWinMa转载 2013-04-03 15:14:50 · 685 阅读 · 0 评论 -
用户模式下的线程同步
用户模式下的线程同步主要在于不会进入等待状态(有时也会进入等待状态,像关键段和slim读写锁,但是可以设置“忙等”的时间)。但是,由于使用它们的时候只是像声明全局变量那样,它们只能在进程内同步,不能在进程之间做同步。包括如下4中用户模式下的同步机制。1. Interlocked系列函数,比如InterlockedExchangeAdd64,会以原子访问方式完成将一个数加上另一个数的转载 2013-03-20 21:28:51 · 538 阅读 · 0 评论 -
CStringList类知识
CStringList类支持CString对象的列表。所有的比较都是通过值比较来完成的,这意味着不是比较字符串的地址而是比较字符串中的字符。CStringList的成员函数类似于类CObList类的成员函数。由于具有这些相似性,你可以参考关于CObList的参考文件来获取CStringList成员函数的详细说明。如果在说明中看到某一函数的返回值是一个指向CObject对象的指针,则可以用一转载 2013-03-22 01:21:20 · 829 阅读 · 0 评论 -
VC中常见的数据类型转化
一,VC中字符串类型的互相转换常用的保存字符串的类型有:CString、TCHAR*、 TCHAR[]、 char*、 LPCSTR、 LPCTSTR、 LPBYTE通常把Cstring看作一个转换的中间值。1. LPCSTR->CstringLPCSTR在VC中代表的是char*,但并不能用char*的方式去转换它。它与Cstring可以直接互换,就像以下代码这样:转载 2013-03-28 13:27:29 · 719 阅读 · 0 评论 -
VC获取系统目录
函数SHGetSpecialFolderLocation(): #include "shlobj.h" //包含头文件WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation (HWND hwndOwner, int nFolder,LPITEMIDLIST * ppidl); //函数声明hwndOwner: 指定了"所有者窗口"转载 2013-03-28 13:31:23 · 1163 阅读 · 0 评论 -
VC之OpenGL编程框架
在Windows系统下编制OpenGL程序必需首先建立Windows框架,再在Windows框架下建立OpenGL的框架。Windows程序框架Windows框架是我们在Windows系统下运行的程序必需的架构。Windows框架主要由三个函数构建。 ● WinMain() 程序入口。程序从这里开始运行。WinMain()的功能为定义一个Windows的窗口的样式、大小原创 2013-04-13 00:14:21 · 1147 阅读 · 0 评论 -
OpenGL函数库
开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。它采用C语言风格,提供大量的函数来进行图形的处理和显示。OpenGL图形库一共有100多个函数,它们分别属于OpenGL的基本库、实用库、辅助库等不同的库。1、核心库包含的函数有115个,它们是最基本的函数,其前缀是gl;这部分函数用于常规的、核心的图形处理,由gl.dll来负责解释执行。核心库中的函数可以进一步分为以下几类函转载 2013-04-12 23:53:33 · 2118 阅读 · 0 评论 -
Visual C++全能速查宝典
第1章 数学函数 1.1 _chgsign--求参数的相反数 1.2 _copysign--复制数据 1.3 _hypot--求直角三角形斜边长度 1.4 _max--求两个数中的大数 1.5 _min--求两个数中的小数 1.6 _scalb--求参数的(2^ exp)倍数 1.7 abs--求整数的绝对值 1.8 acos--求反余弦 1.9 asin--求转载 2013-04-12 23:57:13 · 1433 阅读 · 1 评论 -
基于MFC的OpenGL绘图
一、简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定 了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但转载 2013-04-13 00:08:12 · 902 阅读 · 0 评论 -
Winsows API 函数大全 for C++
1. API 之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnu转载 2013-04-12 22:13:09 · 1094 阅读 · 0 评论 -
用Windows API进行串口编程的一般步骤及相关函数讲解
虽然使用诸如CSerialPortVC串口类,MSCommVC串口控件等非常方便,但有时这些控件并不适合自己的特殊需求,所以有必要了解一下基于Windows API的串口编程方法,下面介绍一下API串口编程的一般步骤及相关串口API函数。串口操作一般有四步,分别是:1) 打开串口2) 配置串口3) 读写串口4) 关闭串口1、打开串口 在《VC打开串口》转载 2013-04-12 22:18:13 · 889 阅读 · 0 评论 -
VC下配置OpenGL环境
Windows下配置OpenGL 一、假设我的VC 6安装到D:\ProgramFiles\Microsoft Visual Studio目录下。 将OpenGL支持文件中的动态链接库文件(*.dll),全部拷贝到C:\WINDOWS\system目录下面; 将OpenGL支持文件中的头文件(*.h),全部拷贝到D:\ProgramFiles\Microsoft Visual Stud原创 2013-04-12 23:43:36 · 751 阅读 · 0 评论 -
C++内存管理
以下将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。1 内存管理1.1 C++内存管理详解1.1.1 内存分配方式1.1.1.1 分配方式简介 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内转载 2013-04-12 21:32:44 · 925 阅读 · 0 评论 -
CListCtrl使用技巧
以下未经说明,listctrl默认view 风格为report1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查转载 2013-03-22 08:38:16 · 557 阅读 · 0 评论 -
Visual C++编程技巧---常用控件和组件
35.如何设置按钮控件的标签文本36.如何设置按钮控件的显示字体37.如何动态禁用和启用按钮控件38.如何动态隐藏和显示按钮控件39.如何在按钮控件上动态加载图标40.如何在按钮控件上动态加载位图41.如f可制作图标和文本共存的按钮42.如何制作不规则的多边形按钮43.如何制作GIF动画效果的按钮44.如何制作AVI视频效果的按钮45.如何在程序中动态创建按转载 2013-04-18 19:25:49 · 1109 阅读 · 0 评论 -
Visual C++编程技巧---程序管理和控制
245.如何捕获按下的Home等功能键246.如何捕获按下的Air或Shift+Alt组合键247.如何捕获按下的Ctrl或Clrl+Alt组合键248.如何捕获按下的Ctrl或Ctrl+Shift组合键249.如何捕获用户按下键盘的任一按键250.如何使用钩子技术监视键盘的按键操作251.如何使用小键盘数字键模拟鼠标单击252.如何禁止使用Esc键关闭对话框程序2转载 2013-04-18 19:31:38 · 933 阅读 · 0 评论 -
Visual C++编程技巧---工具栏和状态栏
128.如何获取工具栏中的图标资源129.如何在工具栏上设置背景图像1 30.如何在工具栏上加载动画窗口1 3 1.如何在工具栏上加载组合框控件132.如何在工具栏上加载孚体组合框1 33.如何为工具栏添加动态真彩按钮134.如何为工具栏按钮设置下拉箭头135.如何为工具栏按钮添加下压效果136.如何在工具栏上显示图标和文字137.如何设置工具栏按钮的标题文字转载 2013-04-18 19:28:10 · 1832 阅读 · 0 评论 -
Visual C++编程技巧---光标和图标
164.如何获取系统默认的光标大小165.如何装入操作系统预置的光标166.如何设置当前程序显示的光标167.如何创建沙漏效果的等待光标168.如何使用十字光标定位画线坐标169.如何使用动画文件设置程序光标170.如何捕捉光标指向的热区范围171.如何将光标限制在指定范围内172.如何获取光标当前的活动范围173.如何获取系统默认的图标大小174.如何获取转载 2013-04-18 19:29:11 · 1305 阅读 · 0 评论 -
Visual C++编程技巧---程序主窗口界面
180.如何创建一个向导式的对话框窗体181.如何创建一个属性页的对话框窗体1 82.如何创建列表视图类型的程序窗体183.如何创建不规则的对话框窗体184.如何创建圆角状的非矩形窗体1 85.如何使用文字线条填充窗体轮廓186.如何根据图片的形状创建程序窗体187.如何在窗体中创建切分多视图窗口188.如何在窗体中创建切分同视图窗口189.如何判断程序窗体是否转载 2013-04-18 19:30:19 · 2150 阅读 · 0 评论 -
Visual C++ 编程技巧---消息框和对话框
1.如何在窗口程序中创建消息框2.如何使用资源字符串设置消息框内容3.如何在消息框中动态显示资源字符串4.如何设置消息提示框的标题文字5.如何使消息提示框的标题右对齐6.如何在消息提示框中绘制表格7.如何在消息提示框中设置图标8.如何在消息提示框中显示问号图标9.如何在消息提示框中设置按钮10.如何在消息提示框中显示“是”、“否”按钮11.如何在消息提示框中转载 2013-04-18 19:23:42 · 1601 阅读 · 0 评论 -
VC中tab控件的使用
首先,新建一个基于对话框的MFC应用程序,添加Tab Control控件,并为其添加变量CTabCtrl m_tab;然后,新建两个对话框,均设置属性如下(这步很重要):Style--Child,Border--None分别为这两个对话框建立新类CPage1和CPage2,继承于CDialog。该程序用了一个CDialog的指针数组来进行保存各个页面,数组的大小是Tab Control转载 2013-05-02 19:53:19 · 742 阅读 · 0 评论 -
WM_CREATE & WM_INITDIALOG
WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕.可以安全的使用这个窗口了,例如在它上面画控件等等.这个状态肯定是在调用ShowWindows()显示窗口之前.在响应WM_CREATE消息响应函数的时候,对话框及子控件还未创建完成,亦是说只是通知系统说要开始创建窗口啦,这个消息响应完之后,对话框和子控件才开始创建。因此在此消息响应函数中无法对控件进行修改和初始化。转载 2013-05-03 10:52:09 · 825 阅读 · 0 评论 -
MFC应用程序中处理消息、窗口和对话框相关的顺序
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc() 该函数负责发送消息到On转载 2013-05-03 10:48:22 · 745 阅读 · 0 评论 -
CTreeCtrl 自绘
源代码下载 最近因工作需求,需要自绘CTreeCtrl。由于原来从来没有自绘过,开始在网上搜索资料,查询(因此本文有些知识可能不全面,或许还有更好的办法来实现,还请大家多多指教。)经过一段时间的编写,终于写好了。在此,感谢网友bunpkin提供的实例参考。先贴上效果图,如果觉得还不错,那就继续往下看吧。如果觉得不行的,请飘过。如何你看见这句话我会很高兴,因为至少我写的东西对你转载 2013-05-03 19:57:22 · 1340 阅读 · 0 评论 -
VC操作Excel文件编程相关内容总结
利用VC操作Excel的方法至少有两种1 .利用ODBC把Excel文件当成数据库文件,来进行读、写、修改等操作,网上有人编写了CSpreadSheet类,提供支持。2. 利用Automation(OLD Automation)方法。将Excel当成组件服务器,利用VBA。又分为基于MFC的和SDK两种。 主要研究了一下第二种基于MFC的OLE编程方法。一、Excel的转载 2013-04-03 11:41:12 · 626 阅读 · 0 评论 -
VBA加载宏基础
一、简介加载宏可以扩展Excel的功能,与Excel的内置功能一致,是为Excel提供自定义命令或自定义功能的补充程序。某些加载宏还提供了可用于公式中的新的工作表函数。使用某加载宏必须已安装,且须在加载宏对话框中进行调用。加载宏默认安装在Microsoft Office/Office 文件夹中的 Library 文件夹或 Addins 文件夹,或它们的子文件夹中。其中,Ex转载 2013-05-06 09:20:00 · 1942 阅读 · 0 评论 -
加载宏(Addin)使用方法
Office VBA Addin加载宏是一种使用VBA编写的程序,它通过加载设置,可以随Office程序启动而自动加载运行,是制作Excel自定义函数、Office菜单和功能区按钮、添加常用辅助功能的常用载体。在Excel、PPT中都可以编制加载宏文件,Word则可以通过模板文件进行加载。根据版本和程序的不同,加载宏的文件类型也稍有区别,在2003版本中,Excel的加载宏扩展名是xla、PP转载 2013-05-06 10:18:53 · 6264 阅读 · 0 评论 -
VBA对象体系
在VBA中访问一个对象,必须清楚该对象在对象体系中处于何种位置,然后通过对象访问符合“.”进行访问,从包含该对象的最外层对象开始,由外及里逐次取其子对象,一直到达要访问的对象为止。例如要访问当前工作表的第4列第3行单元格的存储内容,Application.activesheets.range(“d3”).value。【VBA中主要包含6层基本对象】 Applicat转载 2013-05-07 16:14:34 · 1373 阅读 · 0 评论 -
VBA编程“由于另一个程序正在运行中,此操作无法完成.”解决方法.
这是自动化服务超时引起,它有一个默认的响应时间,解决方法:在App::InitInstance()里AfxOleInit()之后加上这个:AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);AfxOleGetMe原创 2013-05-07 20:25:53 · 5588 阅读 · 0 评论