 |
白乔原创:二进制XML存储方案BinXML
|
|
| |
![工程快照[18,154字节]](/upload/2007/02/1047343491353.gif)
|
| |
| BinXML是我个人杜撰出来的名字,不知道是否合适,也不知道是否已存在类似的解决方案。在vcer.net上我将前一段时间的这个BinXML方案贡献出来,希望能够与广大vcer分享。
当时问题的背景是这样的,项目需要确定存储方案,这种方案需要满足如下要求:
生成的单机板exe尽可能的不依赖于其它软件,如:数据库管理系统;
存储的数据最好能够方便的拷贝,以满足项目的上报、汇总的功能;
存储的格式以后可能还会变,变化不频繁,但是最好能支持这种变化;
只需要数据的持久化与反持久化的功能,不需要查询统计等复杂功能;
存储的数据中可能包括一个或者多个的文件附件,如:word文档;
存储的数据可能被不同的平台使用,如:windows或者linux;
作为web项目的一部分,除了提供VC的接口之外,存储的数据格式需要提供java的接口;
我首先考虑到了MsAccess格式,文件型数据库,方便拷贝,而且表的设计很柔性化。在windows环境下,MsAccess似乎可以不需要再安装额外的驱动,但是在linux环境下,如何被java调用是个问题(当然,这个问题也是可以解决的,但是很别扭)。其次,使用RDB还有一个问题:数据的层次表达与多值问题,将树型数据扁平化存储的方案是有的,但是,将几层简单的节点拆分成N个表格,岂不是杀鸡用牛刀?
其次的考虑当然是XML,然而XML是基于 ...
|
|
| 作者:白乔 bluejoe张贴于2007-02-28 12:51:33.0,共阅读2932次,回复4次 |
|
|
 |
snoopy每日一译-CWaveFile--一个操作和表示WAV数据的类
|
|
| |
![工程快照[10,263字节]](/upload/2004/04/1047343490891.gif)
|
| |
| 介绍:
我先从简单介绍数字声音和它在计算机中的文档开始。很久很久以前,声音信号,像其他信号一样,用连续波形表示。它们被称作模拟信号。
模拟信号有很多优点,其中一个优点是它和物理变化一一对应。例如:当我们说话,我们的声带发生震动,声波通过空气传播。使用模拟仪器,我们很容易记录和保存声波(例如使用磁带)。但模拟信号也有一个很不好的缺点:抗干扰能力差。
数字信号没有这个缺点,因为数字表示可以有冗余数据。通过冗余数据的信息,即使传输过程中信号发生严重变化,也可以恢复原来的信号。因此数据信号被广泛使用:通讯、领航、医药、声音处理、计算机等。
我知道你更干兴趣的问题是:数字信号在计算机中是怎样存储的?我怎样处理它?我不想深入解释数字信号原理。你,作为一个程序员,必须知道的只有一件事:数字信号是一个数组(你会得到你自己的数组,如果你读完这篇文章的话)。对于声音数字信号,它可以是8位或16位的数字。
现在有大量的声音数字信号存储的标准(AU, VOC, WAVE, AIFF, AIFF-C, and IFF/8VX),但是实际上,微软的WAV文件使用得最广泛。
WAVE文件格式:
所有的WAVE文件符合RIFF规范。因此,WAVE文件满足以下条件:
由独立的数据块(称为chunk)组成,这些数据块组织称树状结构。
每个数据块由一个块头和数据组成。
RIFF文件的第一块 ...
|
|
| 作者:不祥 ycr40张贴于2004-04-28 22:05:32.0,共阅读4309次,回复1次 |
|
|
 |
速算24点
|
|
| |
![工程快照[6,381字节]](/upload/2008/07/1047343491974.gif)
|
| |
| 刚才看到有人写的速算24点,其实我以前也写了个,(用C#写的)。输出的结果还挺多的,算法方面没多大创新,就是重复计算,里面实现了表达式类,不只能计算+—*/,位运算也行。前提是运算符是二完运算符,增加运算符很简单,只要增加相应函数,再改一点代码就行了。具体各位看看源码就可以了,里面有位运算的实现,但没有使用,大家参照加减乘除来增加位运算。
|
|
| 作者:annidy annidy张贴于2008-07-29 19:05:19.0,共阅读167次,回复0次 |
|
|
 |
白乔原创:基于字符任务的串口通讯开发包CTaskedPort
|
|
| |
![工程快照[76,199字节]](/upload/2004/03/1046577766008.jpg)
|
| |
| 做过串口通讯的VCer肯定都熟悉MsComm控件和CodeProject上的CSerial。也许更多的程序员更愿意使用不需要控件的CSerial。但是不幸的是,CSerial类仅仅完成对底层串口通讯的封装,有时候并不如MsComm控件好用。
CSerialPort为bluejoe在CSerial基础上开发的类,支持开启事件监视线程。CTaskedPort为CSerialPort的派生类,它支持基于任务的事件处理。
用户发送一条命令(如:AT<cr>),可能就需要等待串口的回应(如:OK)才决定做下一步,这个AT命令其实就是一项任务(CPortTask),任务的结束一般需要用户指定关键词(如:OK或者ERROR)。CTaskedPort自动将命令和关键词列表封装成一个任务。本包主要包括以下几个类:
CSerialPort:类似于CSerial的类,类声明如下:
class CSerialPort
{
public:
void AssertConnected();
CWinThread * GetListener();
CString ReadAll();
CWinThread * EnableListener(BOOL bEnable = TRUE);
BOOL SetDCB(DCB * pDCB, int nHandshaking);
...
|
|
| 作者:不祥 bluejoe张贴于2004-03-04 15:11:50.0,共阅读7248次,回复15次 |
|
|
 |
对话框 上放置 很多的 控件,
|
|
| |
![工程快照[51,218字节]](/upload/2007/05/1047343491491.jpg)
|
| |
| 对话框 上放置 很多的 控件,很好的示例
|
|
| 作者:heartofdra heartofdra张贴于2007-05-28 20:50:50.0,共阅读2909次,回复7次 |
|
|
 |
snoopy每日一译-CDialogSK 一个可以设定皮肤的对话框类
|
|
| |
![工程快照[27,033字节]](/upload/2004/04/1047343490836.jpg)
|
| |
| 该类从CDialog继承。它支持以下特性:
1、如果在windows2000或windowsxp下运行,你可以选定任何色彩作为透明色。
2、如果在windows2000或windowsxp下运行,整个对话框可以半透明(translucent)。
3、可以加入一个Bitmap作为背景。Bitmap可以是资源,也可以是外部文件或一个位图的句柄。
4、可以设置对话框的风格:标题、居中、伸展;调整对话框的大小为位图的大小。
5、可以按对话框的任何位置移动它,也可以禁止移动。1、在你的工程中加入CDialogSK.h和CDialogSK.cpp
2、将你的对话框类的头文件(.h)和源文件(.cpp)中所有"CDialog"替换为"CDialogSK"
3、在你的对话框类的头文件(.h)中加入#include "CDialogSK.h"
译者注:原文2和3点的顺序相反,但自动替换时会出问题。
4、如果你计划使用位图作为背景,请将对话框的Properties(属性)-Styles(风格)设定为
style=popup,border=none,并将Title Bar的检查框置为不选中。
5、在OnInitDialog的最后加入一些代码如下例子:
BOOL CSkinDialog_DemoDlg::OnInitDialog()
{
...
EnableE ...
|
|
| 作者:不祥 ycr40张贴于2004-04-21 14:16:14.0,共阅读3796次,回复5次 |
|
|
 |
蓝风习作: VC中ADO 连接数据库保存显示JPG图象
|
|
| |
![工程快照[57,457字节]](/upload/2007/10/1047343491742.jpg)
|
| |
| void CRMSDlg::OnButton_in() //从库中提取并显示
{
// TODO: Add your control notification handler code here
try
{
// "pic" 是字段名,该字段保存着 OLE 对象
long nSize = m_pRecordset->GetFields()->GetItem("pic")->ActualSize; // 获取字段 "pic" 的当前单元的大小(在分配内存空间时要用到)
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRecordset->GetFields()->GetItem("pic")->GetChunk(nSize);// 读取 OLE 对象 --> varBLOB
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(BYTE *pBuffer = new BYTE [nSize+1]) // 申请必 ...
|
|
| 作者:不祥 bluewind张贴于2007-10-14 13:10:18.0,共阅读1472次,回复3次 |
|
|
 |
CListCtrlTest
|
|
| |
![工程快照[10,053字节]](/upload/2008/05/1047343491945.png)
|
| |
| ...这个主要是对CListCtrl的从新封装,主要是能够对每个栏中加入图片和文字,另外图片在拦中出现的位置根据配置文件去决定,这个是我对自己封装的类的测试,直接用的是原代码进行的,可执行程序中几个button中都是对外的接口
|
|
| 作者:在路上 hurry281张贴于2008-05-16 12:05:22.0,共阅读451次,回复1次 |
|
|
 |
guilib fo vs2005
|
|
| |
![工程快照[738,332字节]](/upload/2007/12/1047343491822.jpg)
|
| |
| ...最新的guilib1.1.5是在vc6下的,上传一个vs2005的版本。
|
|
| 作者:悠悠 lightevil张贴于2007-12-06 14:51:00.0,共阅读1233次,回复3次 |
|
|
 |
snoopy每日一译-操作EXCEL和符号分隔文本的类CSpreadSheet
|
|
| |
| 有些时候我们希望将输出的数据存到EXCEL文件或一些符号分隔文本文件(像逗号分隔、Tab符分隔)。CSpreadSheet类封装了对这些文件的读写操作。CSpreadSheet类的目标是简单易用,其主要的特性如下:
1、构造一个新的EXCEL文件或符号分隔文本文件,并在其中写如行或单个的单元。
2、读取行、列或单个单元。
3、覆盖、插入或追加行。
4、将已存在或新的EXCEL文件转化成符号分隔文本文件;反之亦然。
操作EXCEL和符号分隔文本的类CSpreadSheet
by:Yap Chun Wei 2002.2.19
from:codeGuru
翻译:snoopy
环境:vc++,NT4,win2000,winxp,win95/98
介绍:
有些时候我们希望将输出的数据存到EXCEL文件或一些符号分隔文本文件(像逗号分隔、Tab符分隔)。CSpreadSheet类封装了对这些文件的读写操作。CSpreadSheet类的目标是简单易用,其主要的特性如下:
1、构造一个新的EXCEL文件或符号分隔文本文件,并在其中写如行或单个的单元。
2、读取行、列或单个单元。
3、覆盖、插入或追加行。
4、将已存在或新的EXCEL文件转化成符号分隔文本文件;反之亦然。
在阐述本类的个类函数之前,我们先看看本类的一些限制条件:
1、需要 ...
|
|
| 作者:Yap Chun Wei ycr40张贴于2004-04-25 09:19:43.0,共阅读6073次,回复6次 |
|
|
 |
snoopy每日一译-在MFC和ATL工程中加入GIF动画
|
|
| |
![工程快照[41,055字节]](/upload/2004/04/1047343490845.gif)
|
| |
| snoopy每日一译-在MFC和ATL工程中加入GIF动画
by:Oleg Bykov 2001.12.7
from:codeGuru
翻译:snoopy
环境:vc6 win95 win98 nt4 win2000CPictureEx的目的是为了支持JPEG和GIF格式的图片。使用OleLoadPicture函数和IPicture接口不难显示静止的图片,但是处理GIF动画又是另外一种情形了。
在网上翻箱倒柜搜寻一番后,我发现只有一个可用的免费选择:George Tersaakov发表在CodeGuru上的COM组件。不幸的是,在我测试的一些GIF中,发生了错误。当然,我可以购买一个第三方的库,但那样的话,我将为一些我不需要的功能付款。因此,我决定尝试编写我自己的类。基本的出发点是将一个GIF动画分成多个帧,然后用熟悉的OleLoadPicture和IPicture组合显示它们。彻底读完GIF87a和GIF89a规范,我写了这个类。需要注意的是:CPictueEx不仅可以显示GIF(包括GIF动画),还可以显示JPEG、BMP、WMF、ICO、CUR(所有OleLoadPicture能辨别的)。后来,我写了其ATL版的类。怎样使用MFC版的CPictureEx:
1、在你的对话框中加入一个静态文本控件(Static Text)或图片控件(Picture Control ...
|
|
| 作者:不祥 ycr40张贴于2004-04-22 08:45:50.0,共阅读8005次,回复9次 |
|
|
 |
对话框上的 窗口分割,鼠标可调整
|
|
| |
![工程快照[14,604字节]](/upload/2008/04/1047343491929.jpg)
|
| |
| ...对话框上的 窗口分割,鼠标可调整
|
|
| 作者:heartofdra heartofdra张贴于2007-05-28 20:59:38.0,共阅读2100次,回复2次 |
|
|
 |
构建Delaunay三角网的VC源程序
|
|
| |
![工程快照[12,523字节]](/upload/2007/03/1047343491391.gif)
|
| |
| void CDelaunayView::OnDelaunay()
{
// TODO: Add your command handler code here
CDelaunayDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(!pDoc->PointList->GetCount())
{
char str[100];
ostrstream osr(str,100);
osr<<"请用鼠标左键在窗口里选择要进行三角剖分的顶点"<<'\n'
<<" 谢谢合作"<<'\0';
CString output(str);
MessageBox(output);
return;
}
PointCls *p1, *p2, *p3;
POSITION pos4, pos5;
createFirstTri(pDoc->PointList,
pDoc->TriList);
pos4 = pDoc->TriList->GetHeadPosition();
TriAngle* pTriSeed = (TriAngle*)pDoc->TriList->GetAt(pos4);
p ...
|
|
| 作者:cxklgm (Thomas) iter张贴于2007-03-19 13:09:58.0,共阅读3916次,回复8次 |
|
|
 |
实现Outlook样式的列表框
|
|
| |
![工程快照[22,591字节]](/upload/2004/05/1047343490911.gif)
|
| |
| Outlook样式的列表框
|
|
| 作者:不祥 bluejoe张贴于2004-05-01 00:57:23.0,共阅读3177次,回复2次 |
|
|
 |
邮件发送类CSMTPConnection
|
|
| |
| CSMTPMessage testm;
testm.AddMultipleRecipients(_T(" PJ Naughter < pjn@indigo.ie > , My Boss <someboss@company.com> ; Joe <joe@ms.com>"));
//Create the SMTP connection
CSMTPConnection smtp;
//Connect to the server
if (!smtp.Connect(_T("127.0.0.1")))
{
CString sResponse = smtp.GetLastCommandResponse();
TRACE(_T("Failed to connect to SMTP server\n"));
return FALSE;
}
//Create a test message
CSMTPMessage m;
CSMTPAddress From(_T("Some Person"), _T("someone@yourdomain.com")); //Change these values to your settings
m.m_From = From;
CSMTPAddress To(_ ...
|
|
| 作者:不祥 bluejoe张贴于2004-04-30 13:39:03.0,共阅读2460次,回复1次 |
|
|
 |
动画图标
|
|
| |
![工程快照[15,040字节]](/upload/2007/05/1047343491473.jpg)
|
| |
| ...左上角的图标是动画显示的
|
|
| 作者:heartofdra heartofdra张贴于2007-05-28 20:25:50.0,共阅读2147次,回复5次 |
|
|
 |
outlook bar
|
|
| |
![工程快照[35,188字节]](/upload/2007/05/1047343491545.jpg)
|
| |
| ...outlook bar
|
|
| 作者:heartofdra heartofdra张贴于2007-05-28 21:58:35.0,共阅读1339次,回复1次 |
|
|
 |
vtkexample:读入模型和图像
|
|
| |
![工程快照[1,517,038字节]](/upload/2007/04/1047343491413.bmp)
|
| |
| 一个用vtk写的小程序,可以读入多种格式的模型和图像。
|
|
| 作者:彗星闪过 dingdongliu张贴于2007-04-13 10:30:30.0,共阅读2888次,回复7次 |
|
|
 |
tab ,分割
|
|
| |
![工程快照[46,314字节]](/upload/2007/05/1047343491578.jpg)
|
| |
| ...tab ,分割
|
|
| 作者:heartofdra heartofdra张贴于2007-05-28 22:41:55.0,共阅读2025次,回复3次 |
|
|
 |
DlgAndButtonOwnerDraw
|
|
| |
![工程快照[38,874字节]](/upload/2007/12/1047343491827.jpg)
|
| |
| bmpDlg和bmpButton实现登陆界面
|
|
| 作者:yunti yunti张贴于2007-12-08 21:33:47.0,共阅读863次,回复0次 |
|
|