 |
白乔原创:二进制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,共阅读2906次,回复4次 |
|
|
 |
联网五子棋程序
|
|
| |
![工程快照[14,145字节]](/upload/2007/01/1047343491312.gif)
|
| |
| 支持两人联网的五子棋程序。
代码不错,张贴部分示例一下:)
////////////////////////////////////////////////////////////////////////////
//同时负责己方和对方落子后棋盘的更新,由g_bData判断是上述哪种情况 //
////////////////////////////////////////////////////////////////////////////
void CAppleChessDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if( g_bStart && !m_bFinish)
{
CPoint ptOrigin;
int counter;
if( !g_bData )
{
if( m_bIsBlack != g_bOwnBlack ) return;
if((point.x < 15) || (point.x > 255) || (point.y < 15) || (point.y >255))
{
m_strState = "请在棋盘内落子";
UpdateData(FALSE);
return;
}
...
|
|
| 作者:不祥 bluejoe张贴于2007-01-27 23:13:31.0,共阅读1806次,回复1次 |
|
|
 |
四国源码
|
|
| |
![工程快照[33,135字节]](/upload/2008/04/1047343491921.jpg)
|
| |
| ...这个也是我在源码之家下的,作者里面都有。我能力有限,还没整理出完整的VC++所有文件格式来。如果那位对军旗感兴趣的高手能看懂,能否传给我一份完整VC++文档吗?谢谢!
我的邮箱:haozi2007@gmail.com
qq:309394308
|
|
| 作者:云昊 haozi2006张贴于2008-04-20 00:55:01.0,共阅读680次,回复5次 |
|
|
 |
VC源码-神迹外挂.rar
|
|
| |
![工程快照[28,521字节]](/upload/2007/07/1047343491639.jpg)
|
| |
| 外挂 ...
|
|
| 作者:阿木 lewislau张贴于2007-07-13 13:39:38.0,共阅读1418次,回复1次 |
|
|
 |
白乔原创:不完整的升级游戏
|
|
| |
![工程快照[96,001字节]](/upload/2004/03/1016456633569.jpg)
|
| |
| 该升级游戏只是实现了界面部分,由于一直没有时间,其它地方都没有实现。
源码主要包括游戏主界面、创建游戏对话框、快速桌面切换等部分,希望能对大家有所帮助。
common[159,054字节]
以上所附工程不完整,编译报告缺少头文件。请大家下载common文件包,这是偶的所有文件包。可能其中的目录和工程里面的目录不大一致,但每个文件(注意对应.h的.cpp文件也要加入工程)肯定都能找到。哪位兄弟有空也可以帮忙把路径调整对了,弄个完整的工程传上来。
|
|
| 作者:不祥 bluejoe张贴于2004-03-18 21:08:40.0,共阅读3195次,回复5次 |
|
|
 |
FlashPlayer源代码
|
|
| |
![工程快照[31,262字节]](/upload/2004/03/1016454541580.jpg)
|
| |
| MacroMedia FlashPlayer源代码,包含MP3解码、FLASH文件播放等模块。
|
|
| 作者:不祥 bluejoe张贴于2004-03-18 20:31:47.0,共阅读4185次,回复7次 |
|
|
 |
VC保存和显示数据库图像(JPG、JPEG)
|
|
| |
![工程快照[15,903字节]](/upload/2007/01/1047343491332.gif)
|
| |
| 简述关键代码如下:
1、保存图片数据到数据库
以下是代码片段:
//JPG图片保存到数据库
try
{
_RecordsetPtr pRecordset;
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset->Open("SELECT * FROM jpg",_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);
pRecordset->AddNew();
pRecordset->Fields->Item["jpgid"]->Value = (_variant_t)m_JPGId;//jpgid
VARIANT pvList;
SetPictureToVariant(pvList,(unsigned char *)m_pJPGBuffer);
pRecordset->Fields->Item["jpgimage"]->AppendChunk(pvList); //JPG图像文件
VariantCl ...
|
|
| 作者:joinclear bluejoe张贴于2007-01-29 17:07:38.0,共阅读7870次,回复13次 |
|
|
 |
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,共阅读4293次,回复1次 |
|
|
 |
网页检查器
|
|
| |
![工程快照[10,401字节]](/upload/2007/03/1047343491385.png)
|
| |
| 定时检查网站状态是否正常。
检查方法:指定url,定期连接,查看返回结果中是否含有指定字符串。
如果检查url1失败,然后继续检查url2是否成功,如仍失败,提示是否保存url1返回的页面内容。
可把检查记录保存到文本。
间隔时间以秒为单位,最小10秒。
程序可最小化至Tray。
各位可根据自己需要在这个基础上修改。
|
|
| 作者:Aug Aug2000张贴于2007-03-14 12:06:16.0,共阅读1824次,回复3次 |
|
|
 |
四国军棋游戏
|
|
| |
![工程快照[50,888字节]](/upload/2005/07/1047343491230.gif)
|
| |
| 类似于联众世界中的四国军棋游戏,分为客户端(包括大厅)和服务器端。
可用于局域网内2人或者4人对战,支持复盘功能。
首先要运行服务器端(Server.exe),
然后启动大厅程序(Game.exe),
坐好位置后,就可以进行游戏了。
献给喜欢军旗游戏的朋友。
下载后,直接进行解压到一个目录下就可以了。
其中 abcd.war 为复盘文件,可以使用 JunQi.exe 打开。类似于联众世界中的四国军棋游戏,分为客户端(包括大厅)和服务器端。
可用于局域网内2人或者4人对战,支持复盘功能。
首先要运行服务器端(Server.exe),
然后启动大厅程序(Game.exe),
坐好位置后,就可以进行游戏了。
献给喜欢军旗游戏的朋友。
下载后,直接进行解压到一个目录下就可以了。
其中 abcd.war 为复盘文件,可以使用 JunQi.exe 打开。类似于联众世界中的四国军棋游戏,分为客户端(包括大厅)和服务器端。
可用于局域网内2人或者4人对战,支持复盘功能。
首先要运行服务器端(Server.exe),
然后启动大厅程序(Game.exe),
坐好位置后,就可以进行游戏了。
献给喜欢军旗游戏的朋友。
下载后,直接进行解压到一个目录下就可以了。
其中 abcd.war 为复盘文件,可以使用 JunQi.exe 打开。 ...
|
|
| 作者:不祥 younggle张贴于2005-07-25 22:43:06.0,共阅读6456次,回复5次 |
|
|
 |
给 资源管理器 加上文件夹大小显示[双版本]
|
|
| |
![工程快照[99,145字节]](/upload/2004/06/1047343491130.jpg)
|
| |
| 来自 sanran 的一个部分类,修改了部分实现,修改了原来的计算错误,当作业了...打开资源管理器,在标题兰单机鼠标右键,选择 folder size 即可.初次计算可能会慢,以后就好了.
使用方法,把release.rar 解压,之后得到一个 fs.dll . 随便你放到哪里,之后 开始--运行-- regsvr32 drive:\path\fs.dll , 即可,不想用了就 regsvr32 /u drive:\path\fs.dll
这里包括2个版本,一个是显示 KB,MB,GB单位的,但是不支持资源管理器的排序.另外一个版本是统一以MB为单位,可以在资源管理器里面排序的,大家自己选择使用.
winme or later ...;)见代码,其中类可重用
|
|
| 作者:不祥 Bccv张贴于2004-06-02 12:33:13.0,共阅读5088次,回复9次 |
|
|
 |
类似于WINAMP播放软件的窗口粘接移动的例子
|
|
| |
![工程快照[9,563字节]](/upload/2007/01/1047343491318.gif)
|
| |
| 类似于WINAMP播放软件的窗口粘接移动的例子
功能:实现窗口之间的粘接.
在一个窗口移动到要接近另一个窗口时, 它就会自动贴到另一个窗口.
在已经粘接到主窗口时,主窗口在移动,其他粘接到一起的窗口就一起动.
在粘接到一起的窗口一起动时,同其他没有粘接到一起的窗口也有粘接效应. 就是靠近时,就粘接.
注:粘接分:左右边粘接,上下边粘接,角于角粘接(有兴趣的可以扩充)
代码示例:
void CMainDialog::OnMoving( UINT nSide, LPRECT lpRect )
{
CTest4App *pApp = (CTest4App *)AfxGetApp();
CRect rMovedRect;
CPoint ptCurCursor;
//用来保存旧的连接状态
BOOL bIsLinkedOfMainAndSecond,bOldIsLinkedOfMainAndThird,bOldIsLinkedOfSecondAndThird;
//保存旧的连接状态
bIsLinkedOfMainAndSecond = pApp->m_bIsLinkedOfMainAndSecond;
bOldIsLinkedOfMainAndThird = pApp->m_bIsLinkedOfMainAndThird ...
|
|
| 作者:金军 bluejoe张贴于2007-01-27 23:45:44.0,共阅读2276次,回复7次 |
|
|
 |
速算24点
|
|
| |
![工程快照[6,381字节]](/upload/2008/07/1047343491974.gif)
|
| |
| 刚才看到有人写的速算24点,其实我以前也写了个,(用C#写的)。输出的结果还挺多的,算法方面没多大创新,就是重复计算,里面实现了表达式类,不只能计算+—*/,位运算也行。前提是运算符是二完运算符,增加运算符很简单,只要增加相应函数,再改一点代码就行了。具体各位看看源码就可以了,里面有位运算的实现,但没有使用,大家参照加减乘除来增加位运算。
|
|
| 作者:annidy annidy张贴于2008-07-29 19:05:19.0,共阅读159次,回复0次 |
|
|
 |
白乔原创:手机串口通讯软件FreePhone
|
|
| |
![工程快照[25,013字节]](/upload/2004/04/1047343490847.gif)
|
| |
| 欢迎使用FreePhone 测试版(v3.04.02)!
测试版具有以下功能限制:
程序每次运行最多只能发送3次短信;
短信群发数目上限为3条;
短信串联数目上限为3条;
FreePhone v3.04.02具有以下功能:
手机串口连接;
语音拨号;
读取、写入手机/SIM卡电话本;
读取手机短信(包括已接收、已发送、未发送短信);
建立并维护本地电话本、短信记录;
建立并维护本地呼叫记录(包括未接电话、已接电话、已拨电话);
发送短信,支持群发、串联;
新短信自动接收、提醒;
呼入电话提醒;
FreePhone v3.04.02具有以下特点:
界面简单清晰,操作方便;如图所示:
便捷的右键菜单操作;
便捷的系统通知栏图标操作;如图所示:
用户控制灵活,用户随时可以取消当前操作,杜绝“无响应”;
对话框界面采用了CTrayIconDialog类。
通讯类采用基于CTaskedPort开发的CMobile类。
FreePhone v3.04.02版权归 掌上先锋 所有,欢迎访问主页!欢迎反馈:bluejoe@etang.com
|
|
| 作者:不祥 bluejoe张贴于2004-04-23 09:22:14.0,共阅读3897次,回复2次 |
|
|
 |
BBS联赛作品B5001
|
|
| |
![工程快照[164,616字节]](/upload/2004/05/1047343491017.gif)
|
| |
| 本软件除了正常的计算器功能外,最大的特点是可以更换皮肤,这里提供了风格完全不同的四种界面。各个界面除了背景图片和按钮图片可以自由更换外,按钮位置、按钮个数、按钮功能都可以随界面的不同而自定义。
界面一:默认界面,作为科学计算器使用,按钮中的”_”是最小化按钮,”C/S”按钮是菜单按钮,用来换界面和开关声音,其他的按钮与标准计算器相同。
计算器1.0演示版,功能不全,Bug多多,仅供演示,概不负责^_^
解压缩可直接使用!
这个程序只是一个系列工程中的小小实验,主要是为了验证自绘控件、换肤技术和界面设计的相关内容,同时也是为了参加这次的bbs程序设计大赛。由于一开始并没有明确的选题,因此计算器的算法核心部分没有认真编写和调试,短短三天写出来的程序完全没办法实现计算器的真正功能,而我现在要出差了,可能不能在规定时间内作任何修改了,我希望有哪有兴趣的同仁跟我组队参赛,帮助我完成算法核心内容。
有兴趣的可以给我发邮件:hadren@263.net,请不要再bbs里面发信,我出差了!我会把源程序附上,并且以组队的名义参赛,但是前提是有热情有恒心,能够真正为了给白云争光、为学校争光而作这件事情!(当然不能比我的算法还差,我的就够烂的了^_^)
如果在15号之前还没有人想和我组队的,我就只好这样子上传了,不过我还是希望有人能 ...
|
|
| 作者:不祥 bluejoe张贴于2004-05-06 21:30:22.0,共阅读2567次,回复1次 |
|
|
 |
白乔原创:基于字符任务的串口通讯开发包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,共阅读7220次,回复15次 |
|
|
 |
对话框 上放置 很多的 控件,
|
|
| |
![工程快照[51,218字节]](/upload/2007/05/1047343491491.jpg)
|
| |
| 对话框 上放置 很多的 控件,很好的示例
|
|
| 作者:heartofdra heartofdra张贴于2007-05-28 20:50:50.0,共阅读2893次,回复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,共阅读3774次,回复5次 |
|
|
 |
BBS联赛作品B1002
|
|
| |
![工程快照[55,958字节]](/upload/2004/05/1047343490977.gif)
|
| |
| 3DMin用户手册.chm3DMin简介
3DMin是一款模仿3DSMax的小型三维图形制作软件。
因为是模仿3DSMax, 3DMin拥有和3DSMax一样友好的用户界面与操作方式。
因为是一款小型软件,3DMin能完成的功能远不如3DSMax,它只提供了一些基本形体的建模,有限的子物体编辑和少量的材质种类。
不过,也正是因为它的小巧,使其有许多其它方面的优势:程序极小,无需安装,起动快,占用内存少。新的东东还没完成, 没时间啦, 只好把两年前的图形学作业搬过来, 凑合着用一下仿3dsmax界面及基本操作, 自我感觉界面和用户交互做得还可以, 呵呵
该作品目前尚无源代码。
|
|
| 作者:不祥 bluejoe张贴于2004-05-06 21:42:59.0,共阅读3975次,回复8次 |
|
|
 |
蓝风习作: 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,共阅读1448次,回复3次 |
|
|