自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (4)
  • 收藏
  • 关注

原创 用栈实现括号匹配的检验

根据网上的一个例子改写.原文地址:http://blog.sina.com.cn/s/blog_4eac972c0100blyn.html#include #include #define MAX_STACK_SIZE 10#define INCREMENT_SIZE 10#define OVERFLOW -1#define OK 1#define ERROR 0typedef char ElemType;typedef int RESULT;typedef struct

2011-01-28 11:09:00 940

原创 关于malloc和new

<br />malloc赋予的变量如果想在别的地方使用,则这个变量必须定义成全局的.<br />new赋予的变量则可以定义成局部的.

2011-01-28 08:41:00 495

原创 如何判断鼠标进入了一个窗口

响应鼠标的MOUSE_MOVE消息 void CAscPatchDlg::OnMouseMove(UINT nFlags, CPoint point) // point是客户区坐标{    // TODO: Add your message handler cod

2011-01-26 16:08:00 938

原创 如何获取树节点目前是折叠还是展开状态

UINT nstate = GetTreeCtrl().GetItemState(hParentS, TVIS_EXPANDED);if ((nstate & TVIS_EXPANDED) != 0) //展开的{}

2011-01-26 12:00:00 2690 1

转载 利用互斥体(MUTEX)实现程序只允许运行一个实例

实现程序只允许运行一个实例的方法有利用互斥体,以及利用程序的某些属性(比如窗口类名称和窗口对象名称)等。这里贴一段利用利用互斥体(MUTEX)实现程序只允许运行一个实例的代码!#include #include using namespace std; int

2011-01-25 15:46:00 1612

原创 构造次优查找树的算法

根据书上的例子写出的算法代码:// 存储待查询的内容的结构体元素typedef struct _ELEMKEY_STRU{    char c;  // 内容    int key; // 权值}ELEMKEY;// 求元素low到元素high的权值和int SumKey(ELEMKEY elemkey[], int low, int high){    int sum = 0;    for (int i = low; i     {        sum += e

2011-01-25 14:19:00 1948

原创 VC下忽略大小写比较两个字符串大小

stricmp和strnicmp

2011-01-24 16:54:00 1633

原创 连续定义两个变量

<br />int m, n = 20;<br />只会初始化n.

2011-01-22 13:15:00 1930

原创 一个位图资源当成多个位图使用

<br />关键点:<br />(1)编辑位图资源总是一堆像素点堆起来的,在资源编辑器中看到的位图中那一个个的小方块就是一个个像素点.<br />(2)VC提供了一个函数 INDEXTOSTATEIMAGEMASK(index),这个函数就可以根据索引只获取位图中的某一部分为自己所用,如何实现呢,看如下:CImageList m_imgState;<br />CTreeCtrl m_TripleTree;<br /><br />m_imgState.Create(IDB_BITMAP_STATE

2011-01-20 11:48:00 572

原创 按大小顺序存储的折半查找

<br />int Search(int *aValue, int key, int low, int high)<br />{<br /><br />    while (low <= high)<br />    {    <br />        int mid = (low + high)/2;<br />        <br />        if (key == aValue[mid])<br />            return mid;<br /> 

2011-01-20 09:11:00 569

原创 监视哨

<br />监视哨可以防止越界,可以不必每次查找时都检查是否到末尾了.<br /> <br />前提条件: 0号元素不存内容,留出来存监视哨<br /> <br /> <br />/* 没有采用监视哨的算法 */<br />int SeqSearch(RecordList l, KeyType k)<br />{<br />    l.r[0].key = k;<br />    i = l.length;<br /><br />    while (i>=1 && l.r[i].k

2011-01-19 18:18:00 3441 1

原创 CMap

1.LookUp函数可以查找位于某键的值,并传递的是引用参数,虽然是引用,但缺不保存函数中更改的数据 (不解!!...)所以,要保存更改,需要再使用SetAt.2.GetStartPostion得到的并不一定是第一个元素,所以用它结合GetNextAssoc轮询,得到的位置并不一定是顺序的位置,总之,不好用

2011-01-19 16:29:00 846

原创 输出字符和宽字符

WCHAR w = L'T';    int len = sizeof(w);    printf("%d/n", len);    wprintf(L"%c/n", w);    char c = 's';    int lenc = sizeof(c)

2011-01-19 12:00:00 472

原创 关于UpdateData

<br />在函数中间设置了关联变量的值后,要灵活的调用UpdateData以显示.

2011-01-19 09:54:00 503

原创 关于CButton关联整型变量的问题

CButton关联整型变量,值从0开始,为0,1,2....注意: 0是带有group选项的那个按钮.有些特殊情况容易犯错误,比如左边有个"开启"按钮,右边有个"关闭"按钮,"开启"按钮ID值比"关闭"按钮ID值小,关联一个nOpen变量,通常我们会把nOpen为1表示"

2011-01-19 09:53:00 824

原创 mysql 表增加一个字段并设置默认值

alter table T_DB_AutoBackup add  column bOpen int(4)  default 0 ;

2011-01-18 16:47:00 24020 2

原创 快速排序、冒泡排序

int Partition(int aValue[10], int low, int high) //完成一趟快速排序{ int pivot = aValue[low]; while (low < high) { while (low < high && aValue[high] >= pivot) {

2011-01-18 08:39:00 698 1

原创 第一次写函数模板,留个爪,哼哈

typedef struct _STU_STRU{    string strName;    WORD wAge;}STU_STRU;templatevoid MySort( CList &list)  // 注意由于CList的值会被改变,所以此处

2011-01-15 22:50:00 533

原创 进制,原码,反码,补码

<br />1.C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数<br />2.正数用原码表示,负数用补码表示<br />3。二进制数的四则运算<br />二进制数与十进制数一样,同样可以进行加、减、乘、除四则运算。其算法规则如下:<br />加运算:0+0=0,0+1=1,1+0=1,1+1=10,#逢2进1;<br />减运算:1-1=0,1-0=1,0-0=0,0-1=1,#向高位借1当2;<br />4.可能有同学这时

2011-01-14 14:35:00 539

转载 Ascii码对照表

ASCII码表<br />信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表,它的全称是“美国信息交换标准代码”。<br /> 八进制十六进制十进制字符八进制十六进制十进制字符00000nul1004064@01011soh1014165A02022stx102426

2011-01-13 22:16:00 420

转载 VIM设置代码折叠

<br />1. 折叠方式<br />可用选项 'foldmethod' 来设定折叠方式:set fdm=*****。<br />有 6 种方法来选定折叠:<br />          manual           手工定义折叠<br />          indent             更多的缩进表示更高级别的折叠<br />          expr                用表达式来定义折叠<br />          syntax           

2011-01-13 20:32:00 467

转载 Vim的一些常用命令

Vim是一个超级牛的编辑器,可以说是专为程序员设计的编辑器,强大的有些不可思议。不过其学习曲线稍显陡峭,前两天在网上找到一个小图表,比较全,如果对表中所列的命令学习熟悉以后,处理日常的文本就已经足够,所以贴出来,大家参考参考。Vim的牛B之处不在于其功能之繁多,更不在于其学习曲线之陡峭,而在于这些命令大都可以进行组合,比如,9yy命令表示复制9行内容,9表示要复制的行数,同样100dd表示删除

2011-01-13 20:30:00 389

原创 关于VC中使用结构体和字符串

1.严禁结构体中使用CString,不定什么时候会引起崩溃,尤其结构体用在堆中的时候2.字符数组用之前一定要memset(0),否则不定引起什么莫名其妙的问题

2011-01-13 10:09:00 596

原创 FindFirstFile读取文件目录

1.读取一个目录时,传递的目录应该带通配符,如C:/*.*2.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY 属性可以判断是文件夹3.这个函数会自动读出一个名为"."和".."的文件(夹),这两个文件(夹)是无效的,需要使用&& s

2011-01-12 15:40:00 1236

原创 输入法编程总结

1.操作系统使用ImeProcessKey查看你输入法有没有对当前按键做处理(写ImeProcessKey时处理返回true,没处理返回FALSE),如果返回true,则操作系统会调用ImeToAsciiEx,所以真正对按键的处理可以放在ImeToAsciiiEx中2.操作系统调用ImeToAsciiEx提供一块内存,IME在这个函数中产生消息,消息便可以放在这个内存中3.ImeProcessKey,操作系统首先把按键信息发给本IME,IME判断自己是否要处理该按键,如处理则作出相应处理并返回TRUE,否则

2011-01-11 11:29:00 1524

原创 宏的一种用途

<br />定义:<br />FILE *DebugLogFile = NULL;<br />#define DebugLog(n,f) (void)((DebugLogFile != NULL && nDebugLevel & n) ? (_ftprintf f,fflush(DebugLogFile)) : 0)<br />使用:<br /> DebugLog(1,(DebugLogFile,"ImeProcessKey/n"));<br /> <br />宏展开,把f用(DebugLogFile,

2011-01-09 10:52:00 466

原创 extern 声明

<br />使用了extern修饰了的变量只能在一个地方定义,其它地方都必须仅仅是声明。<br />举例,有a.c 和b.c两个文件;<br />a.c中  extern int n = 1;<br />那么b.c中引用这个n,只能声明:extern int n; 而不能定义extern int n = 2;<br /> <br />同样的,对于数组类型,也只能在一处定义,其余处声明,注意数组的声明方式:<br />int arr[];即[]表示这是个数组,但不写大小。

2011-01-08 21:46:00 631

原创 fflush函数

int fflush( <br />   FILE*stream<br />);<br /><br />如果stream是用于打开写文件,则这个函数会把当前stream的缓存(不必深究,系统提供)里面的内容写到文件里<br />如果stream是用于打开读文件,则这个函数会把当前stream的缓存清空。

2011-01-08 21:30:00 494

转载 VC6.0编译器参数设置

<br />VC6.0编译器参数的设置主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:<br /><br />/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h" /Fo"

2011-01-08 20:18:00 536

原创 c++ note

1.函数可以返回指针类型,表示为,如:int *Fun(){....}2.函数参数里面加个void表示什么参数都没有,即Fun()和Fun(void)是等价的3.函数形参是被分配内存空间的,这一点与函数内部局部变量本质上是一样的;而普通类型形参的传递便是实参内容的复制,也就是用实参的值初始化形参;引用类型的形参则跟引用类型的变量一样,是实参的别名4.int *p = 0;是把指针变量p初始化...

2011-01-08 17:25:00 868

转载 IPMSG飞鸽传书7——文件发送源码分析

DWORDWINAPITMainWin::SendFileThread(void*_sendFileObj){    SendFileObj *obj = (SendFileObj*)_sendFileObj;    fd_set      fds;    fd_set      *rfds = NULL, *wfds =&fds;    timeval     tv;    int         sock_ret;    BOOL        ret =

2011-01-08 11:33:00 1464 1

转载 IPMSG飞鸽传书6--文件传输解析

<br />这里继续讨论IPMSG飞鸽传书,前几天,详细的了解了IPMSG飞鸽传书的网络协议,详细分析并且实现了IPMSG飞鸽传书的消息传递过程,这里就IPMSG飞鸽传书中的文件和文件夹的传输做详细的说明。      在IPMSG飞鸽传书中,如果要进行文件或者文件夹的传输,首先需要做的就是消息的应答,通过UDP发送文件传输报文,另外的IPMSG飞鸽传书客户端收到报文后,使用TCP协议发送应答报文,这样就开始进行文件的传输了。  这里开启两个线程,线程1负责文件的传送,线程2负责文件的接受,下

2011-01-08 11:32:00 1413

转载 IPMSG飞鸽传书5——网络协议解析手记1

<br />相信很多人都使用过飞鸽传书,这个小工具在局域网传输数据高效而便捷,自己在大二的时候就想看看飞鸽传书的源码,但那时候自己的水平有限,这几天有机会重写飞鸽传书,也对IPMSG的网络协议做了深入的研究,这里也要感谢IPMSG的作者公开源代码。<br />  首先需要明确IPMSG的主要功能,IPMSG可以局域网通信、传输文件、传输文件夹,可以通过添加局域网外IP来实现网外的聊天与文件传输功能。我们先分析下IPMSG的聊天功能,IPMSG通过UDP协议实现聊天,当一个IPMSG的客户端运行开

2011-01-08 11:31:00 1338

转载 IPMSG飞鸽传书5——网络协议解析手记2

<br />每次IPMSG在收到上线通告报文后,都要查找相同ip的节点是否已经存在,只要和结构体成员host_ip比较就可以了,这样整个用户列表当中的成员是不会重复的。报文的发送主要依靠下边的函数实现,这里推荐下边的这种写法,特别是对与命令比较多的情况下,使用下边的好处就在与结构非常的清晰。<br /> <br />mode: 命令 msg: 附加信息 structsockaddr*p:网络信息fd:网络套接字描述符<br />int msg_send(constint mode,con

2011-01-08 11:31:00 982

转载 IPMSG飞鸽传书4——App类

<br />经过几周的艰苦奋战,终于对飞鸽传书(以下简称FG)的架构有了一个简单的了解,下面分类分析一下各个类的基本情况。<br />   首先是App类。和MFC中其他程序一样,FG中存在着一个App类,用来发送消息,创建和管理窗口等。<br />main函数如下:<br />//这里是主函数!!!!!!!!!!!!!!!调用app的run开始执行<br />//构造函数中有initapp等操作<br />int WINAPI WinMain(HINSTANCE hI,HINSTANCE, LPS

2011-01-08 11:30:00 920

转载 IPMSG飞鸽传书3——协议翻译

<br />最近看到一些朋友在编写网络程序是遇到一些问题,故把以前做IPMSG时翻译的文档贴过来,希望对网络编程新手有所帮助,在寻找编程项目的同学们也可参照此文档写出自己的IPMSG。<br /><br />本文只包含其中几个比较重要的命令以及运行机制的中文翻译,更详细的内容请参照文后的IPMSG 协议英文文档<br /><br />声明:下述协议内容略去了一些在编写程序过程中没有用到协议内容,最初的Ipmsg协议是用日文写的,下面协议内容由本人(cugb_cat)翻译自Mr.Kanazawa的英文

2011-01-08 11:27:00 742

转载 IPMSG飞鸽传书2——关于对话框

TWin是所有窗口的父类,TDlg是对话框子类,处理了WM_INITDILOG等消息,创建过程:首先aboutDlg = newTAboutDlg;然后Create(),最后Show();Create()是TDlg类的函数,首先把当前的TWin对象aboutDlg的指针加入到wndArray中,然后调用SDK函数CreateDialog来完成对话框的创建,然后进入TApp的WinProc,调用TDlg的WinProc函数来处理消息,发送WM_INITDIALOG消息,调用TAboutDlg类的EvCre

2011-01-08 11:25:00 1153

转载 IPMSG飞鸽传书1——编译源代码的方法

IPMessenger是一款局域网内部聊天、文件传输工具,具有很多优点,如数据通讯不需要建立服务器、直接在两台电脑间通信和数据传输,支持文件及文件目录的传输,安全快捷以及小巧方便等优异特点,因此很多公司都采用它作为部门、公司内部的IM即时通信工具。  IP Messenger在程序结构方面采用了WindowsSDK处理结构,通信方面采用了TCP/UDP通信方式,在文件传输处理方面采用文件映射技术,等等。通过分析IPMessenger的运行、工作原理,可以提高并加深对Windows处理流程

2011-01-08 11:24:00 3103

转载 GetSystemMetrics

下面是GetSystemMetrics函数参数nIndex的定义:SM_ARRANGE  返回是否预备最小化.SM_CLEANBOOT 返回系统启动方式:   0 正常启动   1 安全模式启动   2 网络安全模式启动 SM_CMOUSEBUTTONS

2011-01-07 13:12:00 549

转载 防止程序启动两次的方法CreateMutex()

<br /><br /> 在工程文件中, WinMain函数里加上以下代码(此代码在BCB6.0下运行):<br />HANDLE hMutex = CreateMutex(NULL, false, "Process");<br />         if (GetLastError() == ERROR_ALREADY_EXISTS)<br />         {<br />            CloseHandle(hMutex);<br />            Messa

2011-01-06 17:07:00 662

TCP/IP协议卷一

TCP/IP协议卷一,英文版 非得凑够20个字吗。

2011-12-27

飞鸽传输源码(VC6)

飞鸽211版代码,已经转换,可在VC6下编译通过

2011-12-26

simple.txt

用来被转换为.dic文件的.txt文件

2007-11-19

jsp由浅入深

jsp入门的好帮手,对jsp基础语法有原理性的阐述

2007-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除