FreeBSD中samba中文文件名问题的解决

我发现在FreeBSD中开启samba服务,如果在window中访问FreeBSD下的samba,中文文件名可以正常显示,同样使用linux访问FreeBSD下的samba,中文文件名也正常(使用mount -t cifs -o username=XX,passowrd=XX,iocharset=utf8 //192.168.1.2/share /mnt)

但是,如果用FreeBSD访问另一个FreeBSD下的samba,则不能正常显示文件名,需要特别配置samba,才能支持中文文件名,配置方法:

在/usr/local/etc/smb.conf中加入

display charset=UTF-8

dos charset=UTF-8

unix charset=UTF-8

此外,我一直采用root启动samba服务的方法(使用smbd),我的root用户的~/.profile中设置了:

export LANG=zh_CN.UTF-8

export LC_CTYPE=zh_CN.UTF-8

export LOCALE=zh_CN.UTF-8

export LC_ALL=zh_CN.UTF-8

至少,在使用上述.profile后的root启动samba服务,中文文件可以正常显示,至于,开机启动samba的方式我没有实验过。

FreeBSD的MBR被覆盖的修复方法

用 FreeBSD 的 MBR 覆盖现有的 MBR,您可以使用以下的命令:
# fdisk -B -b /boot/boot0 device
device 是要写入 MBR 的设备名,比如 ad0 代表第一个 IDE 磁盘,ad2
代表第二个 IDE 控制器上的第一个 IDE 磁盘

如果您要更改已安装的 boot1 和 boot2,请使用命令bsdlabel

e.g.
# bsdlabel -B diskslice
diskslice 是用于引导的磁盘和分区, 比如 ad0s1 代表第一个 IDE 磁盘上的第一个分区。
如果您在命令中只使用了磁盘名,比如 ad0,就会破坏磁盘上的所有分区。
这当然不是您所希望的,所以在按下 回车 之前
一定要对命令进行多次确认。

freebsd中tar使用技巧

网上查到的,没实验过,有空试试看

eg
tar -cvlf – / | split -a 2 -b 2000m – /mnt/big_backup.tar
or
tar -cv –exclude “/mnt” -f – / | split -a 2 -b 2000m – /mnt/big_backup.tar

You must specify the -l switch for tar, so it stays within one filesystem. Otherwise it’ll try to backup the backup file that split just created! This also means you’ll have to create a separate backup for each partition that you have.
cat big_backup.tar* | tar -tvf -
to extract it

Freebsd换大硬盘时使用dump进行数据迁移,备份

(注意:以下方法,2010.9.18日freebsd8.0下测试木有问题

用Freebsd当需要换大硬盘时,重装系统可能很多人都不愿采用,因此需要数据迁移,

我在网上搜了一下发现用tar,dd,dump等方法都可进行迁移,

1 我试验tar,没有搞定用tar支持中文文件名,所以放弃了tar

2 用dd,可以数据迁移,但是迁移后,由于是做的磁盘镜像,大的磁盘只能当小的用,放弃了dd

3 最终用dump实现了,实现步骤(我的方法可能比较笨,但是可行):

把原来的硬盘拆下,装上新硬盘,连载老硬盘的接口上(我的新硬盘和老硬盘接口是一样的),用光盘启动freebsd,用sysinstall,分区,label写入MBR

切记,label的时候最好要和原来的硬盘一致(大小不一致无所谓),如果你经验不足,可以选则最小化安装freebsd的方法,来安装个最小freebsd,分区步骤就包含在里面了。

把原先的硬盘重新装在原来的接口上,新硬盘换个接口,(如果新硬盘上有新系统,记得用newfs把新硬盘的分区格式化一下)

然后,根据你的分区情况,把新硬盘的分区挂载,然后进行数据迁移,例如,我想把老硬盘/usr目录迁移到新硬盘/usr(/usr在新硬盘分区假设为/dev/ad2s1b),需要:

mount /dev/ad2s1b /mnt

cd /mnt

dump -f- /usr | restore -f- -r

也可以对分区进行迁移,如dump -f- /dev/ada0s1a | restore -f- -r

迁移的时候最好把挂在/mnt下分区中的文件删除防止重名的文件

其他分区用类似方法进行迁移,迁移后记得用fsck检测硬盘

然后关机,把新硬盘撞到老硬盘的接口上,重新启动

注意:

如果忘记给新硬盘写MBR可以把老硬盘MBR复制过来,例如:

dd if=/dev/ad0 of=/dev/ad2 bs=512 count=1

VC下用CxShadeButton美化按钮

Introduction

With this class you can easily give a professional look to your buttons in few steps. No bitmap resources are needed - all bitmaps are generated at runtime. Parts of the code come from the CxSkinButton article.
The goal is to replace the standard buttons, check boxes and radio buttons with minimal modifications in the application code.

  1. Add "xShadeButton.cpp" and "xShadeButton.h" to the project.
  2. Include "xShadeButton.h" in the header file where the controls are defined
  3. Create (or edit) a member variable for each button you want to customize as
    CxShadeButton

    . If the Class Wizard doesn't show the

    CxShadeButton

    type, select

    CButton

    and then edit the code manually.

  4. In the window initialization add the
    CxShadeButton

    methods:

    Collapse
    BOOL CxShadeButtonDemoDlg::OnInitDialog()
    {
    	//	...
    
    	m_btn1.SetTextColor(RGB(255,0,0));
    	m_btn1.SetToolTipText("Button1");
    	m_btn1.SetShade(SHS_DIAGSHADE,8,10,5,RGB(55,255,55));
    //	...
    

CxShadeButton Class Members & Operations

CxShadeButton

is derived from

CButton

. The

BS_OWNERDRAW

style is added automatically, you don't need to set the "Owner draw" property in the resource editor. You can change some styles (flat, push-like, text alignment, group,...) using the resource editor, however not all the styles are currently supported.
If you change the aspect of the button at runtime, to avoid flicker first call the functions that don't cause invalidation (like

SetShade

,

SetIcon

or

SetFont

) and than invalidate the button, for example with

SetWindowText

, or directly with

Invalidate

.

Collapse
void SetShade(UINT shadeID=0, BYTE granularity=8,
              BYTE highlight=10,BYTE coloring=0,COLORREF color=0);
    Generates the button bitmaps.
    Important
  • <strong>shadeID</strong>

    : can be one of these effects:

    SHS_NOISE = 0
    SHS_DIAGSHADE = 1
    SHS_HSHADE = 2
    SHS_VSHADE = 3
    SHS_HBUMP = 4
    SHS_VBUMP = 5
    SHS_SOFTBUMP =6
    SHS_HARDBUMP = 7
    SHS_METAL = 8
  • <strong>granularity</strong>

    : this parameter add an uniform noise to the button bitmaps. A good value is from 5 to 20; 0 to disable the effect. The noise has a positive effect because it hides the palette steps.

  • <strong>highlight</strong>

    : sets the highlight level when the mouse is over the button. A good value is from 5 to 20; 0 to disable the effect.

  • <strong>coloring</strong>

    : sets the percentage of

    color

    to blend in the button palette. The value can range from 0 to 100; 0 to disable the effect.

  • <strong>color</strong>

    : if

    coloring

    is greater than zero,

    color

    is mixed with the standard button colors.Remarks : the

    coloring

    and

    color

    parameter should be used carefully to guarantee a good aspect in all the situations.

Collapse
void SetToolTipText(CString s, CString sDown="");
    Sets or changes the tool tip text.
    nice
  • <strong>s</strong>

    : String displayed in normal state.

  • <strong>sDown</strong>

    : (optional) Specifies a second text to be displayed when a check box or radio button is checked.

Collapse
COLORREF SetTextColor(COLORREF new_color);
    Sets or changes the button text color. Returns the previous button text color.
    nice
Collapse
void SetIcon(UINT nIcon, UINT nIconAlign=BS_CENTER, UINT nIconDown=0,
             UINT nIconHighLight=0);
    Similar to the BS_ICON style.
    nice
  • <strong>nIcon</strong>

    : ID number of the icon resource

  • <strong>nIconAlign</strong>

    : icon alignment, can be one of the following values:

    BS_CENTER
    BS_LEFT
    BS_RIGHT
  • <strong>nIconDown</strong>

    : (optional) ID number of the icon resource displayed when the button is checked.

  • <strong>nIconHighLight</strong>

    : (optional) ID number of the icon resource displayed when the mouse pointer is over the button.Remarks : the button text is automatically placed so that the icon and the text don't overlap.

Collapse
bool SetFont(CString sFontName, long lSize=0, long
             lWeight=400, BYTE bItalic=0, BYTE bUnderline=0);
bool SetFont(LOGFONT* pNewStyle); / LOGFONT* GetFont();
    Changes the text font.
    nice
  • <strong>sFontName</strong>

    : specifies the typeface name of the font.

  • <strong>lSize</strong>

    : (optional) text height

  • <strong>lWeight</strong>

    : (optional) text weight can range from 0 to 1000; 100=thin, 300=light, 400=normal, 700=bold

  • <strong>bItalic</strong>

    : (optional) italic style

  • <strong>bUnderline</strong>

    : (optional) underline style
    Remarks : use

    <strong>GetFont</strong>

    /

    <strong>SetFont</strong>

    with a LOGFONT structure to get/set the complete attributes of the font.

    <strong>GetFont</strong>

    returns NULL if the button is using the default system font.

Collapse
void SetTextAlign(UINT nTextAlign=BS_CENTER);
  • <strong>nTextAlign</strong>

    : button text alignment, can be one of the following values:

  • optional
    BS_CENTER
    BS_LEFT
    BS_RIGHT
Collapse
void SetFlat(bool bFlag);
  • <strong>bFlag</strong>

    : sets the border style:

  • optional
    FALSE

    = standard 3D border.

    TRUE

    = flat border.

Mysql简单操作

1 备份和还原e.g.

mysqldump --default-character-set=utf8 -uroot -p'PWD'      mysql >     ./mysql.txt
使用utf8编码                           待备份的数据库  备份文件名

mysql  ----default-character-set=utf8 -uroot -p mysql< ./mysql.txt

2. 登录数据库,e.g.

mysql -uroot -p'PWD'

登录后可以使用,e.g.

show databases;

use YourDatabase;

show tables;

select * from YourTables;

grant select,insert,update,delete on YourDatabsase.* to YourUser@"a IP" identified by "a password"

create database scheel;

create table teacher(id int(3),name char(10));

describe teacher;

insert into teacher(id,name) values('1','BadTeacher‘);

VC播放声音文件

project--link -- 加入winmm.lib
程序中加入
#include <mmsystem.h>

CString file="a.wav";
sndPlaySound(file,SND_ASYNC);

VC使用VFW播放视频的范例

add to project vfw.h ,vfw32.lib
//videovw.cpp
#include "vfw.h"
add tow variable to contain the hwnd of MCIWnd
init m_videoWnd=NULL
//create m_videoWnd
CString filename("tlclouds.avi");
MCIWndCreate(this->GetSafeHwnd(),AfxGetInstanceHandle(),WS_CHILD|WS_CAPTION|WS_FISBLE|MCIWNDF_SHOWPOS|MCIWNDF_SHOWNAME,filename)
//pause
MCIWndPlay(m_videoWnd);
//play
MCIWndPause(m_videwWnd);
//destroy
MCIWndDestroy(m_videoWnd);

VC下使用OpenCV的环境设置

从http://www.opencv.org.cn 下载OpenCV安装程序。假如要将OpenCV安装到C:\Program Files\OpenCV。(下面附图为OpenCV 1.0rc1的安装界面,OpenCV 1.0安装界面与此基本一致。)在安装时选择"将\OpenCV\bin加入系统变量"(Add\OpenCV\bin to the systerm PATH)。

配置Windows环境变量

检查C:\Program Files\OpenCV\bin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)后重新登陆才生效。(可以在任务管理器里重启explorer.exe)

配置Visual C++ 6.0
全局设置
菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:
C:\Program Files\OpenCV\lib
然后选择include files,在下方填入路径:
C:\Program Files\OpenCV\cxcore\include
C:\Program Files\OpenCV\cv\include
C:\Program Files\OpenCV\cvaux\include
C:\Program Files\OpenCV\ml\include
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\otherlibs\cvcam\include
项目设置
每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上
cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib
如果你不需要这么多lib,你可以只添加你需要的lib。

VC CxImage的编译和使用

一。CxImage类库简介

CxImage类库是一 个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage, PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所 束缚。在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂 着基本的C++ wrapper和成堆德编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。还有让我最看好的,就是作者完全公开了源代码。相对于那些封 装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。

CxImage是一个可以用于MFC 的C++类,可以打开,保存,显示,转换各种格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式的文件。可以实现BMP<->JPG,PNG <>TIFF格式等等的转换。

既可以实现图像文件的类型转换,也可以实现在内存图像数据的类型转换,并且使用很方便。

它的作者是: Davide Pizzolato ,主页: http://www.xdp.it/

首先,到http://www.codeproject.com/bitmap/CXImage.asp 下载它的源文件和Demo例子.

注: 在Codeproject下载这个类,你得先注册一下,因为这个类可是含金量比较高的,下载量比较大的,当然你也会很高兴成为CodeProject的一名成员的,她不收你的费.授权:

License

The class

CxImage

is free; as for the TIFF, JPEG, PNG and ZLIB libraries : "If you use this source code in a product, acknowledgment is not required but would be appreciated."

CxImage

is open source and licensed under the zlib license . In a nutshell, this means that you can use the code however you wish, as long as you don't claim it as your own.

由于很多人上codeproject的时候,老是上不去,所以,你也可以去这个类库的作者--Davide Pizzolato的主页去下载

他的主页还有另外的源代码,有兴趣的也可以看看.

二。编译CxImage类库

作者已经提供了整个类库配置的工程文件CxImgLib.dsw (VC++6.0),只要打开它进行编译即可。需要大家注意的是:整个CxImage类库非常大。如果你只需要能处理其中的几种格式,编译该类库时,你可以在配置的头文件ximcfg.h 中找到一些编译开关选项来关闭一些图像库。JPG、PNG、TIFF中的每一个库,都会向最终程序增加约100KB的内容。而CxImage类库压缩后只有约60KB。所以,你需要谨慎挑选一些你真正需要的类库。

//类库配置文件:ximacfg.h
#define CXIMAGE_SUPPORT_JPG 1
//如果要实现bmp->jpg 则必须打开
#define CXIMAGE_SUPPORT_BMP 1
#define CXIMAGE_SUPPORT_GIF 1
#define CXIMAGE_SUPPORT_JPG 1
//以上为必须打开,下面的随便............
#define CXIMAGE_SUPPORT_PNG 0//不使用它
#define CXIMAGE_SUPPORT_MNG 0
#define CXIMAGE_SUPPORT_ICO 1
#define CXIMAGE_SUPPORT_TIF 0//
#define CXIMAGE_SUPPORT_TGA 0//
#define CXIMAGE_SUPPORT_PCX 0//
#define CXIMAGE_SUPPORT_WBMP 0//
#define CXIMAGE_SUPPORT_WMF 0//
#define CXIMAGE_SUPPORT_J2K 0  // Beta, use JP2
#define CXIMAGE_SUPPORT_JBG 0
//.............

其他的可以不打开

编译该类库有好几个选择的工程,如下图所示:

各工程的作用对应如下:

  • CxImage : cximage.lib - static library
  • CxImageCrtDll : cximagecrt.dll - DLL not using mfc
  • CxImageMfcDll : cximage.dll - DLL using mfc
  • Demo : demo.exe - program linked with cximage.lib and the C libraries
  • DemoDll : demodll.exe - program linked with cximagecrt.dll
  • j2k,jasper,jbig,jpeg,png,tiff,zlib : static C libraries编译这些工程需要耗费几分钟的时间(中间文件可达60MB)。三。在程序中应用CxImage类库进行图像类型转换

    在你的VC工程中使用这个类库,要对工程进行如下设置(Project Settings):

    |- C/C++
    |   |- Code Generation
    |   |   |- Use run-time library : Multithreaded DLL (must be the same for
    |   |   |  all the linked libraries)  //应该只要是多线程DLL即可,DEBUG的也行
    |   |   |- Struct member alignment : must be the same for all the linked libraries
    |   |- Precompiled headers : not using precompiled headers
    |   |- Preprocessor
    |       |- Additional Include Directories:  ..\cximage(该处填CxImage里的.h和.cpp文件拷贝并导入工程后所在的文件夹,填写后在工程中include时编译器会查找该文件 夹,故include的文件无需路径)
    |- Link
    |- General
    |- Object/library modules:  png.lib
    jpeg.lib
    zlib.lib
    tiff.lib
    jasper.lib
    cximage.lib  (把需要的lib文件从CxImage中拷贝到工程中的lib文件所在的目录)

    并 且从CxImage中将xfile.h、ximacfg.h、ximadef.h、ximage.cpp、ximage.h、xiofile.h、 xmemfile.cpp、xmemfile.h拷贝到工程文件夹下并将CxImage.h文件加入工程中即可。也可以设置vc6的"tools"中的 "include"路径.

    下面介绍应用它进行图像类型转换的方式:

    1.从一种图像文件类型转换为另一种文件类型(convert from a format to another)

    CxImage  image;   // 定义一个CxImage对象

    // 从bmp文件转换为jpg文件(bmp -> jpg)
    image.Load("image.bmp", CXIMAGE_FORMAT_BMP);   //先装载bmp文件,需要指定文件类型
    // 判断加载的bmp文件是否存在。
    if (image.IsValid())......{
    // Returns true if the image has 256 colors  and a linear grey scale palette.
    if(!image.IsGrayScale()) image.IncreaseBpp(24);   // param nbit: 4, 8, 24
    image.SetJpegQuality(99);                // 设置图像的压缩质量参数(从0到100,数值越大,质量越高)
    image.Save("image.jpg",CXIMAGE_FORMAT_JPG);          // 把压缩后的图像以jpg文件类型保存起来。
    }

    // 从png文件转换为tif文件(png -> tif)
    image.Load("image.png", CXIMAGE_FORMAT_PNG);
    if (image.IsValid())...{
    image.Save("image.tif",CXIMAGE_FORMAT_TIF);
    }

    2。加载程序资源图像(load an image resource)

    即从程序的资源图像中构建CxImage对象,有如下几种方式:

    // Load the resource IDR_PNG1 from the PNG resource type
    CxImage* newImage = new CxImage();
    newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_PNG1),
    "PNG"),CXIMAGE_FORMAT_PNG);

    或者

    //Load the resource IDR_JPG1 from DLL
    CxImage* newImage = new CxImage();
    HINSTANCE hdll=LoadLibrary("imagelib.dll");
    if (hdll)...{
    HRSRC hres=FindResource(hdll,MAKEINTRESOURCE(IDR_JPG1),"JPG");
    newImage->LoadResource(hres,CXIMAGE_FORMAT_JPG,hdll);
    FreeLibrary(hdll);
    }

    或者

    //Load a bitmap resource;
    HBITMAP bitmap = ::LoadBitmap(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDB_BITMAP1)));
    CxImage *newImage = new CxImage();
    newImage->CreateFromHBITMAP(bitmap);

    3。在内存缓冲中的图像类型转换

    (1)把内存缓冲中的数据解码成一个Image对象(decode an image from memory)

    有如下几种方式:
    ------

    CxImage image((BYTE*)buffer,size,image_type);//把内存缓冲buffer中的数据构造成Image对象

    //或:

    CxMemFile memfile((BYTE*)buffer,size); // 显式使用CxMemFile对象
    CxImage image(&memfile,image_type);

    //或:

    CxMemFile memfile((BYTE*)buffer,size);
    CxImage* image = new CxImage();
    image->Decode(&memfile,type);

    ============

    (2)把Image编码存放到内存缓冲中(encode an image in memory)

    --------

    long size=0;//得到图像大小
    BYTE* buffer=0;//存储图像数据的缓冲
    image.Encode(buffer,size,image_type);//把image对象中的图像以type类型数据copy到buffer
    ...
    free(buffer);

    或:

    CxMemFile memfile;            // 显式使用CxMemFile对象
    memfile.Open();
    image.Encode(&memfile,image_type);
    BYTE* buffer = memfile.GetBuffer();
    long size = memfile.Size();
    ...
    free(buffer);

    ---------------

    4。处理系统粘贴板中的图像(copy/paste an image)

    //copy(到粘贴板)
    HANDLE hDIB = image->CopyToHandle();
    if (::OpenClipboard(AfxGetApp()->m_pMainWnd->GetSafeHwnd())) ...{
    if(::EmptyClipboard()) ...{
    if (::SetClipboardData(CF_DIB,hDIB) == NULL ) ...{
    AfxMessageBox( "Unable to set Clipboard data" );
    }    }    }
    CloseClipboard();

    //paste(从粘贴板粘贴出来)
    HANDLE hBitmap=NULL;
    CxImage *newima = new CxImage();
    if (OpenClipboard()) hBitmap=GetClipboardData(CF_DIB);
    if (hBitmap) newima->CreateFromHANDLE(hBitmap);
    CloseClipboard();

    5。在picture box中显示一个png格式的文件

  • 注意CXimage官方网站给出的方法如下,我测试了一下,没有成功(可能我用得是vc6.0,或者我哪里写错了?),我对这个例子简单的修改了一下,就可以显示图片了
  • 官网上的方法如下:
  • HBITMAP m_bitmap = NULL;
    CxImage image("myfile.png", CXIMAGE_FORMAT_PNG);
    ...
    m_bitmap = image.MakeBitmap(m_picture.GetDC()->m_hDC);
    m_picture.SetBitmap(m_bitmap);
    ...
    if (m_bitmap) DeleteObject(m_bitmap);
    我修改后的方法如下:
    picture control 控件我懒得用,用CStatic实现的

    CStatic  m_p;//该变量声明应放在文件最开头,弄成全局变量
    m_p.Create("",WS_VISIBLE|WS_BORDER|WS_CHILD,CRect(0,0,300,300),this,1234);
    CxImage image("1.bmp",CXIMAGE_FORMAT_BMP);
    HBITMAP mbitmap=image.MakeBitmap(m_p.GetDC()->m_hDC);
    CDC memdc;
    memdc.CreateDompatibleDC(m_p.GetDC());
    memdc.SelectObject(m_bitmap);
    m_p.GetDC()->BitBlt(0,0,300,300,&memdc,0,0,SRCCOPY);
    //记得释放资源

    四。其它

    一 个CxImage对象是一个扩展了的位图。作者只是在位图结构上添加了一些起存储信息作用的成员变量。一个CxImage对象(同时)也是一组层。每个层 只有在需要时才会分配相应的缓冲区。CxImage::pDib代表着背景图像,CxImage::pAlpha代表着透明层,CxImage:: pSelection代表着被选中的层,被用来创建图像处理时让用户感兴趣的区域。在这三个特殊层面的基础上,你可以增加一些额外的层,这些层可以存储在 CxImage::pLayers中。一般说来,层是一个完整的CxImage对象。因此,你可以构造很复杂的嵌套层。下面是CxImage的一些成员变 量:

    class CxImage
    ...{
    ...
    protected:
    void* pDib;            //包含文件头,调色板等等
    BITMAPINFOHEADER head; //标准的文件头(位图)
    CXIMAGEINFO info;      //扩展了的信息
    BYTE* pSelection;      //用户选中的区域
    BYTE* pAlpha;          //alpha通道
    CxImage** pLayers;     //通用层
    }
    typedef struct tagCxImageInfo ...{
    DWORD   dwEffWidth;       //DWORD 扫描线宽
    BYTE*   pImage;           //图像位数
    void*   pGhost;           //if this is a ghost, pGhost point to the body
    DWORD   dwType;           //原图像的格式
    char    szLastError[256]; //出错信息
    long    nProgress;        //监视循环的次数
    long    nEscape;          //跳出标志
    long    nBkgndIndex;      //GIF, PNG, MNG格式使用
    RGBQUAD nBkgndColor;      //RGB三原色透明度
    BYTE    nQuality;         //JPEG格式使用
    long    nFrame;           //TIF, GIF, MNG使用 :实际的帧数
    long    nNumFrames;       //TIF, GIF, MNG使用 :帧总数
    DWORD   dwFrameDelay;     //GIF, MNG使用
    long    xDPI;             //水平分辨率
    long    yDPI;             //垂直分辨率
    RECT    rSelectionBox;    //选中的矩形区
    BYTE    nAlphaMax;        //阴影的最大不透明度
    bool    bAlphaPaletteEnabled;  //如果调色板中有Alpha通道则为真
    bool    bEnabled;         //打开绘图函数
    long    xOffset;
    long    yOffset;
    DWORD   dwEncodeOption;   //一些编码选项
    RGBQUAD last_c;           //一些优化选项
    BYTE    last_c_index;
    bool    last_c_isvalid;
    long    nNumLayers;
    DWORD   dwFlags;
    } CXIMAGEINFO;

    关于CxImage类库作者: Davide Pizzolato,一位电子工程师。1984年开始编程,已不在乎使用何种编程语言来开发软件。现就职于Askoll的电子研发部。

    关于CxImage类库更多的信息,请到它的官网或作者主页去了解。

    第 20 页,共 22 页« 最新...10...1819202122