明知山有虎 , 偏向虎山行 http://blog.csdn.net/robotom

不放弃,不抛弃

徐先生ID:robotom
[修改头像]
6855次访问,排名12709好友2人,关注者2
Just do it.
http://blog.csdn.net/robotom
robotom的文章
原创 17 篇
翻译 0 篇
转载 0 篇
评论 2 篇
robotom的公告
DebuggerAide 1.0.1.103 Beta3版本已经开始做了。
最近评论
dandelionl:请教:电子地图是否最后会像物流业一样,前几年新闻还说非法,但现在中国邮政已经只占40%以下的市场,其余已经被瓜分了,还是计算机行业的特殊性造成电子地图会被牌照控制住?

对电子地图运营实施严格监管的原因有二:
一是地图属国家机密,比如大使馆、某些研发机构等不允许在地图上予以显示,必须对地图测绘、生产进行监管;
//问:地图属于国家机密还是地图可能包含的……
roger_77:有机会试试
robotom:雁过留声,人过留名.
不管是有同感还是异议,robotom都同样的欢迎您.


roger_77:有空要好好看看.希望从中能得到更多更好的启发.
GPS地图:,都是从不成熟走向成熟的,必然经历一个从婴幼儿期到儿童期到青少年期到中年期到老年期,最后迈向死亡的过程,只是时间的长短不同而已.中国地图市场也应如此.现在可以说处在儿童期,最多是青少年期,犯了错误还是可以纠正可以原谅的,可塑性还是很强的.毕竟中国地图市场的大格局还没有形成,至少不成熟,还存在很多变数.在这个时候,搞这么个牌照出来,无异于一记闷棍,一包猛药.在这个正在成长的关键时期, 更需要的……
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
相册
C_C++
存档

原创 C++软件移植方案(3)--GDI

新一篇: C++软件移植方案(4)--IPC

 

这次介绍图形编程接口(GDI)的移植方案。

图形接口

 

前置声明

 

class BPen;

class BBrush;

class BBitmap;

class BDC;

 

句柄

typedef  BHANDLE                    BHGDIOBJ;

typedef  BHGDIOBJ                   BHPEN;

typedef  BHGDIOBJ                   BHBRUSH;

typedef  BHANDLE                    BHDC;

typedef  BHANDLE                    BHWND;

typedef  BHANDLE                    BHBITMAP;

 

typedef  BULONG                            BCOLORREF;

 

struct   BColor {

       BColor(){ red=0;green=0;blue=0;alpha=0;}

       BBYTE    red;

       BBYTE    green;

       BBYTE  blue;

       BBYTE    alpha;     

};

 

 

BINLINE BCOLORREF BRGB( BBYTE r, BBYTE g, BBYTE b ){

       return (((BULONG)r) << 16) + (((BULONG)g)<<8) + ((BULONG)b);

}

 

BINLINE BCOLORREF BRGB( BBYTE a, BBYTE r, BBYTE g, BBYTE b ){

       return  (((BULONG)a)<<24) +  (((BULONG)r) << 16) + (((BULONG)g)<<8) + ((BULONG)b);

}

 

BINLINE BColor BCOLOR( BCOLORREF cr ) {

       BColor    color;

       color.alpha             = (BBYTE)     (cr >> 24);

       color.red         = (BBYTE)     (( cr >> 16 ) & 0xff );

       color.green            = (BBYTE)     (( cr >> 8 ) & 0xff );

       color.blue              = (BBYTE)     ( cr & 0x00ff );

       return  color;

}

 

 

struct BPOINT {

       BPOINT() { x=0; y=0; }

       BLONG x;

       BLONG y;

};

typedef BPOINT * LPBPOINT;

 

struct BRECT {

   BRECT(){ left = 0; top=0;right=0;bottom=0; }

   BLONG    left;

   BLONG    top;

   BLONG    right;

   BLONG    bottom;

};

 

 

GDI对象

class BAPI BGDIObj  : public BObject

{

public:

       BGDIObj();

       BGDIObj(  BHGDIOBJ hobj);

       virtual ~BGDIObj();

 

       BBOOL Attach( BHGDIOBJ hobj);

       BHGDIOBJ Detach();

       BHGDIOBJ Handle();

 

       BHGDIOBJ  operator()();   

       BBOOL operator()( BHGDIOBJ hobj);

       BBOOL operator=( BHGDIOBJ hobj);  

 

 

protected:

       virtual BVOID Destroy();

       BHGDIOBJ  m_hGDIObj;

};

 

画笔

class BAPI BPen : public BGDIObj

{

public:

       BPen();

       BPen( HPEN hpen);

       virtual ~BPen();

 

       BULONG CreatePen(

         BINT fnPenStyle,    // pen style

         BINT nWidth,        // pen width

         BCOLORREF crColor   // pen color

       );

 

       BHPEN  operator()();  

       BBOOL operator()( BHPEN hobj);

       BBOOL operator=( BHPEN hobj);

 

};

 

画刷

class BAPI BBrush : public BGDIObj

{

public:

       BBrush();

       BBrush(BHBRUSH hbrush);

       virtual ~BBrush();

 

       BULONG CreateSolidBrush(

               BCOLORREF crColor   // brush color value

       );

 

       BULONG CreatePatternBrush( BHBITMAP hbmp  );

 

};

 

位图

class BAPI      BBitmap : public BGDIObj

{

public:

       BBitmap();

       BBitmap(BHBITMAP hbmp);

       virtual ~BBitmap();

 

       BBOOL LoadBitmap( LPCWSTR lpszResourceName );

       BBOOL CreateCompatibleBitmap( BHDC hdc, BINT nWidth, BINT nHeight );

 

 

};

 

图形设备

class BAPI BDC   :  public BObject {

public:

       BDC();

       BDC( BHDC hdc);

       BDC( const BDC & dc );

       virtual ~BDC();

 

       BBOOL Attach( BHDC  hdc);

       BHDC  Detach( );

       BHDC  Handle() const;

       BBOOL CreateCompatibleDC( BHDC hdc);

       BBOOL CreateCompatibleDC( BDC & dc);

 

       BHDC  operator()()const ;

       BBOOL operator()( BHDC hdc);

       BBOOL operator=( BHDC hdc);

       BHDC  operator=( const BDC & dc );

 

 

       BHGDIOBJ SelectObject(

              BHGDIOBJ hgdiobj   // handle to object

              );

 

       BHPEN   SelectObject( BPen & pen );

       BHBRUSH SelectObject( BBrush &  brush);

      

       BCOLORREF SetPixel(

              BINT X,             // x-coordinate of pixel

              BINT Y,             // y-coordinate of pixel

              BCOLORREF crColor   // pixel color

              );

      

      

       BBOOL Polyline(

              BCONST BPOINT *lppt,  // array of endpoints

              BINT cPoints         // number of points in array

              );

      

       BBOOL Polygon(

              BCONST BPOINT *lppt,  // array of endpoints

              BINT cPoints         // number of points in array

              );

      

       BBOOL TextOut(

              BINT nXStart,       // x-coordinate of starting position

              BINT nYStart,       // y-coordinate of starting position

              LPCWSTR lpString,  // character string

              BINT cbString       // number of characters

              );

 

       BBOOL Rectangle( const BRECT & rc );

 

       BBOOL FillRect( const BRECT & rc );

 

       BBOOL Bitblt( BHDC hdcsrc, const BRECT &rcsrc, const BRECT &rcdst , BINT op );

      

      

protected:

       BHDC  m_hdc;

 

};

 

 

发表于 @ 2007年03月31日 10:26:00|评论(loading...)|编辑

旧一篇: C++软件移植方案

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © robotom