看看我做的三维的界面 gis导航的 ,也顺便做个宣传 ,这个可不是位图 是 gis导航的东西
是使用网上的开源的东西 irrlicht(http://irrlicht.sourceforge.net/) 来开发的 。 我们的办公平台就是这个样
子的,我想是行政区域以及行政办公楼为初始界面。
昨天跟 msvdraw的作者取得了联系 ,他们将为我单独开辟一个地址供下载,其实是免费的 。呵呵 关键是也为他
们来个无偿的宣传,有兴趣的可以上去下载,界面库,最关键的是 界面库是msvdraw的,我只是花了 50 人民币
买来的,按照他们的意思,也就是意思意思的,他们目前正在做三维方面的东西,无暇顾及这个二维的图形。不管
那么多,我还是来说说我的吧,首先看看界面库中的东西
,如果你下载了,那么就可以跟着我熟悉这个界面库, 我分析了好多天,跟 bcgpro 比较了一下 ,太像了 ,呵呵
仅仅是在bcg上修改了名字(类名 跟文件名,我自己认为) ,所以 关于界面库我就不说什么了,你可以看看
bcgpro的使用说明。
忘记说了 msvdraw的 下载地址是 : www.msvdraw.com 我也不知道放上去了没有,我估计这个星期能差不
多 ,你可以关注,如果我下次发现放上去就及时的告诉你。
从明天, 不! 应该说是从下个星期开始我们将进行ipmsg的详细分析以及改造(让他支持 unicode)。因为我这
个星期搬家,公司都不存在了,我还能做什么呢。记得以前在青岛疗养的时候我的演讲 ,皮之不存,毛将附焉 。
我现在还能做什么呢? 不知道 ,那就从分析 ipmsg开始 。 什么?你没有 ipmsg的源码? 好的 跟我发送邮件
,我给你最新的源码 或者你自己去下载 ,不知道我的邮箱? 哈哈 那就自己下载吧 !
最新的 IP Messenger for Win ver2.5 alpha http://www.ipmsg.org/ipmsg-beta.html
首先看她的数据结构:
struct HostSub
{
//用户名
TCHAR userName[MAX_NAMEBUF];
//主机名
TCHAR hostName[MAX_NAMEBUF];
//地址
ULONG addr;
端口号
int portNo;
//重载了 == 来比较两个 hostsub
bool operator==(const HostSub & hostSub) // 比较 *this 和 s
{
if(_tcscmp(hostName,hostSub.hostName) ==0&&_tcscmp(userName,hostSub.userName)==0&&/
addr == hostSub.addr && portNo == hostSub.portNo)
return TRUE;
return FALSE ;
}
};
什么? hostsub是什么意思不知道,可别问我,我也不知道,等我知道了再告诉你,记得提醒我 hostsub是什么
意思
消息缓冲结构 。为了支持unicode ,我们使用了 TCHAR ,按照以前的想法 最好的是使用 CString ,但我看了一下源
码 这样的修改工作量更大,先这么着 ,以后再改,否则就没有升级版本了 呵呵 你说是不是?
struct MsgBuf
{
HostSub hostSub;
//版本号
int version;
//端口号
int portNo;
//信息包的端口号
ULONG packetNo;
//指令- 消息传递的命令
ULONG command;
//在消息缓冲中的扩展消息数据 ,等到下面获得数据后,我们在详细的分析
int exOffset; // expand message offset in msgBuf
//保留 没有使用
int dummy;
//消息缓冲中保存的数据
TCHAR msgBuf[MAX_UDPBUF];
// 初始化消息缓冲
void Init(MsgBuf *org)
{
if (org == NULL)
{
memset(this, 0, (TCHAR *)&this->dummy - (TCHAR *)this);
*msgBuf = 0;
return;
}
memcpy(this, org, (TCHAR *)&this->dummy - (TCHAR *)this);
_tcscpy(this->msgBuf, org->msgBuf);
_tcscpy(this->msgBuf + exOffset, org->msgBuf + exOffset);
}
};
今天就到这里,明天搬家,还有很多的事情要做.