![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
真正的程序员用C
文章平均质量分 72
jiadelin
计算机技术专家
展开
-
itoa函数的用法
函数原形 char *itoa(int value, char *string, int radix)Parameters(参数说明)value: Number to be converted(将要被转换的值)string: String result(转换的结果)radix: Base of value; must be in the range 2 – 36(转换原创 2007-04-10 14:44:00 · 5402 阅读 · 0 评论 -
用Vc6写Windows 服务
// ServiceTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#en原创 2008-10-10 09:22:00 · 673 阅读 · 0 评论 -
关于PE可执行文件的修改(1)
在windows 9x、NT、2000下,所有的可执行文件都是基于Microsoft设计的一种新的文件格式Portable Executable File Format(可移植的执行体),即PE格式。有一些时候,我们需要对这些可执行文件进行修改,下面文字试图详细的描述PE文件的格式及对PE格式文件的修改。 1、PE文件框架构成 DOS MZ header DOS stub PE header S转载 2008-10-13 09:56:00 · 431 阅读 · 0 评论 -
关于PE可执行文件的修改(3) 给PE文件打补丁
--------给PE文件打补丁--------我们都知道在PE文件中有很多空隙,所以我们就有可能给PE文件打补丁.做法是在空隙中插入我们的补丁代码.下面我通过实例来教大家给win97的notepad.exe(记事本)程序来打个补丁,使得notepad.exe运行时先运行我的pach.exe程序,方法是:1.在notepad.exe的section间隙中插入ShellExecute(0,"ope转载 2008-10-13 10:19:00 · 501 阅读 · 0 评论 -
关于PE可执行文件的修改(2)
我们将用“Module”这一术语来表示已装入内存的可执行文件或DLL的代码、数据及资源。除了程序中直接用到的代码和数据以外,一个Module也指Windows中用于判断代码及数据在内存中位置的支撑数据结构。在16位Windows中,支撑数据结构在Module Database中(Hmodule指向这个段)。而在32位Windows中,这些数据结构放在了PE部首中。对于PE文件,首先应该知道,磁盘中转载 2008-10-13 10:10:00 · 591 阅读 · 0 评论 -
用C语言编写Windows服务程序的五个步骤
前一段时间我写了一篇通过写服务的形式来达到一些监视程序运行的目的的文章,至于如何在windows下写服务我没有详细介绍,今天就让我们一起看看如何来写服务程序。 Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写原创 2008-10-10 10:23:00 · 316 阅读 · 0 评论 -
pragma用法
每一个C和C++的实现(也就是编译器)都提供对一些其机器硬件或者操作系统独特性的支持。 举例来说,某些程序需要精确控制数据在内存中的摆放,或者控制某些函数接受传入参数的方式。#pragma指令在保证大部分C和C++语言的兼容性的前提下,为每一个编译器提供了实现机器硬件和操作系统独特性的方法。从定义上即可看出,Pragmas指令是某种机器或者操作系统独有的,并且不同编译器也常常有原创 2008-11-13 15:22:00 · 397 阅读 · 0 评论 -
串口通信编程
在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。本文我们只介绍API串口通信部分。 串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不原创 2008-11-23 11:37:00 · 779 阅读 · 2 评论 -
程序优化方法
1 用一维数组代替多维数组;2 用整数运算代替浮点运算;3 用移位操作代替乘法和除法运算;4 用查表法代替运算;(空间换效率)5 数据类型越小越好;6 减少函数调用,用inline进行嵌套;(空间换效率)原创 2010-03-04 08:11:00 · 266 阅读 · 0 评论 -
VC中CSOCKET类的编程_TCP
发送数据: class CClientSocket : public CSocket m_SockClient.Create(); //创建套接字 m_SockClient.Connect(szIP, nPort); m_SockClient.SetDialog(this); //关联对话框 m_SockClient.Sen原创 2011-10-30 11:16:14 · 1003 阅读 · 1 评论 -
VC中CSOCKET类的编程 UDP
UDP协议 发送数据时: CSocket m_SendSock; //定义一个网络套接字 m_SendSock.Close(); char szHostName[128] = {0}; gethostname(szHostName, 128); hostent *pHostent = gethostbyname(szHostName); char *pszIP原创 2011-10-30 11:04:29 · 1512 阅读 · 0 评论 -
VC与FLASH交互
FLASH动画在网络世界里随处可见,深受欢迎。如果在VC编程时集成SWF文件会给软件增色不少,并且VC还可与动画进行交互呢! 一、在VC工程中添加"shockwave flash object 控件",方法是:工程->增加到工程->compnonents and controls..., 在对话框中双击"Registered ActiveX Controls",原创 2013-03-04 09:37:02 · 1204 阅读 · 0 评论 -
VC6中ADO连接打开ACCESS,catch错误返回:无效指针
ADO连接打开ACCESS,catch错误返回:无效指针连接数据库,在自己机子上面一切正常(win7,vs6下调试)。换其他电脑(xp系统),连接提示连接失败,无效指针,以下是代码!#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF", "adoEO原创 2013-03-06 10:42:41 · 1135 阅读 · 0 评论 -
VC编程控制其他应用程序
工厂的UKEY生产流水线需要编号,外壳上的编号由激光打标机进行打标,由于编号和打标不在一起,容易造成UKEY内部编号与外壳编号不一致,需要两人工作,如果打标机打标同时对UKEY进行编号,就解决了以上问题。由于激光打标机软件没有接口,厂家支持也跟不上,我就想到了编写VC软件来控制打标软件。具体步骤如下: 1、先在网上下载SPY++; 2、找到主窗口: HWND hWnd原创 2013-03-01 18:17:20 · 1095 阅读 · 0 评论 -
经纬度算距离Java源码
#include "stdafx.h"#include #include #define EARTH_RADIUS 6371.004#define PI 3.1415926double rad(double d){ return d * PI / 180.0;}double getDistanceVer1(double lat1, double lng1,转载 2013-11-17 20:35:40 · 203 阅读 · 0 评论 -
堆(heap)和栈(stack)的比较
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量转载 2008-10-09 10:03:00 · 345 阅读 · 0 评论 -
VC中驱动编译方法
1. 安装DDK(有人问,重装系统之后是否可以还要再次安装DDK?回答是:如果ddk安装目录下的文件还在,那么不用再次安装了)2. 设置环境变量 添加一个用户环境变量DDKROOT,他的值应该是你所安装DDK的根目录。(比如在安装DDK时安装到了d:/WINDDK/2600,那么 DDKROOT的值应该为d:/WINDDK/2600) 如何设置环境变量: 右键单击我的电脑原创 2008-10-09 09:52:00 · 646 阅读 · 1 评论 -
vc调用dll
HINSTANCE hInst = LoadLibrary("********.dll"); HANDLE hDll; int port; if (hInst) { typedef HANDLE (WINAPI *LINK_COM)(int);原创 2007-04-11 09:39:00 · 648 阅读 · 0 评论 -
修改注册表添加IE信任站点及启用Activex控件
Windows Registry Editor Version 5.00[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/ZoneMap/Ranges]@=""[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVer原创 2008-07-17 12:06:00 · 2437 阅读 · 0 评论 -
tcp/ip基础知识
TCP/IP是个协议集,根据OS的七层理论,TCP/IP分为四层.分别是应用,传输,Interne和网络界面. 我们一般说TCP在传输层,而IP在Internet层. TCP/IP的应用程序包括我们平时经常用到的Ping,Telnet,Ftp,Finger等等 一、IP地址的概念 我们知道因特网是全世界范围内的计算机联为一体而构成的通信网络的总称。联在某个网络上的两台计算机之间在相互转载 2008-07-26 17:20:00 · 682 阅读 · 1 评论 -
VC数据类型转换
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。我们先定义一些常见类型变量借以说明int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="女侠程佩君";char temp[200];char *buf;CString转载 2008-07-26 14:16:00 · 390 阅读 · 0 评论 -
字符集编码详解
1. ASCII 我们需要了解的最早编码是ASCII码。它用7个二进制位来表示,由于那个时期生产的大多数计算机使用8位大小的字节,因此用户不仅可以存放所有可能的ASCII字符,而且有整整一位空余下来。如果你技艺高超,可以将该位用做自己离奇的目的:WordStar中那个发暗的灯泡实际上设置这个高位,以指示一个单词中的最后一个字母,同时这也宣示了WordStar只能用于英语文本。 由于字节有转载 2008-07-30 13:24:00 · 349 阅读 · 0 评论 -
关于Debug和Release之本质区别
关于Debug和Release之本质区别 --------------------------------------本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错3. 怎样“调试” Release 版的程序--------------------------------------转载 2008-05-16 16:05:00 · 247 阅读 · 0 评论 -
修改VC程序标题
在winApp类中的InitInstance()加入这句: m_pMainWnd->SetWindowText("我的标题"); 在VC6中没有语法提示时,删除源码目录下的*.opt和*.ncp这两个文件重新打开即可.原创 2008-08-20 10:42:00 · 457 阅读 · 0 评论 -
VC6向导生成资源管理器界面
一、框架生成 打开VC6,新建一个 MFC AppWizard(exe) 工程; 1 在向导第一步中选择应用程序类型是"单文档",确保,在"文档/查看体系结构支持"检查框中打上对勾; 2 在向导第二步中根据实际情况选择是否支持数据库,我这里选择不支持数据库; 3 在向导第三步中选择不需要复合文档支持;也不需要复合文件支持; 4 在向导第四步中默认即可原创 2008-08-20 08:55:00 · 1496 阅读 · 0 评论 -
使用mscomm.ocx编写串口通信控件
同事在做一个串口通信控件,写好以后在别的计算机上使用报winocc.cpp 345错误,我上网查找问题原因,确认是MSCOMM控件需要CREATE, 经过反复查找资料,终于调通,现具体代码如下: if (m_ComPort.Create(NULL,WS_CHILD,CRect(0,0,0,0),this,IDC_MSCOMM)) { AfxMessage原创 2008-09-03 10:44:00 · 1413 阅读 · 0 评论 -
HexEdit Control使用方法
在写一个项目中需要对二进制数据进行操作,结果在http://www.codeguru.com/Cpp/controls/editctrl/article.php/c539#more网站上下到了Hex Edit Control, 集成到程序中发现了一些问题,我把我使用的步骤及解决方法写出来供大家参考,以免再走弯路. 1.从http://www.codeguru.com/Cpp原创 2008-09-08 17:45:00 · 2958 阅读 · 1 评论 -
strftime()函数用法
我做了一个dll想调用CTime类,mfc动态链接库中不能使用CTime类,因为它使用了Windows动态链接库不支持的strftime函数。只好用中的方法解决. time_t t = time( 0 ); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y%m%d%H%M%S", localtime(&t) ); //格式原创 2008-09-12 10:26:00 · 8541 阅读 · 1 评论 -
编写浏览器使用的OCX全过程
随着互联网的飞速发展,现在的人们都习惯了打开浏览器进行工作,基于WEB的程序蜂拥而至,几乎变得无所不能。由于WEB脚本语言的限制,对于本地计算机的访问受到很大的限制。开发WEB的程序员都会因为WEB的打印而烦恼,对于WEB开发者来讲,更大的挑战还在后面。电子商务需要身份认证,需要访问本地计算机上操作人员的U-KEY, 还有诸如此类的读卡器、扫描仪等外围输入设备。 这所有的一切困难都原创 2008-09-12 13:30:00 · 4180 阅读 · 0 评论 -
键盘键值表
值 描述0x1 鼠标左键0x2 鼠标右键0x3 CANCEL 键0x4 鼠标中键0x8 BACKSPACE 键0x9 TAB 键0xC CLEAR 键0xD ENTER 键0x10 SHIFT 键0x11 CTRL 键0x12 MENU 键0x13 PAUSE 键0x14 CAPS LOCK 键0x1B ESC 键0x20 SPACEBAR 键0x21 PAGE UP 键0x22 PAGE DOW原创 2008-09-28 17:58:00 · 601 阅读 · 0 评论 -
CFileDialog的用法
CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY |原创 2008-10-07 14:30:00 · 708 阅读 · 0 评论 -
在VC中应用MSXML DOM操作XML文件
导入MS XML Parser 运行库#import 声明变量MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ; **)解析XML::CoInitialize(NULL);HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDo原创 2008-10-08 15:40:00 · 1126 阅读 · 0 评论 -
经纬度算距离C源码
#include "stdafx.h"#include #include #define EARTH_RADIUS 6371.004#define PI 3.1415926double rad(double d){ return d * PI / 180.0;}double getDistanceVer1(double lat1, double lng1,转载 2013-11-17 20:43:53 · 248 阅读 · 0 评论