友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第139章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






                    #0041          { 

                    #0042                  ar  m_center; 

                    #0048                  ar 》》 m_radius; 

                    #0049          } 

                    #0050  } 



                   接下来我应该改变使用者接口,加上菜单或工具栏,以便在涂鸦过程中得随时加上一个 



                    四方形或一个圆圈。但我刚才说了,我只是打算做个小小的文件档格式测试而已,所以 



                    简单化是我的最高指导原则。我打算搭现有之使用者接口的便车,也就是每次鼠标左键 



                   按下开始一条线条之后,再new 一个四方形和一个圆形,并和线条一起加入CObList 之 



                    中,然后才开始接受左键的坐标。。。。 



                   所以,我修改CScribDoc::NewStroke 函数如下: 



                    #0001  CStroke* CScribDoc::NewStroke() 

                    #0002  { 

                    #0003      CStroke* pStrokeItem = new CStroke(m_nPenWidth); 

                    #0004      CRectangle* pRectItem = new CRectangle(CRect(0x11;0x22;0x33;0x44)); 

                    #0005      CCircle* pCircleItem = new CCircle(CPoint(0x55;0x66);0x77); 

                    #0006      m_strokeList。AddTail(pStrokeItem); 

                    #0007      m_strokeList。AddTail(pRectItem); 

                    #0008      m_strokeList。AddTail(pCircleItem); 

                    #0009 

                    #0010      SetModifiedFlag();  // Mark the document as having been modified; 

                    #0011                          // for purposes of confirming File Close。 

                    #0012      return pStrokeItem; 

                    #0013  } 



                    并将scribbledoc。h 中的m_strokeList 修改为: 



                    CTypedPtrList m_strokeList; 



                   重新编译联结,获得结果如图8…10a 。图8…10b 对此结果有详细的剖析。 



540 


…………………………………………………………Page 603……………………………………………………………

                                                  第8章    Document…View  深入探討 



                                                            每画上一条线条,就自动附 



                                                            加一个矩形和一个圆形。本 



                                                            例并没有另外设计UI,纯为 



 CArchive::WriteObject                                      实验用途。 



                                                                 CArchive::ReadObject 



              06 00 FF FF 

     000000:              01 00 07 00  43 53 74 72 6F 6B 65 02 。。。。。。。。CStroke。 

     000010: 00 02 00 6E 00 00 00 24  00 00 00 6E 00 00 00 24 。。。n。。。。。。n。。。 

     000020: 00 00 00 FF FF 01 00 0A  00 43 52 65 63 74 61 6E 。。。。。。。。。CRectan 

     000030: 67 6C 65 11 00 00 00 22  00 00 00 33 00 00 00 44 gle。。。。〃。。。3。。。D 

     000040: 00 00 00 FF FF 01 00 07  00 43 43 69 72 63 6C 65 。。。。。。。。。CCircle 

     000050: 55 00 00 00 66 00 00 00  77 00 00 00 01 80 02 00 U。。。f。。。w。。。。。。。 

     000060: 02 00 6E 00 00 00 55 00  00 00 6E 00 00 00 55 00 。。n。。。U。。。n。。。U。 

     000070: 00 00 03 80 11 00 00 00  22 00 00 00 33 00 00 00 。。。。。。。。〃。。。3。。。 

     000080: 44 00 00 00 05 80 55 00  00 00 66 00 00 00 77 00 D。。。。。U。。。f。。。w。 

     000090: 00 00                                            。。 



      图8…10a TEST。SCB 文件内容,文件全长146 个字节。 



 CObList m_graphList 

  CObList m_graphList 



每次鼠标左键按下,开始一条线条,图8…10a 中的程序立刻new 一个四方形和一个圆 



形,并和线条一起加入CObList 之中,然后才开始接受左键的坐标。所以图8…10a 的 



执行画面造成本图的数据结构。 



                                                                                    541 


…………………………………………………………Page 604……………………………………………………………

                       第篇    深入  MFC  程式設計 



                        数值(hex)              说明 



                        0006                         表示此文件有六个CObList 元素 



                        FFFF                                        FFFF 亦即…1,表示New Class Tag 



                        0001                                         这是Schema no。,代表资料的版本号码 



                        0007                                         表示后面接着的「类别名称」有7 个字符 



                        43 53 74 72 6F 6B 65              〃CStroke〃  (类别名称)的ASCII 码 



                        0002                                          第一条线条的宽度 



                        0002                                          第一条线条的点数组大小(点数) 



                        00000066;0000001B                 第一条线条的第一个点坐标 



                        00000066;0000001B                 第一条线条的第二个点坐标 



                        FFFF                                          FFFF 亦即…1,表示New Class Tag 



                        0001                                           这是Schema no。,代表资料的版本号码。 



                        000A                                          后面接着的「类别名称」有Ah 个字符。 



                        43 52 65 63 74 61 6E 67 6C 65   〃CRectangle〃   (类别名称)的ASCII 码。 



                        00000011                  第一个四方形的左 



                        00000022                                   第一个四方形的上 



                        00000033                  第一个四方形的右 



                        00000044                                    第一个四方形的下 



                        FFFF                                           FFFF 亦即…1,表示New Class Tag 



                        0001                       这是Schema no。,代表资料的版本号码。 



                        0007                       后面接着的「类别名称」有7 个字符。 



                        43 43 69 72 63 6C 65                   〃CCircle〃  (类别名称)的ASCII 码。 



                        00000055                   第一个圆形的中心点X 坐标 



                        00000066                   第一个圆形的中心点Y 坐标 



                        00000077                                     第一个圆形的半径 



                        8001                       这是(wOldClassTag | nClassIndex)  的组合结果,表示接 



                                                  下来的对象使用索引为  的旧类别。 

                                                                                1  



                        0002                                             第二条线条的宽度 



                        0002                        第二条线条的点数组大小(点数) 



542 


…………………………………………………………Page 605……………………………………………………………

                                                      第8章    Document…View  深入探討 



          数值(hex)                 说明 



          00000066;00000031             第二条线条的第一个点坐标 



          00000066;00000031                   第二条线条的第二个点坐标 



          8003                                            这是(wOldClassTag | nClassIndex)  的组合结果,表示接 



                                   下来的对象使用索引为3 的旧类别。 



          00000011                   第二个四方形的左 



          00000022                   第二个四方形的上 



          00000033                   第二个四方形的右 



          00000044                   第二个四方形的下 



          8005                       这是(wOldClassTag | nClassIndex)  的组合结果,表示接 



                                   下来的对象使用索引为  的旧类别。 

                                                   5  



          00000055                   第二个圆形的中心点X 坐标 



          00000066                   第二个圆形的中心点Y 坐标 



          00000077       
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!