定制工具按鈕圖標
MAPINFO里面可以用的圖標是不是太單一 我們其實可以自己畫自己喜歡的圖標:
定制工具按鈕圖標
Include "mapbasic.def"
Declare Sub Main
Declare Sub TestDLLCall
Declare Function InitResDLL () As String
Sub Main
Dim icodll As String
icodll = InitResDLL()
Create ButtonPad "IcoTest" As
ToolButton Calling TestDLLCall
Icon 138File icodll
Cursor 136 File icodll
ToolButton Calling TestDLLCall
Icon 134File icodll
Cursor 136 File icodll
End Sub
Function InitResDLL () As String
if (SystemInfo(SYS_INFO_MIPLATFORM) = MIPLATFORM_WIN16) Then
InitResDLL = ApplicationDirectory$()+"win16\ico16.dll"
elseif (SystemInfo(SYS_INFO_MIPLATFORM) = MIPLATFORM_WIN32) Then
InitResDLL = ApplicationDirectory$()+"win32\ico32.dll"
else
Note "This application is not supported on this platform."
End Program
end if
End Function
.
其實寫這個程序的難點并不在于程序的本身,而是那個DLL文件的生成.
1. 圖標文件的格式
按鈕圖標文件在Mapbasic中有嚴格的要求.圖標文件只能是位圖格式(BMP圖像格式),大小為小圖標18pixles寬16pixles高,大圖標26pixles寬24pixles高,小圖標是用在普通按鈕上的,而大圖標是在你在Mapinfo中選擇使用大按鈕之后才會用到.
2. DLL 文件的編輯
編輯好了圖標文件,現(xiàn)在來把它們添加到DLL中,我們無需重新的編寫一段C語言代碼來實現(xiàn)DLL文件的生成,那樣你首先的會C語言.我說的方法是直接的利用Mapbasic例程中的DLL文件.
用資源編輯軟件打開DLL文件,將編輯好的BMP文件添加到DLL中,注意保存順序,首先是小的位圖,然后是大的位圖,在命名時要注意兩個文件必須相連,例如:小圖標命名為138,那么大圖標就應該命名為139.保存DLL.這樣就好了,你只需在上面的程序代碼中修改ICON的號碼就可以看到你的圖標文件了.
其實就是調(diào)用下外部的DLL直接在Icon 138File icodll這邊換下就好 然后定義下那個DLL文件就可以了
|