我在我所做的一个画图软件的屏幕上画一个圆,一个矩形和两条直线后,想起一个文件名,永久保存在自己的硬盘中,下次需要时可打开所保存的文件,要求:保存后(比如保存在桌面上)会出现一个自己定义的文件图标,文件名也有自己的保存格式后缀(就象CAD一样它的后缀为.dsw)
如何实现,大家帮忙。谢谢了。
因为我初学,可以的话祥细点最好,麻烦大家了。

解决方案 »

  1.   

    呵呵。我就是做这个玩意儿出生的。你用CDocument的序列化函数,将这些图形的位置序列化到文件中就可以了。保存文件的方式就是工程中的保存菜单。会要求你起名字的。文件的图标就是你在工程中主框架的那个资源图标。
      

  2.   

    CDocument有一个函数
    Serialize那个函数里面
    有IsPrint()来判断的打印还是保存
    有一个CAchive类来保存成文件
    至于扩展名什么的在工程一开头都已经设定好了
      

  3.   

    不是呀, 我也将图形的位置序列化到文件中了,可是保存时,下面显示是所有文件*.*
    ,并没有扩展名呀比如.dwg,如何让下面出现.dwg的扩展名呀, 还有我的图标就是一个打开方式图标,不是资源图标呀。
    如何才能解决呀。谢谢
      

  4.   

    对呀,用CObArray,以及在
    if (ar.IsStoring())
    {
    m_ObArray.Serialize(ar);
    }
    else
    {
    m_ObArray.Serialize(ar);
    }等
      

  5.   

    在//Microsoft Developer Studio generated resource script.中加
    STRINGTABLE PRELOAD DISCARDABLE 
    BEGIN
    IDR_MAINFRAME           "name\n\nname\nname Files (*.nms)\n.dsw\nname.Document\nname Document"END
      

  6.   

    不是呀, 我也将图形的位置序列化到文件中了,可是保存时,下面显示是所有文件*.*
    ,并没有扩展名呀比如.dwg,如何让下面出现.dwg的扩展名呀, 还有我的图标就是一个打开方式图标,不是资源图标呀。
    如何才能解决呀。谢谢
      

  7.   

    CFileDialog dlg(0,
    "dwg",
    "*.dwg", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    "dwg文件(*.dwg)|*.dwg|| ",
    NULL);
    if (IDOK != dlg.DoModal())
    return;
      

  8.   

    上面说的事如果你要自己调用CFileDialog如果保存调用的是mfc自己生成的:在资源编辑器里,找到string table项中的 IDR_MAINFRAME           
    编辑器中的字符串就可以了。
    如下:( 我的工程名叫df, 扩展名为dwg)df\n\nDf\nDf 文件 (*.dwg)\n.dwg\nDf.Document\nDf Document将上面那个串里的df替换成你自己的工程名,就行了
      

  9.   

    这样也可你是想你另外一个需求:)要求:保存后(比如保存在桌面上)会出现一个自己定义的文件图标,文件名也有自己的保存格式后缀(就象CAD一样它的后缀为.dsw)