预览模式: 普通 | 列表

MFC学习笔记之15:GetWindowRect,GetClientRect的总结

1.获取pWnd在屏幕上的大小和位置,包括边框:
CRect rc;
pWnd->GetWindowRect(&rc);

2.获取pWnd的大小,不包括边框:
CRect rc;
pWnd->GetClientRect(&rc);

3.获取pWnd在父窗体上的大小和位置,包括边框:
CRect rc;
pWnd->GetWindowRect(&rc);
pWnd->GetParent()->ScreenToClient(&rc);

分类:Win32&C++ | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 510

在Google Earth中使用GPS

在Google Earth中使用GPS(单击“开始”即可):
在Google Earth中使用GPS

我的GPS(模块型号为ST-92,主芯片是SiRF star III ,焊接在万用板上,呵呵):

ST-92 GPS 模块
 
电路原理图(Protel ddb文件)
点击下载此文件

此模块购于淘宝:http://trade.taobao.com/trade/detail/trade_snap.htm?tradeID=31648839867858&itemID=8256b9c5ab663e27eec29a00bf0149e4&xID=0db2

分类:杂谈随感 | 固定链接 | 评论: 2 | 引用: 0 | 查看次数: 584

10分钟将SQLite应用到自己的项目中

SQLite是一个跨平台,支持多种语言,开源的轻量级数据库,可以
作为Access的一个替代方案。
 
官方网站:
http://www.sqlite.org
 
本文中的简单应用使用Windows下的C++语言。

1.下载SQLite

SQLite command-line Tools:
http://www.sqlite.org/sqlite-3_6_22.zip
 
SQLite library DLL:
http://www.sqlite.org/sqlitedll-3_6_22.zip
只有dll和def文件,需要用工具生成.lib文件:
可以使用命令:LIB /DEF:sqlite3.def /machine:IX86
头文件sqlite3.h可以从SQLite的源码中复制过来。
 
SQLite本身不需要安装,可以直接使用。
 
源码下载地址:
http://www.sqlite.org/sqlite-source-3_6_22.zip
 
SQLite文档下载地址:
http://www.sqlite.org/sqlite_docs_3_6_22.zip
 
第三方的SQLite管理软件SharpPlus SQLite Developer:
http://www.sqlitedeveloper.com/downloads/SqliteDev361.zip

2.创建一个数据库

可以使用SQLite Developer创建,操作方法如同其他DBMS一致。
 
表结构如下:
Create TABLE "Users"(
ID integer Primary Key AUTOINCREMENT
,UserName
,NickName  
)

3.在C++中操作该数据库

#include <stdio.h>
 
#include "sqlite3.h"
#pragma comment(lib,"sqlite3.lib")
 
static int _sql_callback(void * notused, int argc,
                         char ** argv, char ** szColName)
{
    for (int i=0; i < argc; i++ )
    {
        printf( "%s = %s\n", szColName[i],
            argv[i] == 0 ? "NULL" : argv[i] );
    }
    return 0;
}
 
 
int main()
{
    sqlite3* db=NULL;
    //连接数据库
    int ret=sqlite3_open("./UserInfo.db",&db);
    if(ret!=SQLITE_OK)
    {
        printf("无法打开数据库:%s.\n",sqlite3_errmsg(db));
        return(1);
    }
 
    char *pErrMsg=NULL;
    char *szSql="Select * from Users";
    sqlite3_exec(db,szSql,_sql_callback,0,&pErrMsg);
    if(ret!=SQLITE_OK)
     {
        printf("SQL error:%s\n",pErrMsg);
        sqlite3_free(pErrMsg);
    }
 
    sqlite3_close(db);
 
    return 0;
}
 
执行结果:
ID = 1
UserName = dgx_lsyd3
NickName = 淡月清风
ID = 2
UserName = testUserName
NickName = testNickName

4.用.Net操作数据库
 

需要安装Provider:"System.Data.SQLite"。
下载地址:
http://sqlite.phxsoftware.com/
http://sourceforge.net/projects/sqlite-dotnet2/
 

分类:Win32&C++ | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 718

跨服务器,跨ASP.Net与ASP的Session共享

对于一个大型网站,常常不止一台服务器/站点,这些不同的服务器/站点可能同时运行着ASP,ASP.Net,PHP等多种Web应用程序,这些Web应用程序的域名,IP地址可能不同。这时候如果需要单点登录,就需要使用跨服务器,跨ASP.Net与ASP的Session共享技术。

本方案通过使用数据库、httpHandler、跨域Cookie等技术,实现了在尽量不修改原有代码的基础上,实现多个服务器之间共享Session。

关键技术如下:
1.用数据库存储序列化后的Session数据
2.用跨域Cookie实现多个Web应用程序对一个Cookie的访问(这个Cookie用来标记当前的客户端)
3.通过httpHandler,实现ASP.Net页面中的Session控制
4.通过在ASP文件中包含头文件,实现ASP页面中的Session控制

目前该方案已在某某局的系统上稳定运行一年多时间。
下面是该“跨服务器,跨ASP.Net与ASP的Session共享技术”方案的部署说明:
跨服务器,跨ASP.Net与ASP的Session共享技术.pdf

如果您的项目中正好需要这项技术,可与我联系。

分类:Web开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 627