小弟想模仿windows系统自带的画图工具,保存位图图片的时候可以选择 "单色位图(*.bmp)"、"16色位图(*.bmp)"、"256色位图(*.bmp)"...,后缀名一样,图片格式又不一样的。而点击菜单栏里"打开"又只能选择 "位图文件(*.bmp)",不分图片格式的。要如何实现呢,用多个文档模板?可是我只用一个文档模板就实现了所有功能(包括图片读取保存复制粘贴等等),只是保存的时候图片位数不一样罢了。重写"新建""打开""保存""另存为"命令的实现吗,好像有点麻烦,点保存的时候如何知道已经保存过了而不用再选择保存路径,未保存过的如何知道选择了哪种位数的保存方式。有这方面的例子吗,先说声谢谢了。

解决方案 »

  1.   

    都是同一个格式的,不用使用多个模板,一个就够了,使用的时候可以根据BITMAPINFOHEDER信息来判断具体位数点击"打开"的时候将路径保存,保存的时候根据当前保存的路径直接写保存的时候你不用管是多少位的,反正都是BMP格式的,你写文件头的时候就已经写入是多少位的了
      

  2.   

    没太明白你的意思哈,按我理解的
    struct MYBMPINFO
    {
      MyBitmap * pBmp;//你的图片类型
      int iType;   //本图片的保存模式,有默认值,如果选择了则改成相应值
      bool bIsSaved; //是否保存过...
    }也可以归到你图片类中
      

  3.   

    BITMAPINFOHEADER 结构的biBitCount (每像素所
    占bit 数) 成员来区别,biBitCount 为1 (黑白二色图) 、4 (16 色图) 、8 (256 色图) 时由颜色表项数
    指出颜色表大小,biBitCount 为16 (16 位色图) 、24 (真彩色图) 、32 (32 位色图) 时没有颜色表
      

  4.   

    使用GetSaveFileName,那么ofn.nFilterIndex可以只是你保存文件的详细类型,俺的程序里面使用.doc或者.rtf,ofn.nFilterIndex应该是1或者2.
      

  5.   

    MS楼主只是想知道如何使用保存对话框。看看MSDN就可了。新建,保存,打开的重写就和你添加一个菜单的响应一样啊。
      

  6.   

    问题解决了,重写"新建""打开""保存""另存为"命令 是有点麻烦,好在这部分代码mfc是有公开的,Microsoft Visual Studio 6\VC98\MFC\SRC下的DOCMGR.CPP等等,修改下就是了。