欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

含有用于識(shí)別mime類(lèi)型及顯示不同圖標(biāo)的方法和裝置的增強(qiáng)電子郵件系統(tǒng)的制作方法

文檔序號(hào):6471824閱讀:843來(lái)源:國(guó)知局

專(zhuān)利名稱(chēng)::含有用于識(shí)別mime類(lèi)型及顯示不同圖標(biāo)的方法和裝置的增強(qiáng)電子郵件系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及電子郵件程序。本發(fā)明尤其涉及具有為郵件項(xiàng)目MIME類(lèi)型(MIMEtypes)的不同類(lèi)型顯示不同圖標(biāo)的郵箱瀏覽器顯示區(qū)域的電子郵件程序2、現(xiàn)有技術(shù)近年來(lái),電子郵件(“email”)已經(jīng)在商務(wù)、教育以及個(gè)人通信領(lǐng)域中廣泛應(yīng)用。特別是在商務(wù)和教育領(lǐng)域中,最為便利的電子郵件的特性之一就是,具備將二進(jìn)制計(jì)算機(jī)文件附加到電子郵件消息上的能力。這種特性使電子郵件通信者能夠快速地共享文字處理文檔、數(shù)據(jù)庫(kù)文檔、電子表格文檔、多媒體文檔、或?qū)嶋H上由計(jì)算機(jī)生成的任何類(lèi)型的二進(jìn)制文件。然而,還存在某些與附加二進(jìn)制文件到電子郵件消息上相關(guān)的嚴(yán)重限制和不便利之處。原始的互聯(lián)網(wǎng)郵件系統(tǒng),以RFC(RequestforComments)821和822定義于1982年,其具有許多重要的限制。尤其是,系統(tǒng)未被設(shè)計(jì)用來(lái)在電子郵件消息中承載大量隨機(jī)數(shù)據(jù)。實(shí)際上,1982年的SMTP(SimpleMailTransportProtocol)標(biāo)準(zhǔn),要求電子郵件由單一消息組成,該單一消息僅包含1000個(gè)字符(32K的塊)或更少字符的行的ASCII字符。用于互聯(lián)網(wǎng)消息的MIME(MultipurposeInternetMailExtensions)標(biāo)準(zhǔn),使通過(guò)互聯(lián)網(wǎng)電子郵件系統(tǒng)發(fā)送二進(jìn)制數(shù)據(jù)的能力成為可能。原始的MIME標(biāo)準(zhǔn)作為一篇互聯(lián)網(wǎng)RequestForComments公文(RFC1341)被發(fā)表,并且于1992年6月批準(zhǔn)通過(guò)。(參看最近的MIME標(biāo)準(zhǔn)公文的互聯(lián)網(wǎng)RFCs2045、2046和2047。)該MIME標(biāo)準(zhǔn)描述了電子郵件消息應(yīng)該如何格式化以便于成為MIME所允許的。MIME定義了一套消息標(biāo)題字段和一套消息編碼標(biāo)準(zhǔn),其被設(shè)計(jì)用來(lái)克服RFC822消息格式中的限制,以及被設(shè)計(jì)成可經(jīng)由任何眾多的在互聯(lián)網(wǎng)上使用的傳統(tǒng)郵件傳輸系統(tǒng)傳輸。(尤其參看,N.Freed和N.Borenstein,MultipurposeIntemetMailExtensions(MIME)的第一部分FormatofMessageBodies,NetworkWorkingGroup,RequestForComments(RFC2045)1996年11月。)MIME消息標(biāo)題字段在RFC822中擴(kuò)展了那些定義,并且描述了電子郵件消息的內(nèi)容及編碼類(lèi)型。在該MIME標(biāo)準(zhǔn)當(dāng)中允許的編碼方案包括“quoted-printable”,和“base64”。另外,還允許三種非編碼數(shù)據(jù)類(lèi)型。這些被標(biāo)為“8bit”(8位)、“7bit”(7位)或“binary”(二進(jìn)制)。應(yīng)當(dāng)注意到,傳統(tǒng)的網(wǎng)關(guān)仍然無(wú)法處理二進(jìn)制數(shù)據(jù),并且?guī)缀跛械腗IME允許的消息將二進(jìn)制數(shù)據(jù)編碼為“7bit”,即MIME的默認(rèn)編碼。而今,在所有主要的電子郵件客戶或“UserAgents”(用戶代理商),例如MicrosoftOutlookandOutlookExpress、NetscapeCommunicator和QualcommEudora上執(zhí)行MIME。然而,只有少部分MIME類(lèi)型包括有“text/plain”、“text/html”、“multipart/alternative”和“multipart/mixed”能夠由這些程序來(lái)處理?;蛟S該MIME標(biāo)準(zhǔn)的最重要特性就是,它允許適當(dāng)?shù)鼐幋a任何二進(jìn)制數(shù)據(jù),以及經(jīng)由郵件網(wǎng)關(guān)及交換機(jī)的舊式SMTP系統(tǒng)來(lái)發(fā)送任何二進(jìn)制數(shù)據(jù)。諸如那些上文所列出的郵件客戶程序被作了修改,從而允許用戶將任何文件類(lèi)型附加到郵件消息上。這已通過(guò)以下方法完成(a)包括適當(dāng)?shù)木幋a模塊用來(lái)將任意文件的二進(jìn)制數(shù)據(jù)翻譯成如“7bit”或“base64”的可接受MIME編碼,(b)擴(kuò)展郵件客戶的能力以處理帶有設(shè)為“multipart”的MIME類(lèi)型的消息,以及(c)包括由用戶指定的文件以作為“multipart”消息的一部分。很多年,郵件客戶程序僅僅給用戶提供兩個(gè)選擇;他們能夠發(fā)送簡(jiǎn)單的文本消息(以“content-type=text/plain”發(fā)送)或者他們能夠?qū)⑷魏挝募郊拥胶?jiǎn)單的文本消息上(以“content-type=multipart/mixed”發(fā)送)。近些年來(lái),上文所列出的程序已經(jīng)被擴(kuò)展到允許程序設(shè)計(jì)者,通過(guò)在郵件客戶文本編輯器中包括這些特性以及通過(guò)發(fā)送被設(shè)為“text/html”的MIME類(lèi)型消息,來(lái)使用諸如可選擇字體和樣式等文本格式的基本類(lèi)型?,F(xiàn)如今,Microsoft’sOutlook甚至在將Word文件人工的插入到預(yù)發(fā)送的郵件消息主體之前,通過(guò)將Word文件格式轉(zhuǎn)換成HTML語(yǔ)言,從而允許用戶使用全特性文本編輯器Word撰寫(xiě)電子郵件消息。然而,郵件客戶程序仍然完全依賴(lài)于帶有為任何其他文件格式類(lèi)型而被設(shè)為“multipart”的消息MIME類(lèi)型的文件附件。如果帶有附加的二進(jìn)制文件的電子郵件的發(fā)送人和接收人正在使用相同類(lèi)型或版本的電子郵件程序,且兩種程序均以相同方式完全配置,那么該接收人的電子郵件程序應(yīng)會(huì)自動(dòng)將適當(dāng)?shù)慕獯a過(guò)程應(yīng)用到附加的二進(jìn)制文件,并且應(yīng)會(huì)產(chǎn)生與由發(fā)送人附加到電子郵件上的文件相等同的文件。然而,如果發(fā)送人和接收人正在使用不同的電子郵件程序,那么接收方可以接收必須由接收方使用獨(dú)立的解碼程序進(jìn)行解碼的文件。甚至在文件被完全接收和解碼之后,對(duì)于收件人而言打開(kāi)文件通常也是困難的。收件人可能希望通過(guò)在文件圖標(biāo)上的“clicking”(點(diǎn)擊)就可以打開(kāi)該文件。然而,在文件圖標(biāo)上的點(diǎn)擊經(jīng)常無(wú)法打開(kāi)文件。這會(huì)導(dǎo)致類(lèi)似于“applicationnotfound”(應(yīng)用程序未找到)等錯(cuò)誤消息,更糟糕的情況下,會(huì)導(dǎo)致此文件被不適當(dāng)?shù)膽?yīng)用程序打開(kāi)從而顯示“giberish”(亂碼)。收件人必須具備能夠讀取(打開(kāi))此文件的程序。例如,如果某個(gè)人將電子表格附加到電子郵件消息上,則收件人必須具備電子表格程序以便于打開(kāi)該文件。從技術(shù)上講,收件人并非必須具備與創(chuàng)建該文件的程序一樣的類(lèi)型程序。然而,使用那些不是用來(lái)創(chuàng)建該文件的程序來(lái)打開(kāi)該文件,雖然是可能,但會(huì)非常困難。收件人必須要知道附加到電子郵件消息上的文件是什么類(lèi)型的文件,必須要知道他們計(jì)算機(jī)上的什么程序能夠讀取那種類(lèi)型的文件,必須要運(yùn)行該程序,必須要在該程序當(dāng)中打開(kāi)此文件,以及當(dāng)程序翻譯此文件時(shí)進(jìn)行等待。如果發(fā)送人和接收方?jīng)]有使用相同的操作系統(tǒng)(OS),則互聯(lián)網(wǎng)電子郵件的限制甚至可能變得更有阻礙。某些郵件附件的編碼方案(以及文件壓縮方案)是依賴(lài)操作系統(tǒng)的(OS-dependent),并且電子郵件接收方接收到不可能被解碼(或解壓縮)的文件是可能的。電子郵件當(dāng)中的這些限制使許多人特別是不具備專(zhuān)業(yè)技能的計(jì)算機(jī)用戶,在將文件附加到電子郵件消息上時(shí)而氣餒。實(shí)際上,對(duì)于某些初學(xué)者用戶來(lái)說(shuō),運(yùn)行某一應(yīng)用程序來(lái)創(chuàng)建文檔、保存文檔的任務(wù),和運(yùn)行獨(dú)立的電子郵件應(yīng)用程序以創(chuàng)建電子郵件消息的任務(wù),以及接著將用作附件的已保存的文檔定位到電子郵件消息的任務(wù),都十分令人畏懼而令他們氣餒。另外,初學(xué)者用戶時(shí)常抱怨,在“downloading”(下載)附加到電子郵件消息上的文件之后,他們?cè)谄溆脖P(pán)上找不到該文件。大部分電子郵件客戶軟件允許用戶在收件箱中按發(fā)送人、主題或日期將郵件項(xiàng)目排序,以便于更加容易地定位特定的郵件項(xiàng)目。此外,大部分電子郵件客戶軟件表明該特定消息是否包含有附加文件。例如,其可由諸如回形針圖標(biāo)、普通文檔圖標(biāo)或軟盤(pán)圖標(biāo)來(lái)表示。然而,不管附件的性質(zhì)而使用相同的圖標(biāo),且直到消息被打開(kāi)時(shí)才能知道該附件的性質(zhì)?,F(xiàn)有技術(shù)圖1示出一典型的電子郵件收件箱的實(shí)例,該收件箱中的某些郵件項(xiàng)目具有由位于主題名稱(chēng)左側(cè)的回形針圖標(biāo)表明的附加文件。盡管沒(méi)有在圖1當(dāng)中特別示出,但是本領(lǐng)域的技術(shù)人員會(huì)意識(shí)到,諸如!、a、、4等的普通圖標(biāo)也可以被顯示于消息主題旁邊以表明該消息的不同“properties”(屬性),諸如是否其為高優(yōu)先級(jí)的消息、是否你已回復(fù)了該消息等等。這些普通圖標(biāo)通常是從“dingbats”字體或其他類(lèi)似字體中取出的單色字體字符。在最近版本的主要電子郵件客戶程序當(dāng)中,代表所附加文件的文件類(lèi)型的圖標(biāo),在該消息被用戶打開(kāi)之后,被顯示于郵件消息的主體部分。這很可能是由于諸如MicrosoftWindows或MacintoshOS的計(jì)算機(jī)操作系統(tǒng)維護(hù)將信息與系統(tǒng)公知的每個(gè)文件類(lèi)型相關(guān)聯(lián)的數(shù)據(jù)。此信息包括圖形圖標(biāo),以及可用于在文件上“open”(打開(kāi))、“edit”(編輯)或執(zhí)行其它少量動(dòng)作的程序的位置。例如,在MicrosoftWindows中系統(tǒng)注冊(cè)表包括系統(tǒng)公知的每個(gè)文件類(lèi)型的表項(xiàng)目,并且上文所描述的至少某些信息與該文件類(lèi)型相關(guān)聯(lián)。當(dāng)用戶以“content-type=multipart/mixed”打開(kāi)電子郵件消息時(shí),為MicrosoftWindows建立的郵件客戶程序(例如,MicrosoftOutlook)就確定該消息的第二部分為附加文件,識(shí)別該消息內(nèi)文本的位置例如AttachmentConverted“c\attach\aFile.doc”,為與該文件類(lèi)型“.doc”相關(guān)聯(lián)的圖標(biāo)查看系統(tǒng)注冊(cè)表,并且在該消息主體內(nèi)顯示圖形圖標(biāo)。在目前的系統(tǒng)中,沒(méi)有使用MIME類(lèi)型來(lái)將圖標(biāo)關(guān)聯(lián)到文件,而寧可使用文件類(lèi)型的擴(kuò)展名。這樣,對(duì)于將不同軟件版本或由不同軟件版本創(chuàng)建的文檔關(guān)聯(lián)到不同圖標(biāo)上的能力,產(chǎn)生了重大限制。例如,由MSWord創(chuàng)建的所有文檔,不管使用的是哪一個(gè)Word版本,都具有相同的文件類(lèi)型(文件擴(kuò)展名),且結(jié)果都與相同的圖標(biāo)相關(guān)聯(lián)。即便是在許多更新版本的文件不能被舊版本的軟件來(lái)讀取的情況下也是成立的。本申請(qǐng)人之前所結(jié)合的母案公開(kāi)了電子郵件軟件,其包括一主電子郵件組件以及許多可安裝組件。該可安裝組件包括用來(lái)創(chuàng)建/讀取不同類(lèi)型文檔的認(rèn)可/讀組件,以及用來(lái)列出不同類(lèi)型消息或用來(lái)在不同風(fēng)格中列出消息的郵箱組件。該主電子郵件組件為直接與存儲(chǔ)器相關(guān)聯(lián)的函數(shù)以及電子郵件消息的傳遞提供基礎(chǔ)的圖形用戶接口,并且還處理所有的捆綁或非捆綁數(shù)據(jù),其中需要上述數(shù)據(jù)以將由認(rèn)可/讀組件創(chuàng)建的消息轉(zhuǎn)換成MIME允許的消息。該認(rèn)可/讀組件像嵌入于電子郵件程序內(nèi)的應(yīng)用程序那樣工作,并且允許從電子郵件程序內(nèi)創(chuàng)建諸如電子表格、圖形、數(shù)據(jù)庫(kù)等特定類(lèi)型的文檔并直接以電子郵件發(fā)送。該認(rèn)可/讀組件也允許在沒(méi)有傳統(tǒng)上與附加二進(jìn)制文件到電子郵件信函上相關(guān)的難點(diǎn)的情況下,讀取所接收的文檔。本發(fā)明的寫(xiě)組件把數(shù)據(jù)傳遞給將數(shù)據(jù)打包成MIME允許的消息的主電子郵件組件。當(dāng)消息被接收時(shí),主電子郵件組件將MIME消息連接在一起(如需要的話)且進(jìn)行解碼,并且將數(shù)據(jù)發(fā)送到與MIME類(lèi)型相關(guān)聯(lián)的認(rèn)可/讀組件當(dāng)中。本申請(qǐng)人之前所結(jié)合的母案概括地公開(kāi)并要求保護(hù)了郵箱處理軟件,由此在模塊化組件電子郵件軟件的上下文范圍內(nèi),在郵箱列表中以不同方式顯示不同類(lèi)型的消息。有理由相信在本申請(qǐng)人的母案中所公開(kāi)的某些特性,可應(yīng)用于任何電子郵件客戶軟件,并且可以用于提高將文件附加到電子郵件上以及使用附加于電子郵件的文件的處理能力。發(fā)明概述因此本發(fā)明的目的就是給電子郵件程序提供不同類(lèi)型的圖標(biāo),其中該電子郵件程序包括收件箱列表,借以顯示不同類(lèi)型的消息和附加文檔。將于下文詳細(xì)討論的合乎此目的的根據(jù)本發(fā)明的電子郵件客戶軟件,具有一郵箱顯示窗口,它列出消息連同用于每一個(gè)消息的圖標(biāo),在此圖標(biāo)關(guān)聯(lián)于此消息的MIME類(lèi)型。含有文件附件的郵件被列于該收件箱中,且?guī)в斜砻鞲郊拥诫娮余]件上的文件類(lèi)型的圖標(biāo)。郵箱顯示窗口對(duì)MIME類(lèi)型進(jìn)行解析,并且或者從操作系統(tǒng)的圖標(biāo)注冊(cè)表中、或者從由電子郵件客戶軟件維護(hù)的圖標(biāo)目錄中選擇適當(dāng)?shù)膱D標(biāo)。例如,如果接收到帶有ADOBEACROBAT文件附件的電子郵件,則ADOBEACROBAT圖標(biāo)將會(huì)出現(xiàn)在郵箱列表中的郵件項(xiàng)目列表旁邊。另外,如果用如在本申請(qǐng)人的母案中描述的特定的認(rèn)可/讀組件創(chuàng)建消息,則與該認(rèn)可/讀組件相關(guān)聯(lián)的圖標(biāo)將會(huì)顯示于郵箱列表當(dāng)中作為顯示郵件項(xiàng)目的行的一部分。本發(fā)明的電子郵件軟件已通過(guò)參考在本申請(qǐng)人的母案中的電子郵件軟件的例子作出了描述,其中該電子郵件軟件包括一主電子郵件組件,以及許多個(gè)經(jīng)由應(yīng)用程序設(shè)計(jì)接口(API)與電子郵件組件進(jìn)行雙向通信的可安裝組件。該可安裝組件包括認(rèn)可/讀組件以及郵箱顯示窗口組件。根據(jù)目前優(yōu)選實(shí)施例,還包括一用于維護(hù)圖標(biāo)數(shù)據(jù)庫(kù)的組件。當(dāng)郵箱被打開(kāi)、郵件的列表被滾動(dòng)等時(shí)侯,該郵箱顯示窗口組件的功能被用戶調(diào)用。郵箱顯示窗口組件最好包括現(xiàn)有技術(shù)中郵箱顯示窗口的所有功能,以及包括為了基于消息的MIME類(lèi)型顯示消息相關(guān)信息而查看圖標(biāo)目錄的功能。在Lingo實(shí)施例當(dāng)中,為每個(gè)帶有以消息的MIME類(lèi)型和子類(lèi)型為基礎(chǔ)的附加TYPE字段的消息創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。內(nèi)部TYPE字段用于將MIME類(lèi)型關(guān)聯(lián)到圖標(biāo)。另一個(gè)實(shí)施例,直接使用消息的“content-type”(MIME類(lèi)型)標(biāo)題的內(nèi)容來(lái)與圖標(biāo)圖像相關(guān)聯(lián)。如果在圖標(biāo)目錄中沒(méi)有合適的圖標(biāo),那么如果包含于MIME消息當(dāng)中子部分的圖標(biāo)圖像數(shù)據(jù)是可利用的話,則郵箱顯示窗口就使用它。否則,不使用圖標(biāo)或使用普通圖標(biāo)。根據(jù)目前優(yōu)選實(shí)施例,類(lèi)型表由類(lèi)型更新器組件來(lái)維護(hù)。該類(lèi)型表包括一列消息類(lèi)型和子類(lèi)型,連同將由郵箱顯示窗口使用的可縮放的圖標(biāo)的文件名。本發(fā)明優(yōu)選可縮放的圖標(biāo),以便于該圖標(biāo)能隨著用以顯示郵箱內(nèi)容的所選字體的大小來(lái)進(jìn)行調(diào)整。提供了類(lèi)型更新器組件的幾個(gè)實(shí)施例。根據(jù)第一實(shí)施例,圖標(biāo)由用戶人工地進(jìn)行安裝/移除。根據(jù)第二實(shí)施例,當(dāng)模塊化的認(rèn)可/讀組件被安裝/移除時(shí),圖標(biāo)被自動(dòng)地安裝/移除。根據(jù)第三實(shí)施例,只要郵箱顯示窗口遇到新的消息類(lèi)型,就會(huì)自動(dòng)添加新圖標(biāo)。新圖標(biāo)或者從操作系統(tǒng)注冊(cè)表中檢索,或者從消息中嵌入的圖標(biāo)圖像數(shù)據(jù)中檢索。根據(jù)第四實(shí)施例,類(lèi)型更新器為新圖標(biāo)信息自動(dòng)查詢網(wǎng)絡(luò)服務(wù)器,并且如需要的話下載圖標(biāo)圖像數(shù)據(jù)。對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),參照詳細(xì)的說(shuō)明書(shū)述并結(jié)合提供的附圖,將更加清楚本發(fā)明的其他目的和有益效果。附圖簡(jiǎn)要說(shuō)明圖1是現(xiàn)有技術(shù)的電子郵箱顯示窗口屏幕;圖2是根據(jù)本發(fā)明的電子郵箱顯示窗口屏幕;圖2a是根據(jù)本發(fā)明可選實(shí)施例的電子郵箱顯示窗口屏幕;圖3是根據(jù)本發(fā)明的電子郵件客戶的組成結(jié)構(gòu)方塊圖;圖4是舉例說(shuō)明根據(jù)本發(fā)明的郵箱顯示窗口的基本操作的簡(jiǎn)化流程圖;圖5是舉例說(shuō)明根據(jù)本發(fā)明可選實(shí)施例的郵箱顯示窗口的基本操作的簡(jiǎn)化流程圖;圖6是舉例說(shuō)明用于不同郵件項(xiàng)目特性的圖標(biāo)查找的簡(jiǎn)化流程圖;圖6a是舉例說(shuō)明用于MIME類(lèi)型的圖標(biāo)查找的簡(jiǎn)化流程圖;圖6b是舉例說(shuō)明用于附件filetype(文件類(lèi)型)的圖標(biāo)查找的簡(jiǎn)化流程圖;圖7是舉例說(shuō)明類(lèi)型更新器組件的一個(gè)實(shí)施例的initialize_TypeTable函數(shù)的簡(jiǎn)化流程圖;圖8是舉例說(shuō)明類(lèi)型更新器組件的一個(gè)實(shí)施例的read_TypeTable_file函數(shù)的簡(jiǎn)化流程圖;圖9是舉例說(shuō)明類(lèi)型更新器組件的一個(gè)實(shí)施例的write_TypeTable_file函數(shù)的簡(jiǎn)化流程圖;圖10是舉例說(shuō)明類(lèi)型更新器組件的一個(gè)實(shí)施例的read_icon_files_to_RAM函數(shù)的簡(jiǎn)化流程圖;以及圖11是舉例說(shuō)明類(lèi)型更新器組件的一個(gè)實(shí)施例的install_Type函數(shù)的簡(jiǎn)化流程圖;附錄簡(jiǎn)要說(shuō)明附錄A是根據(jù)本發(fā)明的郵箱顯示窗口的MACROMEDIADIRECTOR程序清單;以及附錄B是根據(jù)本發(fā)明的類(lèi)型更新器的MACROMEDIADIRECTOR程序清單。首選實(shí)施例詳細(xì)說(shuō)明現(xiàn)參照?qǐng)D2,根據(jù)本發(fā)明的電子郵件客戶軟件具有郵箱顯示窗口,其列出消息連同每一個(gè)消息的圖標(biāo),其中圖標(biāo)與該消息的MIME類(lèi)型相關(guān)聯(lián)。包含文件附件的郵件,和表示附加到該電子郵件上的文件類(lèi)型的圖標(biāo)一起在收件箱當(dāng)中列出。例如,如圖2所示,標(biāo)題為“MinutesofMeeting”的郵件消息被列出且?guī)в幸籑ICROSOFTWORD圖標(biāo),其表示該電子郵件消息具有附加于其上的WORD文件。標(biāo)題為“NewRadioAd”的消息被列出且?guī)в幸籕UICKTIMEWAV圖標(biāo),其表示在該電子郵件上附加了一音頻文件。標(biāo)題為“NewAdBrochure”的消息具有由ACROBAT圖標(biāo)表示的附加ADOBEACROBAT文件。同樣地,消息“SalesForecast”被顯示且?guī)в幸籈XCEL電子表格圖標(biāo);“CustomerDatabase”消息被顯示且?guī)в幸籉ILEMAKERPRO數(shù)據(jù)庫(kù)圖標(biāo);以及消息“YearEndAccounting”被顯示且?guī)в幸籕UICKEN圖標(biāo)。根據(jù)本發(fā)明,該郵箱顯示窗口解釋消息的MIME類(lèi)型和/或附件的MIME類(lèi)型或文件類(lèi)型,若有的話,從OS(操作系統(tǒng))的圖標(biāo)注冊(cè)表中選擇適當(dāng)圖標(biāo),或者從由電子郵件客戶軟件所維護(hù)的圖標(biāo)目錄中進(jìn)行選擇。通過(guò)之前結(jié)合的本申請(qǐng)人的母案中關(guān)于該電子郵件軟件的舉例來(lái)描述本發(fā)明的電子郵件軟件,其包括一主電子郵件組件以及許多可安裝組件,經(jīng)由應(yīng)用程序設(shè)計(jì)接口(API)與該電子郵件組件進(jìn)行雙向通信??砂惭b組件既包括認(rèn)可/讀組件還包括至少一個(gè)郵箱顯示窗口組件。圖2a舉例說(shuō)明了之前結(jié)合的本申請(qǐng)人的母案中的電子郵件軟件的一個(gè)實(shí)施例,其中對(duì)表示與郵件消息相關(guān)聯(lián)的認(rèn)可/讀組件的圖標(biāo)進(jìn)行顯示。該實(shí)施例還可以從現(xiàn)有技術(shù)的電子郵件客戶那里接收電子郵件(或發(fā)送電子郵件到其上)。圖2a舉例說(shuō)明了一郵箱列表,其中的兩個(gè)郵件項(xiàng)目被示為帶有兩個(gè)圖標(biāo),也就是回形針和ACROBAT圖標(biāo)以及回形針和PHOTOSHOP圖標(biāo)。該雙圖標(biāo)的顯示表明該郵件被創(chuàng)建且不帶有任何特定的認(rèn)可/讀組件,并且具有由某些其它程序創(chuàng)建的附件,在此例中為ACROBAT和PHOTOSHOP。如上面所提到的,通過(guò)之前結(jié)合的本申請(qǐng)人的母案中關(guān)于該電子郵件軟件的舉例來(lái)描述本發(fā)明的電子郵件軟件,其包括主電子郵件組件以及許多可安裝組件。根據(jù)目前優(yōu)選的施例,還包括用于維護(hù)圖標(biāo)數(shù)據(jù)庫(kù)的組件。圖3舉例說(shuō)明了這些組件之間的連接關(guān)系。如圖3所示,被稱(chēng)為T(mén)YPETABLE的數(shù)據(jù)結(jié)構(gòu)10由被稱(chēng)為T(mén)YPE_UPDATER的組件12創(chuàng)建并進(jìn)行維護(hù)。在附錄B中舉例說(shuō)明了根據(jù)本發(fā)明的TYPE_UPDATER的工作實(shí)例,此附錄B在下文被更加詳細(xì)地描述。該TYPETABLE的主要目的就是將由MBOX_DISPLAYER組件14來(lái)讀取。該TYPE_UPDATER12和MBOX_DISPLAYER14利用函數(shù)調(diào)用及共享數(shù)據(jù)結(jié)構(gòu)TYPETABLE在相互之間進(jìn)行通信。例如,該MBOX_DISPLAYER包括對(duì)TYPE_UPDATER組件內(nèi)部的函數(shù)“initializeTYPETABLE”(306,圖6a)的調(diào)用。該MBOX_DISPLAYER利用在本申請(qǐng)人的母案以及或利用之前結(jié)合的序號(hào)為[BAK-007]的申請(qǐng)中所描述的API,與電子郵件客戶軟件進(jìn)行通信。如圖3所示,MBOX_DISPLAYER組件14和電子郵件客戶軟件16還具有雙向訪問(wèn)用戶郵件箱中電子郵件消息存儲(chǔ)庫(kù)的功能。根據(jù)目前優(yōu)選的實(shí)施例,如果消息是由本申請(qǐng)人的母案中描述的那種可安裝的應(yīng)用程序組件創(chuàng)建的話,那么該電子郵件消息就以一可選TYPE字段的方式被存儲(chǔ),其中可選TYPE字段包括從MIME類(lèi)型中以及消息的子類(lèi)型標(biāo)題字段中提取的信息。當(dāng)郵箱被打開(kāi)、郵件列表被滾動(dòng)等時(shí)侯,該MBOX_DISPLAYER組件的功能被用戶調(diào)用。本領(lǐng)域的技術(shù)人員將意識(shí)到,大多數(shù)電子郵件客戶軟件會(huì)提供許多不同的郵箱,諸如收件箱、發(fā)件箱、讀郵件、發(fā)郵件等。MBOX_DISPLAYER組件14最好包括現(xiàn)有技術(shù)中郵箱顯示窗口的所有功能,并且還包括查看TYPETABLE的功能(以及如下文更詳細(xì)解釋的那樣,以瀏覽MIME消息的主體)從而為郵箱顯示區(qū)域中消息標(biāo)題旁邊的顯示區(qū)域查找適當(dāng)?shù)膱D標(biāo)。根目前優(yōu)選的實(shí)施例,圖標(biāo)作為小型圖像文件來(lái)存儲(chǔ),例如EPS文件或GIF文件,并且通過(guò)TYPETABLE數(shù)據(jù)結(jié)構(gòu)被指向。為了調(diào)節(jié)郵箱顯示區(qū)域當(dāng)中不同大小的字體的使用,還提供了用于縮放圖標(biāo)圖形大小的裝置??梢允褂萌N方法。第一,可以利用標(biāo)準(zhǔn)內(nèi)插算法來(lái)縮放該圖像。第二,可以存儲(chǔ)及檢索帶有不同分辨率的圖標(biāo)圖像的多重拷貝,從而匹配字體磅值大小的限定值。第三,且目前所優(yōu)選的方法,借以使用該第一、二兩種方法的結(jié)合,為每個(gè)圖標(biāo)至少存儲(chǔ)一幅圖像,選擇與該字體磅值大小最相匹配的圖標(biāo),并作為需要來(lái)接著縮放以更加匹配的字體磅值大小。表1舉例說(shuō)明如何將TYPETABLE數(shù)據(jù)存儲(chǔ)于永久性存儲(chǔ)器(例如,硬盤(pán))當(dāng)中。表1表1舉例說(shuō)明了至少五種mime類(lèi)型。前四個(gè)是用于認(rèn)可/讀的可安裝組件的mime類(lèi)型。該可安裝組件由“.dxr”文件擴(kuò)展名表示。在表1當(dāng)中舉例說(shuō)明的multipart/mixed(第五種)mime類(lèi)型表明與其利用可安裝組件,倒不如利用外部應(yīng)用程序來(lái)創(chuàng)建附件。如上文參考圖2a所指出的,普通回形針圖標(biāo)用于將附件與利用可安裝組件創(chuàng)建的郵件消息相區(qū)分。表2舉例說(shuō)明當(dāng)載入RAM中時(shí)的類(lèi)型表(typetable)數(shù)據(jù)結(jié)構(gòu)。表2當(dāng)數(shù)據(jù)結(jié)構(gòu)TYPETABLE被載入到RAM當(dāng)中,其被稱(chēng)為SG_TYPETABLE,并且具有如表2所示的結(jié)構(gòu)。這種結(jié)構(gòu)包括指向圖標(biāo)的指針。該指針在示范性實(shí)施例中是一LINGO指定成員(castmember)指針。如上文指出的,根據(jù)該示范性實(shí)施例,當(dāng)電子郵件消息具有附加文件時(shí),會(huì)顯示一普通附件圖標(biāo)以及顯示一該附件所特帶的圖標(biāo)。由RAM中創(chuàng)建于程序分支(fly)(例如,如圖6b所示)上的稱(chēng)為SG_ATTACH_TYPETABLE的數(shù)據(jù)結(jié)構(gòu)來(lái)指向這第二個(gè)圖標(biāo)。該SG_ATTACH_TYPETABLE的基本結(jié)構(gòu)在表3當(dāng)中舉例說(shuō)明。表3如表3所示,文件擴(kuò)展名與圖標(biāo)指針及程序路徑名相關(guān)聯(lián),其中該程序用于讀取附件。參照?qǐng)D6b在下文將更加詳細(xì)的討論,該SG_ATTACH_TYPETABLE利用來(lái)自于系統(tǒng)注冊(cè)表內(nèi)的圖標(biāo)構(gòu)造于程序分支上。MBOX_DISPLAYER組件的目前優(yōu)選的實(shí)施例,將在附錄A中詳細(xì)的介紹,附錄A類(lèi)似于之前結(jié)合的本申請(qǐng)人的母案當(dāng)中的附錄B。示于此附錄A中的代碼清單,與本申請(qǐng)人的母案中起始于第287行的代碼清單不同,該起始于第287行的代碼是主郵箱顯示函數(shù)的開(kāi)始。該主郵箱顯示函數(shù)也由圖4中流程圖解釋說(shuō)明,現(xiàn)參照?qǐng)D4和附錄A,該函數(shù)起始于附錄A當(dāng)中第287行且在圖4的流程圖中從START101開(kāi)始。在顯示郵箱內(nèi)容之前,建立指向該TYPETABLE的指針以及相關(guān)聯(lián)的系統(tǒng)特征,如附錄A中第293-300行和圖4中的103、105所示。不同的郵箱字段,例如消息號(hào)碼、標(biāo)題、日期、消息讀取指示器,在附錄A中第302-307行和圖4中107被清除。將用于顯示圖標(biāo)圖形的“Spritechannels”(子圖形通路)(MACROMEDIA圖形保持器),在附錄A中第309-311行和圖4中107被清除。起始于附錄A中第313行和在圖4中109,下一個(gè)消息列表被顯示。組成郵箱顯示區(qū)域的每一行的單元(例如,消息標(biāo)題、日期、發(fā)送人姓名,以及圖形單元)被稱(chēng)作為“屬性”。在附錄A中第320-326行和圖4中111、113,這些屬性可以從消息中讀取。除郵箱、mime類(lèi)型及狀態(tài)之外,如圖4中111和附錄A中第320-323行所描述的那樣當(dāng)讀取時(shí),所有屬性會(huì)自動(dòng)被顯示。在圖4中的113和附錄A中第324-326行,讀取該郵箱、mime類(lèi)型及狀態(tài)屬性。根據(jù)目前優(yōu)選的實(shí)施例,mime類(lèi)型的圖標(biāo)還用于顯示消息狀態(tài)。如果消息已經(jīng)被讀取,則圖標(biāo)以灰度來(lái)顯示。如果消息未被讀取,則圖標(biāo)以彩色來(lái)顯示。查找圖標(biāo)以及將其設(shè)置成灰度或彩色的步驟,在附錄A中第328-355行進(jìn)行舉例說(shuō)明。在附錄A中第332-334行和圖4中115,設(shè)定子圖形通路計(jì)數(shù)器。在附錄A中第340-343行和圖4中117,解析該TYPETABLE數(shù)據(jù)結(jié)構(gòu)。如果該TYPETABLE沒(méi)有包括用于這條消息的由mime類(lèi)型表示的圖標(biāo),那么就在附錄A中第344-346行和圖4中119選擇一默認(rèn)圖標(biāo)。如果消息的狀態(tài)表明它(它的附件)已被讀取,那么就在附錄A中第348-349行和圖4中121將圖標(biāo)設(shè)定成灰色色度樣式。在滾動(dòng)郵箱內(nèi)容列表期間,為快速訪問(wèn)而將被選定的圖標(biāo)添加到圖標(biāo)列表當(dāng)中。此內(nèi)容在附錄A中第351-352行和圖4中123描述了。在附錄A中第354-374行和圖4中125的主郵箱顯示區(qū)域函數(shù)之其余部分,涉及將文本及圖標(biāo)定位在適當(dāng)?shù)钠聊晃恢?。如圖4中127的判斷結(jié)果所說(shuō)明的那樣,第315-374行所示的代碼根據(jù)郵箱內(nèi)消息的數(shù)量進(jìn)行重復(fù)。當(dāng)沒(méi)有更多的消息將要列出時(shí),如附錄A中第376行和圖4中129所示,該主郵件顯示區(qū)域函數(shù)結(jié)束。雖然在代碼及流程圖中目前沒(méi)有描述,但是如上文所述,如果在圖標(biāo)目錄當(dāng)中沒(méi)有合適的圖標(biāo),那么若可能的話該郵箱顯示窗口可以使用包含于MIME消息的子部分當(dāng)中的圖標(biāo)圖像數(shù)據(jù)。本領(lǐng)域技術(shù)人員將會(huì)意識(shí)到,通過(guò)從MIME文件中的位置讀取圖標(biāo)圖像數(shù)據(jù)很容易實(shí)現(xiàn)這種功能,其中該MIME文件由上文中參照的標(biāo)準(zhǔn)被定義??梢詫?zhí)行此功能的代碼插入到附錄A中第325行或附錄A中第345行。如上文所述,附錄A的剩余部分實(shí)質(zhì)上與本申請(qǐng)人的母案中附錄B的郵箱組件相同,并且其說(shuō)明書(shū)已經(jīng)在之前所結(jié)合的本申請(qǐng)人的母案當(dāng)中作了充分闡述。本領(lǐng)域的技術(shù)人員將會(huì)意識(shí)到,附錄中的代碼清單為MACROMEDIADIRECTOR開(kāi)發(fā)程序所特有,并且還會(huì)意識(shí)到可以利用不同的開(kāi)發(fā)環(huán)境來(lái)實(shí)現(xiàn)相同的功能。圖5舉例說(shuō)明了在更為一般的方式下郵箱顯示窗口函數(shù)的功能,其能夠應(yīng)用于不同程序設(shè)計(jì)語(yǔ)言中?,F(xiàn)在參照?qǐng)D5,該郵箱顯示區(qū)域起始于201以讀取消息列表。在202進(jìn)行檢查以確定TYPETABLE是否已被初始化。如果尚未初始化,則在204初始化該TypeTable,其中204將參照?qǐng)D7在下文中更詳細(xì)地描述。在203郵箱顯示區(qū)域獲取下一個(gè)消息列表。對(duì)于在203獲得的消息列表,在205郵箱繼續(xù)以獲取此列表的屬性,并且在207獲取屬性值。如果在209確定該屬性使用圖標(biāo)來(lái)顯示,則在211調(diào)用“geticon”程序(此程序已在圖6中舉例說(shuō)明)。涉及本申請(qǐng)的消息屬性是(a)消息的MIME類(lèi)型和(b)是否消息帶有文件附件。在圖5的流程圖中(209),該系統(tǒng)檢查被作為諸如#type、#date、#mailbox、#status等LINGO符號(hào)來(lái)執(zhí)行的當(dāng)前消息屬性是否由圖標(biāo)來(lái)代表。盡管在當(dāng)前執(zhí)行方式中,每個(gè)屬性被分開(kāi)編碼,但是在圖5的流程圖當(dāng)中描述的更為一般的實(shí)施方式,能夠通過(guò)檢查目標(biāo)符號(hào)諸如#type是否為一列表數(shù)據(jù)結(jié)構(gòu)中的某個(gè)單元,例如在圖5中步驟209的Properties_with_Icon=(#type,#has_attachment)而實(shí)現(xiàn)。在213該圖標(biāo)被顯示。在209如果確定屬性不使用圖標(biāo),那么在215顯示該屬性值。在217確定是否有此消息列表的附加屬性。如果有,則程序返回到205。如果沒(méi)有,則在219確定是否有更多消息列表將要列出。如果有,則程序返回到203。如果沒(méi)有,則程序在221結(jié)束。圖6舉例說(shuō)明包含在附錄A第328-350行中的一般化功能。在圖5中211是一般的“getIcon(獲取圖標(biāo))”程序調(diào)用。程序起始于301,通過(guò)調(diào)用程序被提供屬性名和屬性值。如果在303確定該屬性為“mimetype(mime類(lèi)型)”或遵照LINGO執(zhí)行方式“#type”,那么在305獲得該mime類(lèi)型的圖標(biāo),并且在307將該圖標(biāo)的指針?lè)祷亟o調(diào)用程序。為mime類(lèi)型獲取圖標(biāo)的實(shí)際步驟在圖6a中描述。如果在309確定該屬性為“hasattachment”(帶附件),則在311就會(huì)為“hasattachment”獲得圖標(biāo),并且在307將該圖標(biāo)的指針?lè)祷亟o調(diào)用程序。用于MicrosoftWindows平臺(tái)的獲取文件附件圖標(biāo)的程序流程已在圖6b中描述。作為可選擇的,該TYPETABLE數(shù)據(jù)結(jié)構(gòu)可以包括用于從文件擴(kuò)展名映射到MIMEtype及MIMEtype圖標(biāo)的filetype字段。如果以這種方法修改TYPEDATA,那么消息類(lèi)型和文件類(lèi)型的圖標(biāo)查找將都要使用該TYPETABLE。當(dāng)遇到經(jīng)由先前未知的消息類(lèi)型或經(jīng)由先前未知的文件類(lèi)型時(shí),需要在TYPE_UPDATER中進(jìn)行相關(guān)修改以用于安裝filetype/MIMEtype組合。由于文件類(lèi)型擴(kuò)展名不像Mimetype那么豐富,因此相同文件類(lèi)型擴(kuò)展名可能映射到許多不同MIME類(lèi)型。例如,如果軟件制造商為他們軟件的不同版本分配不同的MIME子類(lèi)型,那么上述情況可能會(huì)由于相同軟件的不同版本問(wèn)題而產(chǎn)生。如果在313確定屬性為“messageread”(讀消息),則在315獲得“messageread”的圖標(biāo),并且在307將該圖標(biāo)的指針?lè)祷亟o調(diào)用程序。如果在317確定屬性為“prority(優(yōu)先級(jí))”,則在319獲得“priority”(優(yōu)先級(jí))的圖標(biāo),并且在307將該圖標(biāo)的指針?lè)祷亟o調(diào)用程序。通過(guò)前述內(nèi)容,本領(lǐng)域技術(shù)人員將會(huì)意識(shí)到,可以為不同屬性顯示多種不同圖標(biāo)。圖6a舉例說(shuō)明了包含在附錄A第328-346行中的一般化執(zhí)行方式。在圖6中305是“geticonformimetype”(為mime類(lèi)型獲取圖標(biāo))函數(shù)調(diào)用。此程序起始于302,通過(guò)調(diào)用程序提供minetype。在304確定該TYPETABLE是否已被初始化。如果尚未初始化,則在306實(shí)現(xiàn)初始化。初始化程序可以駐留在TYPE_UPDATER組件當(dāng)中,或者可以調(diào)用駐留于TYPE_UPDATER組件中的函數(shù)。例如,在LINGO執(zhí)行方式中,函數(shù)Read_TypeTable_File(圖8),其為該TYPE_UPDATER組件的一部分,被用于初始化TYPETABLE數(shù)據(jù)結(jié)構(gòu)。在初始化之后,或者如果在306已確定該TYPETABLE已經(jīng)被初始化,則在308使用mime類(lèi)型從該TYPETABLE檢索圖標(biāo)指針。參看附錄A,第328-342行。在310確定圖標(biāo)指針是否為空(null)。如果是,在312調(diào)用“Installmessagetype”(安裝消息類(lèi)型)程序。該“Installmessagetype”程序,其包含于TYPE_UPDATER組件當(dāng)中,在下文參照?qǐng)D11作了詳細(xì)解釋?zhuān)搱D11舉例說(shuō)明了新的消息處理器以及mimetypes圖標(biāo)的安裝。如果該圖標(biāo)指針不為空,則在314確定該圖標(biāo)指針是否指向“IconnotInstalled”(圖標(biāo)未安裝)。如果屬于這種情況,則在316將該圖標(biāo)指針設(shè)定為默認(rèn)指針。在任何一種情況下,都在318將非空(non-null)指針?lè)祷亟o調(diào)用程序。圖6b舉例說(shuō)明為電子郵件消息的附件獲取圖標(biāo)的示例性流程。起始于320,讀取附件的文件擴(kuò)展名。(注意在Windows平臺(tái)上,文件名中“.”后面的三個(gè)字母確定了該“filetype”。對(duì)于其它平臺(tái),諸如Macintosh平臺(tái),該filetype和“creatorcode”(生成器代碼)被羅列于文件的“resourcefork”(資源派生指令)當(dāng)中。因而,對(duì)于那些平臺(tái)而言,第一步將是從文件的資源派生指令中讀filetype(和creatorcode))。一旦filetype(或filetype和creatorcode)已被確定,在322程序就試圖在SG_TYPETABLE中找到合適的圖標(biāo)。如果在324確定未找到合適的圖標(biāo),那么在326程序就試圖在SG_ATTACH_TYPETABLE中找到合適的圖標(biāo)。如果在328確定未找到合適的圖標(biāo),那么在330和332程序就試圖在系統(tǒng)注冊(cè)表中找到合適的圖標(biāo)。(注意對(duì)于其他操作系統(tǒng),圖標(biāo)資源可以被存儲(chǔ)在不同的地方,例如,在MacintoshOS中圖標(biāo)可存儲(chǔ)在不可見(jiàn)的“desktop”(桌面)文件當(dāng)中。)如果在334找到了合適的圖標(biāo),則在336設(shè)定指向該圖標(biāo)的指針,并且在338將此指針寫(xiě)入到SG_ATTACH_TYPETABLE中。在340將該圖標(biāo)的指針?lè)祷亟o郵箱顯示窗口。參看圖6中311和圖5中211。如果在342沒(méi)有找到合適的圖標(biāo),則不提供圖標(biāo)指針?,F(xiàn)在返回到附錄B,第1-26行提供了TypeUpdater(類(lèi)型更新器)的全面概述和介紹。該TypeUpdater包括十一個(gè)函數(shù)。其中的三個(gè)是由該郵箱顯示窗口調(diào)用的公共函數(shù)。這些函數(shù)包括Initalize_TypeTable,Install_Type,以及Uninstall_Type。其余的八個(gè)函數(shù)是TypeUpdater中使用的專(zhuān)用函數(shù)。這些函數(shù)包括Write_Typetable-file,Read_Typetable_File,Read_Icon_Files_To_RAM,read_iconFile,delete_mimetype,insert_mimetype,delete_filetype,insert_filetype。此Initialize_TypeTable函數(shù)已在圖7中和附B中第29-60行舉例說(shuō)明。在圖7中函數(shù)起始于360,在362(附錄B中第39行)將SG_TYPETABLE設(shè)定為零。在364將SG_ATTACH_TYPETABLE設(shè)定為零(附錄B中第43行)。在366(附錄B中第44行)將存儲(chǔ)于磁盤(pán)上的Typetable(類(lèi)型表)文件讀入到該SG_TYPETABLE當(dāng)中。此read_typetable_file內(nèi)部函數(shù)已在圖8中和附錄B中第207-252行舉例說(shuō)明。在368(附錄B中第46行)執(zhí)行錯(cuò)誤檢驗(yàn),以確定是否任何數(shù)據(jù)已被載入到RAM當(dāng)中。如果沒(méi)有數(shù)據(jù)被讀取,在370(附錄B中第47行)將對(duì)用戶發(fā)出警告,并在372(附錄B中第48行)返回失敗。否則,在374(附錄B中第51行)將圖標(biāo)文件讀入到RAM當(dāng)中。在376(附錄B中第47行)執(zhí)行錯(cuò)誤檢驗(yàn)。如果數(shù)據(jù)已被成功讀取,則在378(附錄B中第60行)函數(shù)結(jié)束。現(xiàn)在回到圖8及附錄B中第207-252行,此read_typetable_file函數(shù)起始于380(附錄B中第218行)。在382(附錄B中第222行)將該SG_TYPETABLE設(shè)定為零。在384(附錄B第224-227行)將typetable.txt文件打開(kāi),并在386(附錄B中第229行)執(zhí)行文件打開(kāi)錯(cuò)誤檢驗(yàn)。如果檢測(cè)到打開(kāi)文件過(guò)程中的錯(cuò)誤,則在388(和附錄B中第230行)產(chǎn)生錯(cuò)誤警告,在390(附錄B中第231行)將文件關(guān)閉,并且在392(附錄B中第232行)返回SG_TYPETABLE。如果打開(kāi)文件未帶錯(cuò)誤,那么在391讀取第一行,并在此開(kāi)始一循環(huán)(步驟394-408),當(dāng)?shù)竭_(dá)文件末尾處時(shí)此循環(huán)最終在394結(jié)束,在此之后在390(附錄B中第231行)關(guān)閉文件并在392(附錄B中第232行)返回SG_TYPETABLE。如附錄B中第235-239行所示,由于LINGO不能逐行讀取,因而該LINGO執(zhí)行方式將整個(gè)文件讀入一字符串并模擬逐行讀取。當(dāng)需對(duì)行進(jìn)行讀取時(shí),該行的第一個(gè)單詞是mimetype(附錄B中第243行)。在396(附錄B中第244行)將該mimetype插入到SG_TYPETABLE當(dāng)中。在398如果被發(fā)現(xiàn)沒(méi)有定義該mimetype,則在400警告用戶并且在391讀取下一行。如果該mimetype已被定義,則讀取該行中的下一個(gè)單詞(filetype),并且在402(附錄B中第245行)將其插入到SG_TYPETABLE當(dāng)中。讀取該行中的下一個(gè)單詞(iconFileName),并且在404(附錄B中第246行)將其插入到SG_TYPETABLE當(dāng)中。讀取該行的下一個(gè)單詞(msgHandler),并且在406(附錄B中第247行)將其插入到SG_TYPETABLE當(dāng)中。在400報(bào)告于408中檢測(cè)到的任何錯(cuò)誤。如上文指出的,該步驟會(huì)繼續(xù)直到該typetable.txt文件被完全讀取。在圖9和附錄B中第159-206行描述了函數(shù)Write_TypeTable_File。這個(gè)函數(shù)通過(guò)Install_Type函數(shù)在將新mimetype和圖標(biāo)添加到該SG_TYPETABLE之后,將SG_TYPETABLE的內(nèi)容寫(xiě)回到typetable.txt中,其中該Install_Type函數(shù)在下文參照?qǐng)D11進(jìn)行描述。該Write_TypeTable_File函數(shù)起始于410(附錄B中第163行),并且在412(附錄B第168行)第一次檢驗(yàn)該SG_TYPETABLE結(jié)構(gòu)是否為空。如果是空的,則在414(附錄B中第169行)返回錯(cuò)誤消息,且在416(附錄B中第170行)返回失敗消息。如果該SG_TYPETABLE結(jié)構(gòu)不是空的,則在418(附錄B中第173行)創(chuàng)建該typetable.txt文件的備份拷貝,并在420(附錄B中第176-180行)創(chuàng)建新的空文件。在422(附錄B中第181行)執(zhí)行錯(cuò)誤檢驗(yàn),并且如果在創(chuàng)建新文件的過(guò)程中檢測(cè)到錯(cuò)誤,則在424(附錄B中第182行)返回錯(cuò)誤消息。在426(附錄B中第183行)恢復(fù)該備份文件,并在428(附錄B中第184行)將返回碼設(shè)定為“fail”(失敗)。在430(附錄B中第203行)關(guān)閉typetable.txt文件。在432(附錄B中第204行)刪除該備份,并且在434(附錄B中第205-206行)返回此返回碼。如果創(chuàng)建新文件時(shí)無(wú)錯(cuò)誤,則在附錄B中第187-188行將其打開(kāi)用于寫(xiě)訪問(wèn),并且在第191行設(shè)定一起始行計(jì)數(shù)器。在436(附錄B中第192行)讀取SG_TYPETABLE中的第一個(gè)(下一個(gè))表項(xiàng)目。如果在438(附錄B中第193行)確定已經(jīng)達(dá)到SG_TYPETABLE的末尾,則在440(附錄B中第201行)將該返回碼設(shè)定為“success”(成功),在430關(guān)閉該文件,在432刪除該備份并且在434返回此返回碼。直到到達(dá)SG_TYPETABLE的末尾,才在442將數(shù)據(jù)設(shè)定為寫(xiě),以及才在446(附錄B中第194行)將該mimetype寫(xiě)入字符串。在446、448、以及450(附錄B中第195-197行)分別將filetype、iconfilename、以及messagehandlerfilename添加到該字符串當(dāng)中。在452(附錄B中第198行)將該字符串寫(xiě)入到新typetable.txt文件當(dāng)中,并且在454(附錄B中第199-200行)寫(xiě)入行分隔符。該函數(shù)循環(huán)到436并且繼續(xù)執(zhí)行,直到將SG_TYPETABLE中所有表項(xiàng)目都讀取完并將其寫(xiě)入到新typetable.txt文件當(dāng)中。圖10舉例說(shuō)明目前在附錄B第255-290行中的函數(shù)Read_Icon_Files_To_RAM。在圖10起始于456(附錄B中第255行),該函數(shù)首先在458(附錄B中第259行)確定是否任何一種mimetype都在結(jié)構(gòu)SG_TYPEIABLE當(dāng)中被定義。如果一個(gè)都沒(méi)有,未定義圖標(biāo),則在460(附錄B中第260行)返回錯(cuò)誤消息,在462(附錄B中第261行)將返回碼設(shè)定為“fail”,并且在464(附錄B中第261-262行)返回此返回碼。如果該結(jié)構(gòu)SG_TYPETABLE不為空,則在466(附錄B中第265行)該函數(shù)將默認(rèn)圖標(biāo)載入到RAM中并且設(shè)定指向該圖標(biāo)的指針。在附錄B中第268行將圖標(biāo)指針數(shù)與LINGOcastNumbers關(guān)聯(lián)起來(lái),并且在第270行為增加castNumbers設(shè)定計(jì)數(shù)器。在468(附錄B中第271行)讀取該結(jié)構(gòu)SG_TYPETABLE中的第一個(gè)(下一個(gè))表項(xiàng)目。如果在470(附錄B中第272行)確定沒(méi)有更多的表項(xiàng)目要讀取,則在472設(shè)定返回碼為“success”,并且在464(附錄B中第288行)返回此返回碼。只要還剩余表項(xiàng)目,就在474讀取mimetype以及在476(附錄B中第273行)為該mimetype讀取iconfilename(圖標(biāo)文件名)。如果在478(附錄B中第274行)確定沒(méi)有與這種mimetype相關(guān)聯(lián)的圖標(biāo),那么在480(附錄B中第275行)向該mimetype分配默認(rèn)圖標(biāo)指針。否則,在482(附錄B中第277行)利用函數(shù)read_iconfile(附錄B中第295-298行)讀取下一個(gè)圖標(biāo)位圖和指針。如果在484(附錄B中第278行)確定該圖標(biāo)指針不為零,則在第279行增加此castNum。否則不增加此castNum并且在480(附錄B中第280行)使用該默認(rèn)圖標(biāo)指針。在任意一種情況下,在486(附錄B中第283行),與mimetype相關(guān)聯(lián)的圖標(biāo)指針被插入。在第284行該計(jì)數(shù)器被增加,并且在468(附錄B中第285行)從SG_TYPETABLE當(dāng)中讀取下一個(gè)表項(xiàng)目。圖11舉例說(shuō)明了函數(shù)install_type,其用于為特定mimetype或filetype安裝新圖標(biāo)和/或消息處理器。該函數(shù)起始于600且需要進(jìn)行輸入,其中輸入包括圖標(biāo)文件名、消息處理器程序名,以及包括mimetype或包括filetype(附錄B中第71-75行)。此輸入可以由用戶或如下文所述的自動(dòng)裝置來(lái)提供。在602(附錄B中第78行)將此typetable文件讀入RAM,從而創(chuàng)建SG_TYPETABLE。如果在604(附錄B中第80行)確定SG_TYPETABLE為空,則在606(附錄B中第81-82行)返回一錯(cuò)誤。否則,若SG_TYPETABLE存在,則在608(附錄B中第87行)從SG_TYPETABLE檢索。在600中指定的mimetype(或filetype)如果該mimetype(或filetype)存在于SG_TYPETABLE中,并且如果已經(jīng)將其與圖標(biāo)及消息處理器相關(guān)聯(lián),那么在612(附錄B中第90行)提示用戶是否此mimetype(或fileype)需要被重新定義。如果用戶選擇NO(否),則在614(附錄B中第94行)返回一錯(cuò)誤。如果此mimetype之前未被定義或者如果用戶選擇重新定義它,則在616(附錄B中第102行)檢測(cè)于600中指定的消息處理器程序的有效性(例如,是否其目前位于硬盤(pán)或網(wǎng)絡(luò)上)。如果其無(wú)效,則在614(附錄B中第104-105行)返回一錯(cuò)誤。如果該消息處理器和mimetype(filetype)是有效的,則在618(附錄B中第108行)將他們?cè)赟G_TYPETABLE中互相之間建立相互關(guān)聯(lián)。接下來(lái),在620(附錄B第110行)檢測(cè)于600中指定的圖標(biāo)文件名的有效性。如果其無(wú)效,則在622(附錄B中第112行)指定默認(rèn)圖標(biāo),并且在624(附錄B中第111行)返回錯(cuò)誤警告。在任意一種情況下,如果需要,則在626(附錄B中第114行)將指定的圖標(biāo)文件名或默認(rèn)圖標(biāo)關(guān)聯(lián)于SG_TYPETABLE中的消息處理器和mimetype(filetype)。在628(附錄B中第122-125行)將Typetable.txt文件從SG_TYPETABLE中寫(xiě)回,并且除非遇到錯(cuò)誤,否則在630(附錄B中第126行)返回success。本領(lǐng)域的技術(shù)人員將會(huì)意識(shí)到,該install_type函數(shù)可以被其它程序所調(diào)用,以至于當(dāng)安裝/移除模塊化認(rèn)可/讀(modularauthoring/reading)組件時(shí),圖標(biāo)可以自動(dòng)被安裝/移除。雖然此處并沒(méi)有以代碼或附圖特別示出,但是本領(lǐng)域的技術(shù)人將會(huì)意識(shí)到,如何通過(guò)參照此處的附錄B以及本申請(qǐng)人的母案的組件安裝代碼來(lái)執(zhí)行此第二實(shí)施例。根據(jù)第三實(shí)施例,該郵箱顯示窗口只要遇到新的消息類(lèi)型,就會(huì)自動(dòng)添加新的圖標(biāo)。該新圖標(biāo)可從操作系統(tǒng)注冊(cè)表檢索,或者從嵌入于此消息中的圖標(biāo)圖像數(shù)據(jù)檢索。通過(guò)參照此處的附錄B以及上文所涉及的MIME標(biāo)準(zhǔn),本領(lǐng)域的技術(shù)人員將知道這個(gè)實(shí)施例的執(zhí)行方式。根據(jù)第四實(shí)施例,類(lèi)型更新器為新的圖標(biāo)消息自動(dòng)查詢網(wǎng)絡(luò)服務(wù)器,并且當(dāng)需要時(shí)或有計(jì)劃時(shí)下載圖標(biāo)圖像數(shù)據(jù)。本領(lǐng)域的技術(shù)人員將會(huì)意識(shí)到,從文件服務(wù)器上下載數(shù)據(jù)的自動(dòng)更新器是眾所周知的,并且會(huì)意識(shí)到可以通過(guò)參考公知的自動(dòng)更新器連同這里的附錄B一起來(lái)執(zhí)行此實(shí)施例。在這里已經(jīng)描述和舉例說(shuō)明了增強(qiáng)的電子郵件系統(tǒng)的幾個(gè)實(shí)施例,其中該電子郵件系統(tǒng)包括了用于識(shí)別mime類(lèi)型及顯示不同圖標(biāo)的方法和裝置。雖然已經(jīng)描述了本發(fā)明的特定實(shí)施例,但是這并不意指本發(fā)明僅限于此,而是意指與該領(lǐng)域同樣寬范圍的以及與說(shuō)明書(shū)中內(nèi)容相類(lèi)似的發(fā)明將會(huì)被允許。因此,雖然公開(kāi)了特定的代碼清單,但是可以認(rèn)識(shí)到能夠使用其他代碼。例如,雖然附錄舉例說(shuō)明了本發(fā)明利用MACROMEDIADIRECTORLINGO代碼的情況,但此發(fā)明也能夠用基于“MOZILLA”引擎,利用C++來(lái)實(shí)施,或通過(guò)其他許多流行的開(kāi)發(fā)工具來(lái)實(shí)現(xiàn)。同時(shí),雖然參考本申請(qǐng)人的母案來(lái)公開(kāi)本發(fā)明,其中所述母案包含具有可安裝的認(rèn)可/讀組件的電子郵件客戶,但是將會(huì)認(rèn)識(shí)到,此處所公開(kāi)的用于顯示在郵箱列表中代表mimetypes的圖標(biāo)之規(guī)則可以應(yīng)用于其他類(lèi)型的電子郵件客戶。此外,雖然了參考存儲(chǔ)圖標(biāo)圖像的方法(即,縮放圖像)公開(kāi)特定配置,但是將會(huì)認(rèn)識(shí)到,也能夠使用其他配置。進(jìn)一步而言,雖然本發(fā)明已經(jīng)示出了涉及在計(jì)算機(jī)屏幕上進(jìn)行顯示,但是將會(huì)認(rèn)識(shí)到,此顯示也可以在電視上、在個(gè)人數(shù)字助理上、在蜂窩電話上、在腕式手表上等等。本領(lǐng)域的技術(shù)人員因此將會(huì)意識(shí)到,在不偏離本發(fā)明的實(shí)質(zhì)和權(quán)利要求所限范圍的情況下,仍然能夠?qū)λ峁┑陌l(fā)明作出其他的修改。附錄A-郵箱顯示窗口代碼-Page1<prelisting-type="program-listing"><![CDATA[1-MBOX_DISPLAYERIMPLEMENTATION2--CodeforamailboxhandlerfortheKidCodeelectronicmailclient.3--ThisDirectorMIAWdisplaysamailboxinawindowasalist4-ofmessageswithonelineforeachmessage.Eachmessagehasthefollowingfieldsdisplayed;5-1.messagenumber6-2.Messagesender7-3.Messagemimetype&amp;status(singleiconusedtoindicatebothproperties)8-4.Messagesubjectheader9-5.Messagedate101112onstartMovie13globalSG_lastActiveWindow-superglobalthatkeepstrackofKClastactivewindow14globalmbxG_username-currentusername15globalmbxG_messages-listofmessages16globalmbxG_nMsgs-numberofmessagesinmailbox17globalmbxG_boxName-currentmailboxname18globalmbxG_whichLine-currenthiliteline=msgNumber19globalmbxG_subtractLine20globalmbxG_lips2122setmbxG_lips=02324-calledbyAPItoMainMovie25tellthestagetoemh_continue(#mailbox)26end272829onactivateWindow30globalSG_lnstActiveWindow31globalmbxG_myWindow32setSG_lastActiveWindow=mbxG_myWindow33endactivateWindow343536-Stopmoviehandlers37-------------------------------------------------------------------38StopMoviehandlerinaMIAWiscalledonlywhenthemovie39-playsthroughtotheendorjumpstoanothermovie.40-Itisn’tcalledwhenthewindowisclosedorthewindow41-isdeletedbytheforgetwindowcommand.4243onstopMovie44cleanUpMovie()45end46-------------------------------------------------------------------47calledtocloseaMIAWorautomaticallywhenever48-forgetWindowiscalled4950oncloseWindow51cleanUpMovie()]]></pre>附錄A一郵箱顯示窗口代碼一Page2<prelisting-type="program-listing"><![CDATA[52end535455~clemOpMovi~c~b~calledbybo~hsmpMovi~and56--closeWindow.5758oncieanUpMovie59globalmbxG_whichLlne60'globalmbxO_$obtr~ctLine61globalmbxO_nMsgs62globalmbxO_usemame63globalmbxO_lip$6465~CLEARFIELDSANDGLOBALVARIABLES6667putintofield"MailboxTitle"68put'~'intofield"preposit/onTitl,~"69put'"'intofield"McssageNumb~r"0put""intofield"MatlbokTo"71putintofield"MailboxSubject"72put'~'intofield"MailboxDam'73put'"'intofield"Messager~ad"7475.netmbxO_nMsg$=076setmbxO_.lip$=077res~tHilit~07879if~mdEmpty(mamb~r50)>50then'~80setthescriptTextofmember50='"'81endi.f~283setthememberNumofsprite6=thememtzrNumofmember"lipsup"/14setthelocofsprite4topoint(800,4)85setthelocof~prite5=point(800,19)86endcleanUpMovie878889--APIPublicHandlers90--91--UglyhacktoworkaroundproblemwithDirectoratm-la92--ofMIAWs.Theproblemisthat,aftercallingahandlerm~e93--MIAW,theStamMoviehandlerfortheMIAWdoesnotrununtil94--thecallingmomadvancestoitsnextframe.95--Therefore,thecallingsequenceinthecallingmovie96--hastobeengineeredsothattherealhax~er~intheMIAWdonot97~rununtilaftercOntrolhasbeenIxansf~edbacktothecalling98--movie,However,atleastonehandlerinth~MIAWmustbecalled99--bythecallingmovieb-.for~th~$tanMovi~h~nd!$rwillmn.100101--startMeUpisth~fakehandlerthat,when.~Ikxt!aythe102--mainmovie,willupon~turntothemainmovie,]]></pre>附錄A-郵箱顯示窗口代碼-Page3<prelisting-type="program-listing"><![CDATA[103-causethismovie’sstartMoviehandlertorun.104105-ThesecondpartofthiswormyhackiscontainedintheMIAW’s106-startMoviehandler...ItisacalltoaworkAroundhandlerin107-thecallingmoviecalledcontinueComponent108-Thecallingmovie’scontinueRebushandlercallstherealhandlers109-intheMIAW.110111onemc_startMeUp112-put"Macromediasucks!”113return(TRUE)114endemc_startMeUp115116----------------------------------------------------------------117initWindowiscalledbyemailmainwhenamessagehandler118-isopened119120onemc_initWindowuserName,windowName121globalmbxG_myWindow122globalmbxG_username123globalmbxG_platformType124125-put“ENTERemc_initWindowmailbox”126setmbxG_usemame=userName127setmbxG_myWindow=windowName128129-puppetthehilite(MB4-17-99)removedthis130resetHilite()131tellthestagetoemh_getColorDepth()132setcolorDepth=theresult133mapColors(colorDepth)134tel1thestagetoemh_getPlatformType()135setmbxG_platformType=theresult136137-put“EXTTemc_initWindowmailbox”138139return(TRUE)140141endemc_initWindow142143----------------------------------------------------144-closeWindowisnotcalledunlessRebusplaysas145-aMIAW.146147onemc_closeWindow148-put“ENTERemc_closeWindowMailbox”149closeWindow()150-stepframe151-put“EXITemc_closeWindowMailbox”152return(TRUE)153]]></pre>附錄A一郵箱顯示窗口代碼一Page4<prelisting-type="program-listing"><![CDATA[154end~mc_closeWindow155156157158onemc_g..tComponcnflnfo159return(list("SimpleMail",1,~Wnailbox,"text"))160endemc_getComponentlnfo161162163164onmbx_getMessage165--166----"open"buttonanddoubleCllckofhighlightedmessage167--~callstoemailmaintohandthemessage168----select~toamessagehandltngmovie169----Thisscriptwaspreviouslythe"Open"castmemeberscript:170--1771~globalmbxG_whichL[ne1772--globalmbxG_mes~ag~173~174--setmailData=getAt(mbxO_messages,mbxG_whickLine)1775--1'76--retum(ma,ilData)1'77--1'78--~79--180--endmbx..getMcssage181182183184onmbx_getMessageNumber185globalmbxG_whichLine186return(mbxO_whichLine)187enctmbx_getMessageNumber188189190~mbx_trashMessagesr~tum$alistofmessages~at~to191~betrash~inthemailffla.Emailmainwillrewrit~themailf'de192~Whenimplementedcorrectly,itwilldeterminewhichmessage~umbers193~areassociatedwiththecurrentlyselectedlinesinthemailbox194~display,updatethedisplaytoremovethe~emessagesfromthe195~list,and~tumthelistofdeletedmessagenumbars.196197onmbx_trashMessages198199globalmbxO_messages--listofme,ssagas200globalmbxG_nlvlsgs--numberofm~ssag,,sinmailbox201globalmbxO_whichlAne--currenthilitelin~=msgNumber202203--setmailData=getAt(mbxO_nmssages,mbxO_whiclxLine):204--]]></pre>附錄A-郵箱顯示窗口代碼-Page5<prelisting-type="program-listing"><![CDATA[205--telthestage206-return(mailData)207--endtell208209-needsimplementationthatcanhandlemultiplemessages210-alsoneedtorewritetrashItwhichdoesnotconformto211-APIrulethatonlyAPIhandlerscanbecalledinothermovies212-213-setmessage=mbxG_messages214ifmbxG_whichLine>0ANDmbxG_whichLine<=mbxG_nMsgsthen215tellthestagetoemh_alertUserToTrash()216setyes=theresult217ifnotyesthentetum[]--usercanceled218219setuashList=list(getAt(mbxG_mesmges,mbxG_whichLine))220deleteAt(mbxG_messages,mbxG_whichLine)221setmbxG_nMsgs=mbxG_nMsgs-1222displayMailbox(mbxG_messages)223resetHilite()224else225alert(“Pleaseclickonthemessageyouwishtodelete.”)226settrashList=[]227endif228229return(trashlist)230231endmbx_trashMessages232233———————————————————————————------------234-acceptsamailboxdatastructutethatconsistsofaboxnameand235-alistofmessages236237onmbx_openMailboxmailbox238globalmbxG_username239globalmbxG_messages240globalmbxG_boxName241globalmbxG_nMsgs242243-put“ENTERmbx_openMailbox”244setmbxG_boxName=getAt(mailbox,1)245putmbxG_userName&amp;“‘s“&amp;mbxG_boxNameintofield“mailboxTitle”246247setmbxG_messages=getAt(mailbox,2)248setmbxG_nMsgs=count(mbxG_messages)249250displayMailbox(mbxG_messages)251252-put“EXITmbx_openMailbox”253return(TRUE)254255endmbx_openMailbox]]></pre>附錄A-郵箱顯示窗口代碼-Page6<prelisting-type="program-listing"><![CDATA[256257-----------------------------------------258259Utilities-260------------------------------------261InitiaIizeforrattingoftextfields262-ThankstoFrankLeahyforthisone263264onSetTextInfofldNsme,fldValue,fldAlign,fldFont,fldSize,fldStyle265iffldValueEMPTYthen266putfldValueintofieldfldName267endif268setthetextAlignoffieldfldName=fldAlign269setthetextFontoffieldfldName=fldFont270setthetextSizeoffieldfldName=fldSize271setthetextStyleoffieldfldName=fldStyle272end273274--------------------------------------------------------275onformatFields276277-FORMATTHETEXTFIELDS278279setTextInfo“MessageNumber”,““,“l(fā)eft”,“arial”,14,“bold”280setTextInfo“MailboxTo”,““,“l(fā)eft”,“arial”,14,“bold”281setTextInfo“MailboxSubject”,““,“l(fā)eft”,“arial”,14,“bold”282setTextInfo“MailboxDate”,““,“l(fā)eft”,“arial”,14,“bold”283setTextInfo“Messageread”,““,“l(fā)eft”,“arial”,14,“bold”284285endformatFields286287-MAINMAILBOXDISPLAYFUNCTION288-displaysaMailboxstylelistingofmessages289-placestheappropriatecomponentsfromeachmessage290-intofieldmemberswithlinesalignedfordisplay291292ondisplayMailBoxmsgList293globalSG_TYPETABLE-superglobalvariablesharedacrossdifferentMIAWS294globalmbxG_red295globalmbxG_platformType296globalmbxG_iconList297298-mbxG_iconListforfutureuseinup/downscrollscripts299setmbxG_iconList=[]300setcount=0301302-firstclearallthefieldsandthesprites303put“”intofield“MessageNumber”304put“”intofield“MailboxTo”306put“”intofield“mailboxDate”]]></pre>附錄A-郵箱顯示窗口代碼-Page7<prelisting-type="program-listing"><![CDATA[307put“”intofield“Mcssageread”308309repeatwithi=40to70310setthememberofspritei=member“blank”311endrepeat312313-Fillthetextfieldswithinfofromallofthemessagessothatitisavailable314-whenthewindowscrolls315repeatwithmsginmsgList316317--withtheexceptionofmailbox,mimetypeandstatus,318--thefieldswillautomaticallybedisplayedwhenfilled319320putthelineCountofmember“MailboxTo”+1&amp;RETURNafterfield“MessageNumber”321putgetProp(msg,#from)&amp;RETURNafterfield“MailboxTo”322putgetProp(msg,#subject)&amp;RETURNafterfield“mailboxSubject”323putgetProp(msg,#date)&amp;RETURNafterfield“mailboxDate”324putgetProp(msg,#mailbox)intomailbox325putgetProp(msg,#mimetype)intomime326putgetProp(msg,#status)intostatus327328--Displaythemimetypeicon329--Weusethemimetypeicontoalsoindicatemessagestatus.Agreyscaleversionofthe330-iconisdisplayedifamessagehasbeenread.Otherwiseacoloriconisdisplayed.331332--lconswillbeplacedinspritechannel40andbeyond333seti=40+count334setcount=count+1335336-findtheiconforthemessagemimetype337--thiscodeshouldberewrittenusingadataaccessfunction,F(xiàn)ornowweneedto338--knowtheformatoftheTYPETABLEdatastructure339340setmimeProperties=getProp(SG_TYPETABLE,mime)341seticonCastMember=getAt(mimeProperties,2)-seconditemisthecastmember342number343344-ifthistypeisunknownthenusethedefaulticon345ificonCastMember=0thenseticonCastMember=thenumberofmember346“DefaultIcon”347348-getthegreyscaleversionoftheiconifthemessagehasbeenread.349ifstatus=“R”thenseticonCastMember=iconCastMember+1350351-addtheicontothelistoficonsusedforscrollingthewindow352append(mbx_iconList,iconCastMember)353354-placetheiconattheproperlocationfordisplay355setthememberNumofspriteitoiconCastMember356357-displaytheiconinthecorrectgridcellinthemailboxmessagelist.]]></pre>附錄A-郵箱顯示窗口代碼-Page8<prelisting-type="program-listing"><![CDATA[358-setthelocHofalliconsto50359setwhereGoesIcon=thelineCountofmember“MailboxTo”360puppetSpritei,TRUE361setthevisibleofspritei=TRUE362setthelocHofspriteito50363364-preciseplacementoftheiconnexttoit’smessage...365setpositonVar=105+linePosToLocV(member“MailboxTo”,whereGoeslcon)366setthelocVofspriteitopositonVar367-butdon’tleticonsfallgobeyondwindowiftherearemanymessages368ifpositonVar>550orpositonVar<105then369setthevisibleofspritei=FALSE370clse371setthevisibleofspritei=TRUE372endif373addPropmbxG_iconList,(thelocVofspritei),mime374endrepeat375376enddisplayMailbox377378-FUNCTIONSUSEDTORESPONDTOUSERINTERACTIONWITHMAILBOX379-HILITEMESSAGEiscalledwhenauserclicksamouseonamessageline380381onhiliteMessagewhichLine382globalmbxG_nMsgs,mbxG_whichLine,mbxG_subtractLine,mbxG_messages383384-KEEPTRACKOFSELECTEDLINE385386setmbxG_whichLine=whichLine387388-MAKESURELINEISVALID389390ifmbxG_whichLine<=0then391retun(0)-donothing,errorsarecaughtelsewhere392elseifmbxG_whichLine>mbxG_nMsgsthen393-userclickedsomewhereelseinfield394setmbxG_whichLine=0-resetto0395return(0)396endif397398-HIGHLIGHTSELECTEDLINE399400setwhichHighlight=mbxG_whichLine+mbxG_subtractLine401402-sinceallfieldmembersindisplayarekeptsynchronized403-anyonewilldoforlinePosToLocV404-use“MailboxTo”,it’ssmall405406setthelocVofSprite11to-,407(99+linePosToLocV(member“MailboxTo”,whichHighlight))408]]></pre>附錄A-郵箱顯示窗口代碼-Page9<prelisting-type="program-listing"><![CDATA[409-whentheuserdoubleclicksonahilitedmessage,gogetitfrommailFile410411ifthedoubleClickthen412setmaildata=gerAt(mbxG_mcssages,mbxG_whichLine)413tellthestage414emh_openMessage(maildata)415endtell416-mbx_getMessage()417endif418419endhiliteMessage420421422-----------------------------------------------------423onresetHilite424globalmbxG_whichLine,mbx_subtractLine425426setmbxG_whichLine=0427setmbxG_subtractLine=0428429-SETHIGHLIGHTOFFSTAGE430setthelocofsprite11topoint(11,20)431432endresetHilite433----------------------------------------------------------434-thisisalookuptableforcolor435-onlyreallynecessaryforMacplatform436-useonanycolorthatyouwantto437-settheforecoloroffield438439onmapColorscolorDepth440globalmbxG_red441globalmbxG_blue442globalmbxG_white443globalmbxG_black444445casecolorDepthof4464478448setmbxG_red=6449setmbxG_blue=4450setmbxG_white=045116452setmbxG_red=31744453setmbxG_blue=31454setmbxG_white=3276745532456setmbxG_red=16711680457setmbxG_blue=255458setmbxG_white=16777215459]]></pre>附錄A-郵箱顯示窗口代碼-Page10<prelisting-type="program-listing"><![CDATA[460endcase461462setmbxG_black=theforecolorofline1ofmemberthememberofsprite4463464endmapColors465466-----------------------------------------------------------------------467scriptsrunwhenthemouseisclickedonamailboxmessageline.468Ascriptisneededforeachfieldinthemessageline.469470onmouseUp471hiliteMessage(theclickon-40)472end473474475onmouseDown476477globalmbxG_lips478setwhichLine=themouseLine479ifmbxG_lipsthen480setastr=linewhichlineoffield“MailboxTo”481speak(astr)482else483hiliteMessage(whichLine)484endif485end486487onmouseDown488489globalmbxG_lips490setwhichLine=themouseLine491ifmbxG_lipsthen492setastr=linewhichlineoffield“MailboxSubject”493speak(astr)494else495hillteMessage(whichLine)496endif497end498499-----------------------------------------------------------------------500morescriptsrunwhenthemouseisclickedonamailboxmessageline501502onmouseDown503globalmbxG_lips504setwhichLine=themouseLine505ifmbxG_lipsthen506507setastr=linewhichlineoffield“MailboxDate”508setaday=word1ofastr509caseadayof510“Mon,”put“Monday”intoword1ofastr]]></pre>附錄A-郵箱顯示窗口代碼-Page11<prelisting-type="program-listing"><![CDATA[511“Tue,”;put“Tuesday”intoword1ofastr512“Wed,”put“Wednesday”intoword1ofastr513“Thu,”put“Thursday”intoword1ofastr514“Fri,”put“Friday”intoword1ofastr515“Sat,”put“Saturday”intoword1ofastr516“Sun,”put“Sunday”intoword1ofastr517otherwise518endcase519520speak(astr)521else522hiliteMessage(whichLine)523endif524end525526onmouseDown527globalmbxG_lips528529setwhichLine=themouseLine530ifmbxG_lipsthen531setastr=linewhichlineoffield“MessageNumber”532speak(astr)533else534hiliteMessage(whichLine)535endif536end537538539-thisscriptisattachedtothemessagetypeiconwhichisdisplayedinmessageline540541onmouseUp542setwhichLine=themouseLine543hiliteMessage(mouseLine)544end545546--codeforscrollbuttons547548onmouseDown549globalmbxG_whichLine550globalmbxG_subtractLine551globalmbxG_iconList552553-SCROLLUPWITHHIGHLIGHT554-ICONSNOWSCROLL...HOWEVER,ICONSPRITEPOSITIONISBASEDON555-MBXG_SUBTRACTLINE,NOTONTHETHEACTUALCORRESPONDINGLINE556NUMBER557-OFTHEMESSAGEINTHEMAILBOXWINDOW.558559setnumberOflconsVar=count(mbxG_iconList)560setlastIconPos=getPropAt(mbxG_iconListcount(mmbxG_iconList))561iflastlconPos>=550then]]></pre>附錄A-郵箱顯示窗口代碼-Page12<prelisting-type="program-listing"><![CDATA[562-thereareenoughmessagestomakescrollingnessisary563repeatwhilethemouseDown=TRUE564565-oldSubtractLinegetssettombxG_subtractLinebeforembxG_sub.gets566-incremented,Thiskeepstheiconsfromfallingonepositionbehind567-it’sprospectivemessage568569setoldSubtractLine=mbxG_subtractLine570setmbxG_subtractLine=mbxG_subtractLine+1571572ifmbxG_subtractLine>0then573setmbxG_subtractLine=0574endif575576-SCROLLALLFIELDSTOGETHER577578scrollByLinemember“MessageNumber”,-1579scrollByLinemember“MailboxTo”,-1580scrollByLinemember“MailboxSubject”,-1581scrollByLinemember“MailboxDate”,-1582scrollByLinemember“mime”,-1583scrollByLinemember“Messageread”,-1584585setnumberOflcons=thelineCountofmember“MailboxTo”+40586setamountOfMail=thelineCountofmember“MailboxTo”587588-fordebugging589-put“l(fā)inecount”&amp;thelineCountofmember“MailboxTo”590-put“subtractline”&amp;mbxG_subtractLine591592repeatwithi=40tonumberOfIcons593594595-ifthefollowing2conditionsaretrue,thenscrolltheicons596-i.e.ifmessagesscroll,iconsdotoo,ifnot,thenneitherdoicons.597598ifmbxG_subtractLine>=-amountOfMail+1andoldSubtractLine<0then599setthelocVofspritei=thelocVofspritei+15600ifthelocVofspritei<105then601setthevisibleofspritei=FALSE602else603setthevisibleofspritei=TRUE604endif605else606nothing607endif608endrepeat609610-MOVEHIGHLIGHTWITHLINE,MOVINGHIGHLIGHT611-OFFSCREENWHENLINEMOVESOFFSCREEN612setwhichHighlight=mbxG_whichLine+mbxG_subtractLine]]></pre>附錄A-郵箱顯示窗口代碼-Page13<prelisting-type="program-listing"><![CDATA[613ifwhichHighlight<=0orwhichHighlight>=22then614setthelocofsprite11topoint(11,-20)615else-setthelocVofhighlighttoscrolledmessage616setthelocVofSprite11to(99+linePosToLocV(member“MailboxTo”,whichHighlight))617endif618updateStage619endrepeat620endif621end622623onmouseUp624setnumberOfIcons=thelineCountofmember“MailboxTo”+40625repeatwithi=40tonumberOfIcons626ifthelocVofspritei>550orthelocVofspritei<105then627setthevisibleofspritei=FALSE628else629setthevisibleofspritei=TRUE630endif631endrepeat632end633634onmouseDown635globalmbxG_whichLine636globalmbxG_subtractLine637globalmbxG_iconList638639640-ASMESSAGESARESCROLLED,ICONSNEEDTOMOVEWTTHTHE641MESSAGE,AND642THEMEMBERNUM643-OFICONSPRITESBEASSIGNEDTOTHENEWMESSAGETHATISVISIBLE644AFTER645-BEINGSCROLLED.646-ICONSNOWSCROLL...HOWEVER,ICONSPRITEPOSITIONISBASEDON647-MBXG_SUBTRACTLINE,NOTONTHETHEACTUALCORRESPONDINGLINE648NUMBER649-OFTHEMESSAGEINTHEMAILBOXWINDOW.650setnumberOHconsVar=count(mbxG_iconList)651setlastlconPos=getPropAt(mbxG_iconList,count(mbxG_iconList))652iflastlconPos>=550then653-thereareenoughmessagestomakescrollingnessisary654repeatwhilethemouseDown=TRUE655scrollByLinemember“MessageNumber”,1656scrollByLinemember“MailboxTo”,1657scrollByLinemember“MailboxSubject”,1658scrollByLinemember“MailboxDate”,1659scrollByLinemember“mime”,1660scrollByLinemember“Messageread”,1661-GETNUMBERUSEDTOCORRECTFORDISCREPANCY662BETWEEN663-THEMOUSELINEANDTHELINEPOSTOLOCV]]></pre>附錄A-郵箱顯示窗口代碼-Page14<prelisting-type="program-listing"><![CDATA[664-THEMOUSELINEGIVESLINEWITHINFIELDTOTAL665-THELINEPOSTOLOCVUSESLINEOFFIELDONSCREEN666setmbxG_subtractLine=mbxG_subtractLine-1667setnumberOfIcons=thelineCountofmember“MailboxTo”+40668setamountOfMail=thelineCountofmember“MailboxTo”669-put“l(fā)inecount”&amp;thelineCountofmember“MailboxTo”670-put“subtraetline”&amp;mbxG_subtractLine671repeatwithi=40tonumberOfIcons672ifmbxG_subtractLine>=-amountOfMail+1then673setthelocVofspritei=thelocVofspritei-15674ifthelocVofspritei<105then675setthevisibleofspritei=FALSE676else677serthevisibleofspritei=TRUE678endif679else680nothing681endif682endrepeat683684ifmbxG_subtractLine<-amountOfMail+1then685setmbxG_subtractLine=-amountOfMnil+1686endif687688-MOVEHIGHLIGHTWITHLINE,MOVINGHIGHLIGHT689-OFFSCREENWHENLINEMOVESOFFSCREEN690691setwhichHighligbt=mbxG_whichLine+mbxG_subtractLine692ifwhichHighlight<=0orwhichHighlight>=22then693setthelocofsprite11topoint(11,20)694else695setthelocVofSprite11to(99+linePosToLocV(member696“MailboxTo”,whichHighlight))697endif698updateStage699endrepeat700endif701end702703--704705onemc_indicateCheckingInternet706globalmbxG_red707globalmbxG_blue708globalmbxG_white709globalmbxG_black710711ifthelocHofsprite4>600then712setthelocofspnte4=point(223,4)713endif714-ifthelocHofsprite5>600then715-setthelocofsprite5=point(509,19)716-endif]]></pre>附錄A-郵箱顯示窗口代碼-Page15<prelisting-type="program-listing"><![CDATA[717718setcolorNow=theforecolorofline1ofmemberthememberofsprite4719720casecolorNowof721mbxG_blacksetcolorNext=mbxG_blue-blue722mbxG_bluesetcolorNext=mbxG_white-pink723mbxG_whitesetcolorNext=mbxG_red-red724mbxG_redsetcolorNext=mbxG_blue-blue725endcase726727settheforecolorofline1ofmemberthememberofsprite4tocolorNext728updateStage729730endemc_indicateCheckingInternet731732onemc_endIndicateCheckingInternet733setthelocofsprite4topoint(800,4)734setthelocofsprite5=point(800,19)735cursor-1736updateStage737endemc_endIndicateCheckingInternet738739--Scriptsfortheclosewindowbutton740741onmouseDown742743repeatwhilethestillDown744ifinside(point(themouseH,themouseV),therectofspritetheclickon)then745ifthenameofmemberthememberofspritetheclickon=“closeWindow”746then747setthememberofspritetheclickon=“closeWindow_down”748updateStage749endif750else751setthememberofspritetheclickon=“closeWindow”752updateStage753endif754endrepeat755setthememberofspritetheclickon=“closeWindow”756updateStage757758endmouseDown759760onmouseUp761762-Closethewindow763ifinside(point(themouseH,themouseV),therectofspritetheclickon)then764-thesenexttolinesaretotryandspeedup765-thedisposalofthemailboxiconsonclose766-needtocheckthisonslowermachine.767hideMaillcons(thelineCountofmember“MailboxTo”)]]></pre>附錄A-郵箱顯示窗口代碼-Page16<prelisting-type="program-listing"><![CDATA[768goframe“stop”769tellthestagetoemh_killComponent(0,“”)770setsuccess=theresult771ifsuccessTRUEthen772ale(“errorclosingmailboxMLAW”)773endif774endif775end776777onhideMailIconsnumberOfIcons778repeatwithi=40to(40+numberOfIcons)779setthevisibleofsprite1=FALSE780endrepeat781updateStage782end783784785-scriptfortheopenbutton786787onmouseDown788789repeatwhilethestillDown790ifinside(point(themouseH,themouseV),therectofspritetheclickon)then791ifthenameofmemberthememberofspritetheclickon=open”then792setthememberofspritetheclickon=“open_down”793updateStage794endif795else796setthememberofspritetheclickon=“open”797updateStage798endif799endrepcat800setthememberofspritetheclickon=“open”801updateStage802endmouseDown803804]]></pre>附錄A-郵箱顯示窗口代碼-Page17<prelisting-type="program-listing"><![CDATA[805onmouseUp806807ifinside(point(themouseH,themouseV),therectofspritetheclickon)then808globalmbxG_whichLine,mbxG_messages809ifmbxG_whichLine=0then810alert“Sclectamessagebyclickingwithyourmouse.”811exit812endif813setmaildata=getAt(mbxG_messages,mbxG_whichLine)814tellthestage815emh_openMessage(maildata)816endtell817endif818end]]></pre>附錄B-類(lèi)型更新器代碼-Page1<prelisting-type="program-listing"><![CDATA[1---TYPE_UPDATERIMPLEMENTATION2---Codeforacomponentthatmaintainsmessagetypeinformationforthe3---KidCodeelectronicmailclient.4---ThisDirectorMIAWmakespublicfunctionsavailableforcallingbyothercomponents5ofKidCode67---publicfunctions8---1.Inidalize_TypeTable9---2.Install_Type10---3.Uninstall_Type11121314---privatefunctionsfiforinternaluseonly15---1.Write_Typetable_File16---2.Read_Typetable_File17---3.Read_Icon_Files_To_RAM18---4.read_iconFile19---5.delete_mimetype20---6.insert_mimetype21---7.delete_filetype22---8.insert_filetype232425---FilenameforpermanentstorageversionofTYPETABLEfile26---typetable.txt--defaultdirectoryisthecurrentPathdirectory272829---INITIALIZE_TYPETABLEinitialzesthedatastructuresusedtolookupMimetype30icons,attachmentfiletypeiconsandmessagehandlerMIAWs.31---TheSG_Typetableissetuppriortoitisuse.Fileattachmentinformationisnotlooked32upuntilitisusedwhenamessagewithanattachedfileisencountered.3334onInitialize_TypeTable35globalSG_TYPETABLE---superglobalvariablesharedacrossdifferentMIAWSfor36Typetable37globalSG_ATTACH_TYPETABLE----maintainsinfoforattachmentfiletypes3839setSG_TYPETABLE=[]--initializepropertylistformimetypeinformation4041--initializepropertylistforfiletypeinformation42--thislistwillbefilledonlyasmessageswithattachmentsareencountered43setSG_ATTACH_TYPETABLE=[]44setSG_TYPETABLE=Read_TypeTable_File(thepathname&amp;"typetable.txt")4546ifcount(SG_TYPETABLE)=0then-failedtoreadtypetablefile47alert("ErrorFailedtoreadthefileofMIMEtypes")48return(0)49endif5051setretVal=Read_Icon_Files_To_RAM()]]></pre>附錄B-類(lèi)型更新器代碼-Page2<prelisting-type="program-listing"><![CDATA[5253ifretVal=0then54alert("ErrorFailedtoloadMIMEtypeicons.)55return(0)56else57return(1)58endif5960end---Initialize_TypeTable61626364---INSTALL_TYPEisusedtoinstallanewMIMEtypeintothesystem.65INSTALL_TYPEtakesasinputamimetype(string),afilenameofthemessagehandling66movie,anfilenarneofthebitmapthatcontainsthemimetypeiconand,optionally,afile67extension(string).ThefunctionaddstheinformationassociatedwiththeMIMEtype68(givenbythefunctionparameters)intotheMIMEtypetablerecprdedinpemanentstorage69Hereweusethefile"typetable.txt"forpermanentstorageoftheMIMEtypeinfo.7071onInstall_TypemimeTolnstall,msgHandler_filename,ieon_flename,filetype72globalSG_TYPETABLE---informationonallinstalledMIMEtypes7374setDEFAUL_ICONFILE="defaultIcon.bmp"75setSG_TYPETABLE=[]-initializepropertylistformimetypeinfomation7677---readtheexistingMIMEtypeinformationintoRAM78setSG_TYPETABLE=Read_TypeTable_File(thepathname&amp;"typetable.txt")7980ifcount(SG_TYPETABLE)=0then--failedtoreadtypetablefile81alert(“ErrorFailedtoreadthefileofMIMEtypes")82return(0)83endif8485--Checktoseeifmimetypeisalreadyinstalled8687setmimeproperties=get_mimetype(mimeTolnstall)8889ifmimeproperties0then---mimetypeisalreadyinstalled.90setredefineAlert=baMsgBox(theMessage,"KinCode","YesNoCancel","Question",1)9192--thealertfunctionshouldnotsavethemessage,onlydothealert93caseredefineAlertof94"No"return095"Cancel"returnii196otherwisenothing-continue97endcase98endif99100--Definethenewmimetype101102ifverifyMessageHandler(msgHandler_filename)=0then--somethingwrongwith]]></pre>附錄B-類(lèi)型更新器代碼-Page3<prelisting-type="program-listing"><![CDATA[103programfile104alert("Error.invalidmessagehandlerprogram"&amp;&amp;msgHandler_filename)105return(0)106endif107108insert_msgHandler(SG_TYPETABLE,mimeTolnstall,msgHandler_filename)109110ifverifylconImage(icon_filename)=0then--somethingwrongwithiconfile111alert("Errorinvalidiconfile"&amp;&amp;msgHandler_filename".Usingdefaulticon.")112insert_iconFileName(SG_TYPETABLE,mimeTolnstall,DEPAULT_ICONEILE)113else114insert_iconFileName(SG_TYPETABLE,mimeToInstall,icon_fiename)115endif116117iffiletype""then118insert_fileytype(mimeToInstall,filetype)119writeTypeToRetistry(mimeToInstall,filetype)120endif121122setretVal=write_TypeTable_File()123ifretVal=0then124alert("Errorwritingtypetabletofile."&amp;&amp;mimeToInstall&amp;&amp;"notinstalled.")125return(0)126elsereturn(1)127128end--Install_Type129130131-----UNINSTALL_TYPEremovesamimetypeanditispropertiesfromboththefileand132theglobalvariableSG_TYPETABLE133134onunInstall_TypemimeType135globalSG_TYPETABLE---informationonallinstalledMIMEtypes136137setSG_TYPETABLE=[]--initializepropertylistformimetypeinformation138139---readtheexistingMIMEtypeinformationintoRAM140setSG_TYPETABLE=Read_TypeTable_File(thepathname&amp;"typetable.txt")141142ifcount(SG_TYPETABLE)=0then--failedtoreadtypetablefile143alert("ErrorFailedtordadthefileofMIMEtypes")144return(0)145endif146147delete_mimetype(mimeType)148149---writetherevisedtyoetabletothefile150setretVal=write_TypeTable_File()151ifretVal=0then152alert("Error."&amp;&amp;mimeToInstall&amp;&amp;"couldnotbeuninstalled.Typeblefilewrite153error.")]]></pre>附錄B-類(lèi)型更新器代碼-Page4<prelisting-type="program-listing"><![CDATA[154return(0)155elsareturn(1)156157endunInstall_Type158159---WRITE_TYPETABLE_FILEwritestheinformationinSG_TYPETABLEtothe160typetablefileondisk.Thisfilestorespropertiesassociatedwitheachmimetype.161---SG_TYPETABLEisapropertylistthatcontainsalistofmimetypes.162163onWrite_Typetable_File164globalSG_TYPETABLE---superglobalvariablesharedacrossdifferentMIAWS165setfileName=thepathname&amp;"typetable.txt"166setbkupFileName=thepathname&amp;"typetable.bak"167168ifcount(SG_TYPETABLE)=0then--nomimetypesdefined169alert(“Error.Nomimetypedatatowrite.)170return(0)171endif172173--createbackupfortypetablefile174copyFile(filename,bkFileName)175176-startupFileioXtra177setmFile=new(xtra"fileio")178179setretVal=deleteFile(mFile,filename)--deleteoldversionbeforerewriting180setretVal=createFile(mFile,filename)181ifretVal=0then182alert("Errorupdatingtypeablefile.")183ranarneFile(bkFileName,filename)184return(0)185endif186187operFile(mFile,fleName,2)--openforwriteaccess188setPosition(mFile,0)189190---writethedataintothefile191seti=1192setmimeType=getAt(SG_TYPETABLE,i)193repeatwhilemimeType0194setdataToWrite=mimetype195put""&amp;get_filetype(mimetype)intodataToWrite196put""&amp;get_iconFileName(mimetype)intodataToWrite197put""&amp;get_MsgHandler(mimetype)intodataToWrite198writeline(mFile,dataToWrite)199seti=i+1200setmimeType=getAt(SG_TYPETABLE,i)201endrepeat202203closeFile(mFile)204setretVal=deleteFile(mFile,bkFileName)--deletebackupfile]]></pre>附錄B-類(lèi)型更新器代碼-Page5<prelisting-type="program-listing"><![CDATA[205return(0)206endWrite_TypeTable_File207---READ_TYPETABLE_FILEreadsthetypetablefile208---andcratesadatastructureinmemory,SG_TYPETABLE209---SG_TYPETABLEisapropertylistthatcontainsalistofmimetypes210211Whenthefunctionreturns,theglobalpropertylistdatastructure,SG_TYPETABLE,212containsanentryforeachmimetype,AlongwiththepathNameforthemessagehandling213movieandtheIconFile.LaterthecastmembernumberfortheiconinRAMwillbeadded214tothedatastructure.Fornowtheseareallsetto0.Thisdatastructurelookslike,215["text/plain"["txt",0,"C\KidCode\text.gif","C\KidCode\text,dxr"],"x-216application/grid"["",0,"C\KidCode\grid.gif","C\KidCode\grid.dxr"]]217218onRead_TypeTable_File219globalSG_TYPETABLE---superglobalvariablesharedacrossdifferentMIAWS220setfileName=thepathname&amp;"typetable.txt"221222setSG_TYPETABLE=[]--initializepropertylistformimetypes223224--startupFileioXtra225setmFile=new(xtra"fileio")226openFile(mFile,fileName,1)--openforreadonlyaccess227setstatus=status(mFile)228229ifstatus0then230alert("Error.Couldnotopenmimetypetable"&amp;error(mFile,status))231closeFile(mFile)--justtobesafe232returnFALSE233endif234235setPosition(mFile,0)236237--Lingocanftreadonelineatatimesosimulatethisbyreadingtheentirefileintothe238string,str239setstr=readFile(mFile)240241setnTypes=thenumberoflinesinstr242repeatwithj=1tonTypes243setmimetype=word1oflinej244insert_mimetype(mimetype)245insert_filetype(mimetype,word2oflinej)246insert_iconFileName(mimetype,word3oflinej)247insert_msgHandler(mimetype,word4oflinej)248endrepeat249250closeFile(mFile)251252endRead_TypeTable_File253254255onRead_Icon_Files_To_RAM]]></pre>附錄B-類(lèi)型更新器代碼-Page6<prelisting-type="program-listing"><![CDATA[256globalSG_TYPETABLE257globalSG_DEFAULT_ICON_PTR=1000258259ifcount(SG_TYPETABLE)=0then-nomimetypesdefined260alert("Error.Nomimetypedata.Canitloadicons.)261return(0)262endif263264---loadthedefaulticon265importFileInto(memberSG_DEFAULT_ICON_PTR,thepathnarne&amp;"defaulticon.gif")266267---cyclethroughthemimetypesloadingicons268setcastNum=SG_DEFAULT_ICON_PTR+1-firsticonimmediatelyfollowsthe269default270seti=1271setmimeType=getAt(SG_TYPETABLE,i)272repeatwhilemimeType0273seticonFile=get_iconFileName(SG_TYPETABLE,mimetype)274ificon=""then---iconnotdefinedusedefault275seticonPtr=SG_DEFAULT_ICON_PTR276else277seticonPtr=read_lconFile(iconFile,castNum)278ificonPtr>0then279setcastNum=castNum+1280elseseticonPtr=SG_DEFAULT_ICON_PTR281endif282283insert_iconPtr(mimetype,iconPtr)284seti=i+1285setmimeType=getAt(SG_TYPETABLE,i)286endrepeat287288return(1)289290endRead_Icon_Files_To_RAM291292293294---READICONFILEloadsasingleiconbitmapintoRAM295onread_IconFilefilename,castMemberNum296setretVal=imponFileInto(membercastNum,iconFile)297return(retVal)298endread_IconFile299---DataAccessFunctionsforMIMETYPEinfo300---DataisstoredinthepropertylistSG_TYPETABLEwiththefollowingstructrre301---mimetypeproperties302---wheremimetypeisastring,e.g."text/plain"303---andpropertiesisalistwiththefollowingelement304----[filetype,iconPtr,iconFilename,msgHandler_FileName305----e.g.SG_TYPETABLE=306----["text/plain"["txt",0,"C\KidCode\text.gif,"C\KidCode\text.dxr"],]]></pre>附錄B-類(lèi)型更新器代碼-Page7<prelisting-type="program-listing"><![CDATA[307----"x-application/grid"["",0,"C\KidCode\grid.gif","C\KidCode\grid.dxr"]]308309onget_mimetypemimetype310globalSG_TYPETABLE311raturn(getProp(SG_TYPETABLE,mimetype))312end313314onget_filetypemimetype315globalSG_TYPETABLE316settheProperties=getProp(SG_TYPETABLE,mimetype)317return(getAt(theProperties,1))318end319320onget_iconPtrmimetype321globalSG_TYPETABLE322setthePropenies=getProp(SG_TYPETABLE,mimetype)323return(getAt(theProperties,2))324end325326onget_iconFileNamemimetype327globalSG_TYPETABLE328settheProperties=getProp(SG_TYPETABLE,mimetype)329return(getAt(theProperties,3))330end331332onget_msgHandlermimetype333globalSG_TYPETABLE334settheProperties=getProp(SG_TYPETABLE,mimetype)335return(getAt(theProperties,4))336end337338oninsert_mimetypemimetype339globalSG_TYPETABLE340addProp(SG_TYPETABLE,mimetype)341end342343oninsert_filetypemimetype,filetype344globalSG_TYPETABLE345settheProperties=getProp(SG_TYPETABLE,mimetype)346add(theProperties,filetype)347setProp(SG_TYPETABLE,mimetype,theProperties)348end349350oninsert_iconPtrmimetype,iconPtr351globalSG_TYPETABLE352settheProperties=getProp(SG_TYPETABLE,mimetype)353add(theProperties,iconPtr)354setProp(SG_TYPETABLE,mimetype,theProperties)355end356357oninsert_iconFileNamemimetype,iconFilename]]></pre>附錄B-類(lèi)型更新器代碼-Page8<prelisting-type="program-listing"><![CDATA[358globalSG_TYPETABLE359settheProperties=getProp(SG_TYPETABLE,mimetype)360add(theProperties,iconFilename)361setProp(SG_TYPETABLE,mimetype,theProperties)362end363364oninsert_msgHandlermimetype365globalSG_TYPETABLE366setthePropenies=getProp(SG_TYPETABLE,mimetype)367add(theProproperties,msgHandler)368setProp(SG_TYPETABLE,mimetype,theProperties)369end370371372ondelete_mimetypemimetype373globalSG_TYPETABLE374deleteProp(SG_TYPETABLE,mimetype)375end376377ondelete_fietypemimetype378globalSG_TYPETABLE379setproperties=getProp(SG_TYPETABLE,mimetype)380setAt(properties,1,"")381setProp(SG_TYPETABLE,mimetype,properties)382end383384ondelete_iconmimetype385globalSG_TYPETABLE386setproperties=getProp(SG_TYPETABLE,mimetype)387setAt(properties,2,0)388setProp(SG_TYPETABLE,mimetype,properties)389end390391ondelete_iconFileNamemimetype392globalSG_TYPETABLE393setproperties=getProp(SG_TYPETABLE,mimetype)394setAt(properties,3,"")395setProp(SG_TYPETABLE,mimetype,properties)396end397398ondelete_msgHandlermimetype399globalSG_TYPETABLE400setproperties=getProp(SG_TYPETABLE,mimetype)401setAt(properties,4,"")402setProp(SG_TYPETABLE,mimetype,properties)403end]]></pre>權(quán)利要求1.用于與顯示設(shè)備一同使用的電子郵件客戶軟件,包括a)郵箱顯示窗口裝置,用于在顯示設(shè)備上以可滾動(dòng)列表的方式顯示郵箱的內(nèi)容,其中每個(gè)郵件項(xiàng)目被列出且?guī)в卸鄠€(gè)屬性,上述屬性從包括主題、發(fā)送人姓名和發(fā)送日期的組中選出;b)關(guān)聯(lián)裝置,用于將多個(gè)mime類(lèi)型與多個(gè)圖標(biāo)圖像相關(guān)聯(lián),其中上述郵箱顯示窗口裝置包括用于確定郵箱當(dāng)中郵件的至少某些項(xiàng)目的mime類(lèi)型的裝置,用于讀上述關(guān)聯(lián)裝置的裝置,以及用于在可滾動(dòng)的列表中顯示圖標(biāo)圖像的裝置,所述圖標(biāo)圖像作為與上述郵件的至少某些項(xiàng)目中每一個(gè)項(xiàng)目相關(guān)聯(lián)的屬性,上述郵件的至少某些項(xiàng)目中每一個(gè)項(xiàng)目的上述圖標(biāo)圖像是根據(jù)上述郵件的至少某些項(xiàng)目中每一個(gè)項(xiàng)目的mime類(lèi)型從上述關(guān)聯(lián)裝置中選出的2.根據(jù)權(quán)利要求1所述的電子郵件客戶軟件,進(jìn)一步包括c)類(lèi)型更新器裝置,用于更新上述關(guān)聯(lián)裝置從而包含附加的mime類(lèi)型和附加的圖標(biāo)圖像。3.根據(jù)權(quán)利要求1所述的電子郵件客戶軟件,進(jìn)一步包括c)多個(gè)圖標(biāo)圖像,每個(gè)都具有文件名,其中上述關(guān)聯(lián)裝置是將至少某些mime類(lèi)型中的每一個(gè)與圖標(biāo)圖像文件名相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。4.根據(jù)權(quán)利要求1所述的電子郵件客戶軟件,其中上述關(guān)聯(lián)裝置包括用于將mime類(lèi)型與程序相關(guān)聯(lián)的裝置,并且其中某些mimetypes不與圖標(biāo)圖像相關(guān)聯(lián)而與程序相關(guān)聯(lián)。5.根據(jù)權(quán)利要求2所述的電子郵件客戶軟件,其中上述類(lèi)型更新器裝置響應(yīng)用戶輸入。6.根據(jù)權(quán)利要求3所述的電子郵件客戶軟件,其中上述多個(gè)圖像中的至少某些圖像是可縮放的。7.根據(jù)權(quán)利要求1所述的電子郵件客戶軟件,其中上述電子郵件客戶軟件被設(shè)計(jì)為與維護(hù)圖標(biāo)注冊(cè)表的操作系統(tǒng)一同使用,并且上述關(guān)聯(lián)裝置將至少某些mime類(lèi)型與從上述圖標(biāo)注冊(cè)表當(dāng)中選出的圖標(biāo)相關(guān)聯(lián)。8.根據(jù)權(quán)利要求1所述的電子郵件客戶軟件,進(jìn)一步包括c)圖標(biāo)恢復(fù)裝置,用于讀取包含于電子郵件或電子郵件附件當(dāng)中的圖形圖標(biāo)信息,其中如果沒(méi)有找到其他圖標(biāo),上述關(guān)聯(lián)裝置則將mime類(lèi)型與由上述圖標(biāo)恢復(fù)裝置恢復(fù)的圖標(biāo)相關(guān)聯(lián)。9.根據(jù)權(quán)利要求2所述的電子郵件客戶軟件,其中上述類(lèi)型更新器裝置可由上述電子郵件客戶軟件的用戶人工地進(jìn)行操作。10.根據(jù)權(quán)利要求2所述的電子郵件客戶軟件,其中上述類(lèi)型更新器裝置根據(jù)從包括下列事件的組中所選出的事件來(lái)自動(dòng)安裝新的圖標(biāo)圖像,該組包括安裝能夠認(rèn)可/讀新mime類(lèi)型的新應(yīng)用程序或組件,在接收的郵件消息中遇到新mime類(lèi)型,以及規(guī)律性計(jì)劃的事件引發(fā)上述類(lèi)型更新器為新圖標(biāo)查測(cè)服務(wù)器。11.在顯示設(shè)備上顯示電子郵件箱中內(nèi)容列表的方法,包括以下步驟a)在顯示設(shè)備上以可滾動(dòng)列表的方式顯示郵箱的內(nèi)容,其中每個(gè)郵件項(xiàng)目被列出且?guī)в卸鄠€(gè)屬性,上述屬性從包括主題、發(fā)送人姓名和發(fā)送日期的組中選出;b)確定郵箱當(dāng)中郵件的至少某些項(xiàng)目的mime類(lèi)型;c)在可滾動(dòng)列表中顯示圖標(biāo)圖像,所述圖標(biāo)圖像作為與上述郵件的至少某些項(xiàng)目中每一個(gè)項(xiàng)目相關(guān)聯(lián)的屬性,上述郵件的至少某些項(xiàng)目中每一個(gè)項(xiàng)目的上述圖標(biāo)圖像是根據(jù)上述郵件的至少某些項(xiàng)目中每一個(gè)項(xiàng)目的mime類(lèi)型選出的。12.根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括以下步驟d)將mime類(lèi)型與程序相關(guān)聯(lián);e)當(dāng)mime類(lèi)型的郵件項(xiàng)目被打開(kāi)時(shí),執(zhí)行與mime類(lèi)型相關(guān)聯(lián)的程序。13.根據(jù)權(quán)利要求11所述的方法,其中上述圖標(biāo)圖像中的至少某些圖標(biāo)圖像是可縮放的。14.根據(jù)權(quán)利要求11所述的方法,其中上述顯示步驟包括從圖標(biāo)的中央注冊(cè)表中選出至少某些圖標(biāo)。15.根據(jù)權(quán)利要求11所述的方法,其中上述顯示步驟包括讀取包含于電子郵件或電子郵件附件中的圖形圖標(biāo)信息。16.根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括以下步驟d)當(dāng)執(zhí)行上述顯示步驟時(shí),為了使用而維護(hù)一圖形圖標(biāo)的存儲(chǔ)庫(kù)。17.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括以下步驟e)在上述圖形圖標(biāo)的存儲(chǔ)庫(kù)中自動(dòng)安裝新的圖標(biāo)圖像,以響應(yīng)從包括下列事件的組中所選出的事件,該組包括當(dāng)安裝能夠認(rèn)可/讀新mime類(lèi)型的新應(yīng)用程序或組件時(shí),當(dāng)在接收的郵件消息中遇到新mime類(lèi)型時(shí),以及當(dāng)規(guī)律性計(jì)劃的事件引發(fā)上述類(lèi)型更新器為新圖標(biāo)檢查服務(wù)器時(shí)。全文摘要電子郵件客戶軟件(16)具有郵箱顯示窗口(14),該郵箱顯示窗口列出消息連同每一個(gè)消息的圖標(biāo),在此圖標(biāo)與消息的MIME類(lèi)型相關(guān)聯(lián)。在收件箱中列出含有文件附件(18)的郵件,且?guī)в斜砻鞲郊拥洁]件上的文件類(lèi)型的圖標(biāo)。郵箱顯示窗口對(duì)MIME類(lèi)型進(jìn)行解析,并且從OS的圖標(biāo)注冊(cè)表中或從由電子郵件客戶軟件所維護(hù)的圖標(biāo)目錄中選擇合適的圖標(biāo)。如果在圖標(biāo)目錄中沒(méi)有合適的圖標(biāo),那么如果MIME消息的子部分當(dāng)中所包含的圖標(biāo)圖像是可利用的話,則該郵箱顯示窗口就使用它。否則,不使用圖標(biāo)或使用普通圖標(biāo)。根據(jù)目前優(yōu)選的實(shí)施例,類(lèi)型表(20)由類(lèi)型更新器(12)組件來(lái)維護(hù)。該類(lèi)型包括一列消息類(lèi)型,以及連同由郵箱顯示窗口使用的可縮放的圖標(biāo)文件名的子類(lèi)型。文檔編號(hào)G06Q10/00GK1449525SQ01814750公開(kāi)日2003年10月15日申請(qǐng)日期2001年6月20日優(yōu)先權(quán)日2000年6月27日發(fā)明者M(jìn)·巴克爾申請(qǐng)人:智能網(wǎng)絡(luò)公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大厂| 陕西省| 工布江达县| 名山县| 云浮市| 垣曲县| 南充市| 葵青区| 安阳市| 洪江市| 罗平县| 靖远县| 儋州市| 永城市| 宝山区| 历史| 邵东县| 东阳市| 高要市| 兴和县| 长宁县| 武穴市| 黄陵县| 佛坪县| 平安县| 高邑县| 长岭县| 望奎县| 衢州市| 岳普湖县| 彰武县| 灯塔市| 汤原县| 西安市| 五原县| 利津县| 正阳县| 盖州市| 汶川县| 襄城县| 霍城县|