圖標(biāo)和光標(biāo)是圖形資源,圖標(biāo)通常用做應(yīng)用程序的“形象代表”出現(xiàn)在文件瀏覽器、運(yùn)行窗口左上角或程序的快捷方式等所有代表文件的地方,為自己寫的應(yīng)用程序選一個合適的圖標(biāo)會使程序變得引人注目;而光標(biāo)就是鼠標(biāo)移動時屏幕上那個指示位置的東西,應(yīng)用程序可以定義自己的光標(biāo),這樣光標(biāo)移到程序的客戶區(qū)中就會變成需要的形狀。
5.2.1 圖標(biāo)和光標(biāo)的資源定義
和菜單、加速鍵等資源不同,在資源腳本文件中定義圖標(biāo)和光標(biāo)時并不是一個個像素地定義,而是指定圖標(biāo)和光標(biāo)的文件名,由資源編譯器將像素數(shù)據(jù)讀入再轉(zhuǎn)換成二進(jìn)制格式,所以在資源定義之前要用其他工具先創(chuàng)建圖標(biāo)和光標(biāo)文件。圖標(biāo)和靜態(tài)光標(biāo)文件的擴(kuò)展名分別是ico和cur,還有一種擴(kuò)展名為ani的動態(tài)光標(biāo)文件。
光標(biāo)和圖標(biāo)在資源文件中的定義語句是:
圖標(biāo)ID ICON [DISCARDABLE] 圖標(biāo)文件名 ;定義圖標(biāo)
光標(biāo)ID CURSOR [DISCARDABLE] 光標(biāo)文件名 ;定義光標(biāo)
DISCARDABLE關(guān)鍵字是內(nèi)存選項,表示在不用的時候可以從內(nèi)存暫時卸掉,當(dāng)文件名包含空格時,兩邊要用雙引號引起來,圖標(biāo)ID和光標(biāo)ID同樣也可以用16位的整數(shù)或字符串表示,這里是幾個定義的例子:
MyIcon icon “1.ico” ;把1.ico定義為ID為“MyIcon”的圖標(biāo)資源
1000 icon discardable 2.ico ;把2.ico定義為ID為1000的圖標(biāo)資源
1001 icon “big icon.ico” ;把big icon.ico定義為ID為1001的圖標(biāo)資源
1002 cursor “big arrow.ani” ;把big arrow.ani定義為ID為1002的光標(biāo)資源
GoodCursor cursor arrow.cur ;把a(bǔ)rrow.cur定義為ID為“GoodCursor”的光標(biāo)資源
5.2.2 使用圖標(biāo)和光標(biāo)
在這里,用一個例子來說明圖標(biāo)和光標(biāo)的用法,程序是建立在FirstWindow.asm和Menu.asm程序的基礎(chǔ)上的,為了節(jié)省篇幅,在這里就不列出全部源程序了,完整的源程序可以在所附光盤的Chapter05\Icon目錄中找到。程序中創(chuàng)建了一個菜單,運(yùn)行后可以在“圖標(biāo)和光標(biāo)”菜單中選擇不同的圖標(biāo)和光標(biāo),選擇不同的圖標(biāo)以后,窗口標(biāo)題欄左邊的圖標(biāo)和桌面任務(wù)欄上的窗口圖標(biāo)都會變化;選擇不同的光標(biāo)后,當(dāng)鼠標(biāo)移動到窗口客戶區(qū)中的時候,光標(biāo)會變成程序指定的光標(biāo)。具體的效果如圖5.3所示,大圖標(biāo)對應(yīng)“笑臉”,小圖標(biāo)對應(yīng)“箭頭”,而光標(biāo)A和B分別是“小恐龍”光標(biāo)和“手型”光標(biāo),其中“小恐龍”光標(biāo)是ani類型的動態(tài)光標(biāo),在屏幕上顯示為一個走動中的恐龍模樣。