VC编程中常使用的子函数

用VC6构建MASM32汇编的编程环境  如何用VC6.0集成开发环境来构建MASM32汇编的编程环境(原创)作者:maxzhou88(周哥)   开发高性能的程序少不了用汇编编程,限于C语言中内嵌汇编语言的局限(如在C代码中混合汇编语言编程时,很难实现跳表),一些代码必须书写在独立的汇编源文件中。遗憾的是,在调试时,只能看到裸的汇编码,而不能到懂标号,变量等,现在能这样C与ASM混合编程就方便多了。编程环境:VC6.0,Masm32v 阅读详情

1. 改变光标形状

例如,改变光标为等待状态

加载别的形状的光标:HCURSOR hCursor = SetCursor(LoadCursor(NULL,IDC_WAIT));

注意,要保存SetCursor函数的返回值,用于恢复光标,使用SetCursor(hCursor)恢复原来的光标

2.1.判断某个文件是否存在

Determines whether a path to a file system object such as a file or directory is valid.

BOOL PathFileExists(
    LPCTSTR pszPath
    );
Parameters

pszPath

[in] Pointer to a null-terminated string of maximum length MAX_PATH that contains the full path of the object to verify.

Return Values

Returns TRUE if the file exists, or FALSE otherwise. Call GetLastError for extended error information.

Example
#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

void main( void )
{
// Valid file path name (file is there).
char buffer_1[ ] = "C://TEST//file.txt"; 
char *lpStr1;
lpStr1 = buffer_1;

// Invalid file path name (file is not there).
char buffer_2[ ] = "C://TEST//file.doc"; 
char *lpStr2;
lpStr2 = buffer_2;


// Return value from "PathFileExists".
int retval;

// Search for the presence of a file with a true result.
retval = PathFileExists(lpStr1);
if(retval == 1)
{
cout << "Search for the file path of : " << lpStr1 << endl;
cout << "The file requested /"" << lpStr1 << "/" is a valid file" << endl;
cout << "The return from function is : " << retval << endl;
}

else{
cout << "/nThe file requested " << lpStr1 << " is not a valid file" << endl;
cout << "The return from function is : " << retval << endl;
}

// Search for the presence of a file with a false result.
retval = PathFileExists(lpStr2);
if(retval == 1)
{
cout << "/nThe file requested " << lpStr2 << "is a valid file" << endl;
cout << "Search for the file path of : " << lpStr2 << endl;
cout << "The return from function is : " << retval << endl;
}

else{
cout << "/nThe file requested /"" << lpStr2 << "/" is not a valid file" << endl;
cout << "The return from function is : " << retval << endl;
}
}
OUTPUT
==============
Search for the file path of : C:/TEST/file.txt
The file requested "C:/TEST/file.txt" is a valid file
The return from function is : 1

The file requested "C:/TEST/file.doc" is not a valid file
The return from function is : 0
3. Rich Edit控件的使用
1) 在Dialog中放一个rich edit控件,然后用classwizard做一个变量对应这个控件,例如为m_RichEdit;
2) 在initdialog函数中,初始化这个控件
	m_RichEdit.GetDefaultCharFormat(m_cf);
	m_cf.cbSize=sizeof(CHARFORMAT);
	m_cf.dwMask=CFM_COLOR|CFM_CHARSET|CFM_FACE;
	m_cf.crTextColor=COLOR_NORMAL;
	m_cf.bCharSet=GB2312_CHARSET;
	memcpy(m_cf.szFaceName,"宋体",4);
	m_RichEdit.SetDefaultCharFormat(m_cf);
	m_RichEdit.SetBackgroundColor(0,RGB(200,200,200));
	m_Font.CreatePointFont(120,"宋体");
	m_RichEdit.SetFont(&m_Font);
3) 制作几个功能函数:
void XXXX::ClearMsg()
{
	m_RichEdit.SetWindowText("");
}
void XXXX::ShowMsg(CString str,COLORREF dw,BOOL bBold)
{
	CHARFORMAT cf;
	m_RichEdit.GetDefaultCharFormat(cf);
	cf.dwMask=CFM_COLOR|CFM_PROTECTED;
	cf.dwEffects=CFE_PROTECTED;
	if(bBold) 
	{
		cf.dwMask|=CFM_BOLD;
		cf.dwEffects|=CFE_BOLD;
	}
	cf.crTextColor=dw;
	//------------
	m_RichEdit.HideSelection(1,0);
	m_RichEdit.SetSel(0,-1);
	m_RichEdit.SetSel(-1,-1);
	m_RichEdit.SetSelectionCharFormat(cf);
	m_RichEdit.ReplaceSel(str);
}
void XXXX::OnRicheditCopy() 
{
	m_RichEdit.Copy();
}
void XXXX::OnRicheditSaveas() 
{
	LPCTSTR lpszFilter="文本文件(*.txt)|*.txt|所有文件|*.*|";
	CFileDialog fd(0,"txt",NULL,0,lpszFilter);
	fd.m_ofn.lpstrTitle="保存文件...";
	if(fd.DoModal()==IDOK)
	{
		CString str;
		m_RichEdit.GetWindowText(str);
		CFile file;
		if(!file.Open(fd.GetPathName(),CFile::modeCreate|CFile::modeWrite)) return;
		file.WriteHuge(str,str.GetLength());
		file.Close();
	}
}
void XXXX::OnRicheditSelectall() 
{
	m_RichEdit.SetSel(0,-1);
}
 
 
3. 创建浏览目录窗口
#include <Shlobj.h>
	UpdateData(TRUE);
	char szDir[MAX_PATH];
	BROWSEINFO bi;
	ITEMIDLIST *pidl;
	bi.hwndOwner = this->m_hWnd;
	bi.pidlRoot = NULL;
	bi.pszDisplayName = szDir;
	bi.lpszTitle = "请选择目录";
	bi.ulFlags = BIF_STATUSTEXT | BIF_RETURNONLYFSDIRS;
	bi.lpfn = NULL;
	bi.lParam = 0;
	bi.iImage = 0;
	pidl = SHBrowseForFolder(&bi);
	if(pidl == NULL)  return;
	if(!SHGetPathFromIDList(pidl, szDir))   {
		return;
	}
	else { 
		strPath = szDir;
	}
 
4. 判断文件夹是否存在以及创建文件夹
Header: Declared in Shlwapi.h. 
Import Library: Shlwapi.lib.
        CString strDirPath = m_strSavePath;
	strDirPath += "\\";
	strDirPath += m_strDeviceName;
	if(!PathIsDirectory(strDirPath)){
		if(!CreateDirectory(strDirPath,NULL)){
			MessageBox("创建目录失败!");
		}
	}
 
 
5. CFileDialog 构造函数参数说明
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );参数意义如下:


bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
lpszDefExt 指定默认的文件扩展名。
lpszFileName 指定默认的文件名。
dwFlags 指明一些特定风格。
lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如: 
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";
文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
 
6. 创建多级子目录函数
BOOL CGlobal::CreateMultipleDirectory(const CString& strPath)
{
	CString strDir(strPath);//存放要创建的目录字符串
    //确保以'\'结尾以创建最后一个目录
    if (strDir.GetAt(strDir.GetLength()-1)!=_T('\\')){
        strDir += (_T('\\'));
    }


	CStringArray   strArray;
	CString strTemp;//一个临时变量,存放目录字符串
	strTemp.Empty();
    BOOL bSuccess = TRUE;//成功标志
    //遍历要创建的字符串
    for (int i=0;i<strDir.GetLength();++i){
        if (strDir.GetAt(i) != _T('\\')) 
        {//如果当前字符不是'\\'
            strTemp += (strDir.GetAt(i));
        }
        else 
        {//如果当前字符是'\\'
			strArray.Add(strTemp);  //将当前层的字符串添加到数组中
            strTemp += _T('\\');
        }
    }
	
    //遍历存放目录的数组,创建每层目录
    for (i = 0 ; i < strArray.GetSize() ; i++){
		CString strDirPath = strArray.GetAt(i);    
		if(!PathIsDirectory(strDirPath)){     // 判断目录是否存在
			bSuccess = CreateDirectory(strDirPath, NULL) ? TRUE:FALSE;  // 不存在,创建目录
			if(!bSuccess){
				break;
			}
		}
           
    }
	
    return bSuccess;
	
}
 
7.十六进制字符串转换为十进制数
int H2D(CString str)
{
	char** g=NULL;
	return (int)strtol(str,g,16);
}
 
8. 如何判断某个对象是哪个类的实例
IsKindOf(RUNTIME_CLASS(CXXXX)) , ASSERT_KINDOF(类名, 类指针);
 
9.16进制的字符串转化为16进制数
使用sscanf;例如:
CString strText,
DWORD dwTT;
sscanf(strText,"%x",&dwTT);
char* p = "0x1b";
char* str;
long i = strtol(p, &str, 16);

 
10. 从文档指针中得到视图指针
POSITION pos = pDoc->GetFirstViewPosition();
CView* pView = pDoc->GetNextView(pos);
并且可以从视图指针得到Frame指针
CFrameWnd *pFrame = pView->GetParentFrame();
11. 动态添加动态库指令:
#pragma comment(lib, "XXX.lib")
12.用CString作为Key使用CMap
CMap在用CString做key类型时,ARG_KEY要选LPCTSTR 
 CMap<CString, LPCTSTR, int, int> typeMap;
    typeMap.SetAt(_T("ONE"),1);
    typeMap.SetAt(_T("TWO"),2);
    int nValue = 0;
    BOOL ret = typeMap.Lookup(_T("ONE"), nValue);
    ret = typeMap.Lookup(_T("THREE"), nValue);
    ret = typeMap.Lookup(_T("TWO"), nValue);
关键是ARG_KEY要选LPCTSTR
 
13.Windows精确定时
 
LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率 QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart;// 获得初始值 Sleep(100); QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart;//获得中止值 dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒  
 
14. 关于float转DWORD和DWORD转float
DWORD dw  = 0;  
float f1 = 0.25;   
cout<<"f1 = "<<f1<<endl;    
dw = *((DWORD*)&f1);  
cout<<"dw = *((DWORD*)&f1):  "<<dw<<endl;    
f1 = 0.0;  
cout<<"f1 = 0.0:  "<<f1<<endl;  
f1 = *((float*)&dw);  
cout<<"f1 = *((float*)&dw):  "<<f1<<endl;  

运行结果如下
f1 = 0.25
dw = *((DWORD*)&f1):  1048576000
f1 = 0.0:  0
f1 = *((float*)&dw):  0.25
其实这就是利用了编译器转型的手段,这里float和DWORD都是4个字节长度,通过以上手段转型,不会丢失二进制的数据,所以也就不会丢失原始数据。

*((DWORD*)&f1),首先获取一个float指针,然后将其强制转换为DWORD类型的指针,最后解引用,获取的是一个DWORD类型的值,*((float*)&dw)则是同理
 
15 .字符串转化为10进制数/10进制数转化为字符串
 
字符串转化为10进制数: strtol( const char *nptr, char **endptr, int base );
 
10进制数转化为字符串:
 

char *_itoa( int value, char *string, int radix );

 
 

 
 

16.判断两个矩形是否相交:

 
 

BOOL Intersects(const CRect& rect1,const CRect& rect2) { rect1.NormalizeRect(); rect2.NormalizeRect(); return !(rect1 & rect2).IsRectEmpty(); }

 
 

 
 

17.批处理直接删除注册表命了:

 
 

reg delete HKEY_CURRENT_USER\Software\XXX\XXXX /f

 
 

直接用/fc参数就可以了,不需要其他的参数

 

 

        
VC 与MATLAB接口编程方法与实现(转) 摘 要 本文简介了VC++和MATLAB特点,探讨了MATLAB与VC++接口编程的三种方法,并详细论述了MCC和COM组件接口编程的方法和实现过程。研究表明:采用VC++和MATLAB 接口编程方法降低了编程难度,较好地发挥了两者各自的优势。     关键词 MATLAB;VC++;MCC;COM;接口编程     MATLAB是美国MathWorks公司研制开发的一种科学计算软 阅读详情

相关推荐

VC6.0编程经典实例深入剖析

本文还有配套的精品资源,点击获取 简介:本教程详细解读了Microsoft Visual C++ 6.0(VC6.0)这一经典集成开发环境的使用,通过丰富的实例分析,帮助读者深入理解并掌握C++编程的基础知识和应用技巧。教程内容覆盖从基本语法、数据类型、函数使用、面向对象编程,到内存管理、输入输出流、MFC框架、异常处理和调试技巧等多个方面。通过实际项目案例,如GUI程序或...

weixin_42097508的博客 1099

c语言vc里设置光标位置,VC设置鼠标光标方法

一、在MFC中设置鼠标光标1、载入系统光标::SetCursor(::LoadCursor(NULL,IDC_HAND));注意:LoadCursor第一个参数必须为NULL,否则会载入失败。如果以以下方式调用,则会失败:::SetCursor(::LoadCursor(AfxGetApp()->LoadCursor(IDC_HAND)));或::SetCursor...

weixin_30632267的博客 2111

深入理解VC串口编程与调试

Windows API(Application Programming Interface)是一系列函数、宏、数据类型和结构体的集合,用于与Windows操作系统交互。串口通信涉及的API主要集中在Winbase.h头文件中。以下是一些常用的Windows API函数及其用途:CreateFile:用于打开和创建文件或设备,包括串口设备。:用于关闭句柄(包括串口句柄)。:用于设置串口参数。:用于获取当前串口的配置。ReadFile:用于从串口读取数据。

weixin_30299319的博客 741

MFC 设置光标 SetCursor(HCURSOR hCursor)用法。

VC++ 6.0 设定光标可以使用SetCursor(HCURSOR hCursor)来设定,如果是新手,建议在WM_SETCURSOR消息响应函数中设置,你可以在别的地方设置,但是需要自己控制光标的变化。        1、使用系统预定义的光标:        使用ClassWizard为视图或者对话框添加WM_SETCURSOR消息的响应函数OnSetCursor();在函数中,使用Set

曾伟的专栏 1万+

基于IDEA与Mill构建Windows下的Chisel开发环境——香山处理器源码解析实战

本文详细指导如何在Windows系统下使用IDEA集成开发环境和Mill构建工具搭建Chisel开发环境,并以香山处理器源码为实战案例进行解析。内容涵盖环境准备、源码获取、工程构建、IDEA配置优化及代码阅读技巧,帮助开发者高效学习硬件设计语言。

a1b2c3d的博客 717

西门子smart能搜到cpu但连接当前IP地址失败

将ip地址改到同一网段 本机为192.168.1.119就是192.168.1.1网段,但plc在192.168.0.1网段,所以显示ip连接失败,改为同一网段192.168.1.xxx即可(为避免ip冲突尽量改到200往后最大255)如果显示这一步,那么你的物理连接是没有问题的,应当是plc和电脑并不在同一网段导致的问题。输入ipconfig 查看本机网段与plc是否为同一网段。此电脑就不在同一网段所有造成通讯失败,接下来解决这个问题。win+r打开运行,打开cmd。再次尝试,如果还是报错,那么。

weixin_62678581的博客 9867

VC小技巧15个

VC小技巧15个king fan2002/12/6一、 一次只运行一个程序实例下列两种方式都可以实现,建议采用第二种方式:1、 if( FindWindow(NULL,"程序标题"))          exit(0);2、BOOL CDemoTBarEApp::InstanceIsRun(){ HANDLE m_hMutex; m_hMutex = ::CreateMutex(NULL, T

kind_li的专栏 1256

Arduino程序设计(十)8×8 共阴极LED点阵显示(MAX7219)

本文主要介绍8×8 LED点阵显示实验,分别是:1、介绍MAX7219点阵模块;2、点阵显示部分图形;3、点阵显示数字 0~9 及 26 个英文字母。1、通过上述两个点阵实验,了解了8*8点阵显示的基本原理;2、通过SPI通信控制点阵显示,学会了Arduino用SPI通信方式控制外设。

Alice的博客 1万+

VC 鼠标消息WM_SETCURSOR

VC 鼠标消息WM_SETCURSOR   OnSetCursor由消息   WM_SETCURSOR   触发      The   WM_SETCURSOR   message   is   sent   to   a   window   if   the   mouse   causes   the   cursor   to   move   within   a   w

djf_1985的专栏 2902

先进封装技术的一些优缺点探讨

半导体封装技术是半导体制造过程中的关键环节,它不仅保护了芯片免受物理损伤,还提供了电气连接和散热功能。随着技术的发展,出现了多种先进的封装技术,每种技术都有其特定的应用场景和优缺点。

阿拉伯梳子的专栏 2170

【肝帝一周总结:全网最全最细】十万字python教程,学不会找我!教到你会为止!!内容超多,建议收藏慢慢看!

文章目录前言一定要看python入门python缩进Python注释Python 变量1. 定义理解2. 变量名命名3. 分配多个值4. 输出变量5. 全局变量 前言一定要看 python能干什么?有什么用?好处在哪?不要我讲了,这不是我在博客该讲的,言简意赅就是:通俗易懂,上手快,实用强。我会根据自己个人理解以及国外官网翻译为中文对大家进行讲解。完整源码我也会在最下面带上地址。内容过多,我不会全部演示,你完全可以复制粘贴到自己的pycharm上运行即可。 不管是国内的菜鸟教程还是我在这里的翻译,至少你跟

全栈川川 5万+

VC:设置光标(鼠标)形状

一、从文件加载光标图标 HCURSOR hcur=::LoadCursorFromFile("AniCur.ani"); //加载光标 ::SetClassLong(GetSafeHwnd(),GCL_HCURSOR,(LONG)hcur); 二、加载系统光标 SetCursor(LoadCursor(NULL,IDC_HAND)); 三、从资源加载光标 SetCursor(LoadCursor(NULL,MAKEINTRESOURCE(ID...

翻肚鱼儿的博客 1028

WS2812和homeassistant握手

本文学习了WS2812和homeassistant握手,后期会分享更多有趣物联网的操作从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。...

vor234的博客 811

初识Unbuntu的C语言编译及VIM、GCC、MakeFile的使用

初识Unbuntu的C语言编译及VIM、GCC、MakeFile的使用输出HelloWord程序main函数与sub子函数ubuntu系统gcc 命令行方式编译windows系统下VC6.0编译 输出HelloWord程序 1.用vim创造一个新的名为HW的.c文件 vim HW.c 2.编写HelloWord程序 #include<stdio.h> int main(){ printf("Hello Word!\n");} 3.编译 gcc HW.c -o text 4.运行程序进行测试

weixin_51109735的博客 571

TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践

本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。

LXY_LOVE36的博客 372

[AI8051U入门第一步]环境安装和按键控制流水灯

本文介绍了AI8051U单片机的开发环境搭建及GPIO应用。主要内容包括:1)通过ISP软件完成Keil开发环境配置;2)AI8051U特性介绍,包括32位8051内核、浮点运算单元及丰富外设;3)GPIO输入输出模式解析,并附流水灯控制代码;4)提供完整的系统初始化、延时函数及LED控制代码实现。文章配套资源包含完整工程代码,适用于智能硬件及物联网开发。

sinat_58149788的博客 671

matlab vc 编译器,精通VC与MATLAB联合编程——编译器的使用

作者:邓科下载源代码在上一章中对MATLAB 编译器做了简要介绍,并介绍了如何将m文件转换成VC可调用的dll文件,在这章中介绍如何利用编译器将m文件转换成对应的C/C++文件,并在VC中调用。这章节中的例子是在第四章中介绍过的解线形方程组。首先要保证编译器设置正确,编译器的设置可以参考前面两章的内容。如果以前已经进行了配置就不需要这一步。1、在MATLAB中编写如下函数:function [x]...

weixin_29582919的博客 2469

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

用VC进行COM编程

转载处:http://blog.sina.com.cn/s/blog_9b477e8d01015vq5.html 这篇文章是给初学者看的,尽量写得比较通俗易懂,并且尽量避免编程细节。完全是根据 我自己的学习体会写的,其中若有技术上的错误之处,请大家多多指正。 1。为什么用COM 2。用VC进行COM编程,必需要掌握哪些COM理论知识 一、为什么要用COM   软

月落满楼 1276

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中ADO编程

介绍VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。   正文一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘

馋嘴猪没胃口 3186

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC 串口编程的方法介绍-VC API 串口编程_VC串口控件

对于VC 串口编程初学者来说,您应该首先看看这篇文章,本文主要介绍了VC 串口编程所用到的几种常方法,每种方法都有各自的优缺点,大家应该选择最适合自己的方法进行VC串口开发。   我首先将VC 串口编程方法分为两大类,第一类为利用VC 串口控件进行编程,第二类为直接调用Windows api的编程方法,我称之为VC API 串口编程。   第一类是主要是基于MFC串口编程的,这里所说的控件还包

CircleSquare的专栏 2192

VC与Matlab混合编程

转自: 本文主要介绍VC与Matlab混合编程的两种方法,并详细介绍了VC向Matlab传递复杂数据:结构体的方法,有详细代码说明。 Matlab 主要面对科学计算、可视化以及交互式程序设计的高科技计算环境,但由于Matlab开发平台上开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,将二

top_along的专栏 2034

Matlab与VC混合编程之一

Matlab与VC混合编程之一 1. 问题的提出,为什么需要用Matlab与VC混合编程 做工程项目时用的是VC,经常会用到科学计算的相关算法,比如矩阵求逆,求行列式,求微分方程组初值问题的数值解等问题。如果自己去编写相关的函数,首先需要去找一本较好的数值分析书,然后再根据书上的算法去编写相应的代码,之后再调试、测试,经常多次反复测试后,才可以放心使用。偷懒的方法也有,可以去网上搜索一些现成的代

zhangkunhn的专栏 1980

VC中进行office编程

原作者姓名 汪自军介绍VC中进行office编程的-操作word,可以设置文字的样式,新建表格,这里提供给大家一个类--CWzjWordOffice::CWzjOffice类,用来对WORD进行简单的操作。读者评分 3 评分次数 1 正文大家先看一下CWzjWordOffice类怎么使用    CWzjWordOffice wd; //定义一个操作word的对象    wd.Create(); /

snail8384的专栏 1729

在VC下使用标准的socket函数编程的步骤

在VC下使用标准的socket函数编程的步骤    socket是一种在Linux或者Unix下非常流行的网络编程方式,这种方式简单有效,可以很灵活的完成各种复杂的协议控制,个人感觉比使用MFC下的网络相关类库要来的更舒服一些,因为所有一切都是自己可控的。但是使用socket编程有一个非常不方便的地方在于,由于在Linux下没有一个像VC这样强大的调试平台,网络通信过程中的

不完美星空 1342

使用VC调用matlab engine编程

使用VC调用matlab engine编程       首先要在电脑中装VC和MATLAB,我的电脑装的是VC6.0和MATLAB7.1.       Matlab Engine 采用Client/Server的方式,通过ActivcX通道和Matlab接口来实现在VC编程环境中直接调用matlab中的指令。调用使用的函数是:engEvalSting。后面将讲到此函数的使用方法。

allset的专栏 1112

vc入门

一、VC是什么?学VC是学什么?首先VC是一个软件(IDE集成开发环境)(编译、编辑、调试)C和C++。但C++中的有些特性是不用的,例如I/O流,多态继承WindowsSDK(软件开发工具)VC的灵魂:MFC(微软基础类库)ATL(ActiveX模板类库)其他的SDK,如OpenGL,DirectX,ActiveMoive,DrawDib(WinG)VC是许许多多技术

我们一直在努力--by老虎爱吃鱼 2116
上一篇: IRP请求处理及完成机制
下一篇: 中国高储蓄率之惑
jiangdf
博客等级 码龄19年 86粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值