開發(fā)思路:
  寫這個(gè)東東,其實(shí)就是寫一個(gè)COM加載項(xiàng)??梢允褂肕FC、也可以使用ATL,也可以使用VB,我最終選用了ATL。主要是VC我用得比較多,而ATL通過(guò)模板庫(kù)會(huì)給開發(fā)帶來(lái)極大的便利,參考資料也比較多,因此選用了ATL。事實(shí)證明我的選擇是正確的。不過(guò)使用VB相對(duì)要方便一些,VB可以很方便地對(duì)COM進(jìn)行編程,編程中也可以直接使用Word的宏代碼,根本不用做代碼轉(zhuǎn)換。
  開始編程,使用VC向?qū)В梢院芸斓纳蒀OM的框架,然后向工程里插入一個(gè)simple object(在菜單插入->插入ATL對(duì)象里面)。通過(guò)這個(gè)對(duì)象來(lái)改變WORD的菜單、TOOLBAR,這方面的文章很多,我的開發(fā)就是介紹了徐景周的一篇文章,到網(wǎng)上找一下,很多轉(zhuǎn)載(我發(fā)現(xiàn)網(wǎng)上原創(chuàng)的東西實(shí)在不多呀)。這樣一個(gè)簡(jiǎn)單的COM加載項(xiàng)的框架就建好了。
  手寫簽名部分的實(shí)現(xiàn),這部分都是一些相對(duì)編程者容易的問(wèn)題。簡(jiǎn)單說(shuō)一下,首選插入一個(gè)對(duì)話框(在菜單插入->插入ATL對(duì)象里面),加入幾個(gè)按鈕,寫一個(gè)單向鏈表用來(lái)存簽名的筆畫,用兼容DC、兼容位圖、OleCreatePictureIndirect,把圖片創(chuàng)建成一個(gè)IPictureDisp對(duì)象,以供下面的使用。
  再插入一個(gè)Full Control對(duì)象,方法同上。把上面一步生成的IPictureDisp寫進(jìn)Full Control對(duì)象,再調(diào)用WORD的AddOleCtrol方法將這個(gè)東東插入就可以了。
  這就是一個(gè)簡(jiǎn)單的流程。說(shuō)的很粗略,因?yàn)椴恢栏信d趣的人多不多。
  在開發(fā)的過(guò)程中我遇到了以下這樣一些問(wèn)題,后來(lái)慢慢解決了,如果大家有興趣可以來(lái)交流一下。
  1.如何在插入對(duì)象中取到WORD的ActiveDocument的指針(這個(gè)不能通過(guò)保存的方法來(lái))。
    取Container的指針,再查IDispatch的接口。
????? 2.如果在程序里控制控件的刪除,如在控件內(nèi)點(diǎn)擊,通過(guò)上下文菜單文菜單刪除控件。
    可以給控件設(shè)置一下標(biāo)志,然后通過(guò)Word的方法遍歷對(duì)象組,檢查對(duì)應(yīng)的標(biāo)志,然后刪除。
????? 3.如何保存。
   可以重載框架的Save和Load方法,把對(duì)象的相關(guān)屬性保存。這兩個(gè)方法會(huì)由WORD自動(dòng)調(diào)用。
????? 4.如何使用TOOLTIP。
    這個(gè)在MSDN里有詳細(xì)的幫助,可以參照解決。
????? 5.如何移動(dòng)控件。
    處理控件的OnLButtonDown/OnMouseMove/OnLButtonUp消息,然后通過(guò)Word的方法移動(dòng)控件。
???? 簡(jiǎn)單寫了一下思路,歡迎交流。