發表文章

Windows Mobile 6.5 Gestures (一)

圖片
在Windows Mobile 6.5中有提供了兩個新的功能,一個是Widgets,另外就是Gestures API了,今天就來測試看看Gestures的功能。由於Gestures是WM 6.5才有的功能,所以必須要有WM 6.5的模擬器來做測試,如果還沒有安裝過的話,可以到下面位置下載、安裝,請切記,要先安裝Windows Mobile 6 SDK,之後再安裝Windows Mobile 6.5 Developer Tool Kit,順序可不能顛倒喔。 Windows Mobile 6 Professional and Standard Software Development Kits Refresh Windows Mobile 6.5 Developer Tool Kit 接下來,下面是一些有關Gestures的相關參考資料 小歐的這篇-[Windows Mobile]Gestures API 擷取使用者的手勢 Windows Mobile Managed Gestures Sample 這邊可以下載到managed code需要的dll以及相關的sample,裡面也有兩個web cast,記得要看 How Do I: Use Windows Mobiles 6.5 Gestures in Managed Code? MSDN-Using Gestures in Windows Mobile 6.5 How to use the MSDN managed code gesture wrapper in a Windows Mobile 6.5 device project 在一些使用情境中,會有向右或是向左滑動就能夠切換頁面的功能,在以往WM6/6.1的時候,要做到這樣的功能,第一個遇到的問題就是必須要自行去辨識手勢的動作,必須要去掛hook,攔截滑鼠的點擊位置、放開的位置,之後去判斷方向等等,要做的事情滿多的,不是件簡單的事;而現在有了Gestures API之後,像這樣的功能做起來就方便的多了,接下來就來看看今天測試的程式碼了;首先要先加入Gestures dll的參考,加入後會多了像是下圖的name space可以使用 接下來是設計畫面,筆者這邊是用了3個panel來模擬切換畫面的動作,實際在執行的時候會分別去移動panel的位...

VS2003呼叫VS2005的COM DLL

圖片
在.net的環境寫作程式預設就提供了相當多的類別可供使用,寫作程式上也變的相當的方便,但有時候會遇到舊系統的需求新增,或是必須要撰寫DLL(組件)來讓其他使用者做使用的情形;而在這樣的情況,通常會撰寫類別庫,也就是產生出DLL的檔案來供其他人方便使用。而在使用.Net DLL時,在相同版本的.net framework也很方便,只要用加入參考的方式將該DLL加入參考後,就可以開始使用相關的功能;但是在VS2003與VS2005之間互通時卻無法使用加入參考的方式去做,又或者當我們必須要將DLL提供給網頁、VB6這樣的開發環境時,該怎麼辦呢?這篇主要說明一下在VS2003的環境(.net framework 1.1)要怎麼樣去使用VS2005(.net framework 2.0)的COM DLL。 在進入主題之前,這邊先說明一下當要將DLL提供給網頁(ASP)或是VB6使用時應該要怎麼做;在後續同樣的也必須要經過這些步驟才能順利的讓VS2003使用相關的DLL。 首先,要開放給像是VB6這樣的程式使用時,必須要將DLL開放COM介面,讓其他的程式透過COM介面來呼叫,而要怎麼實作呢?請參考Will保哥的文章,相當的清楚,位置再下面這邊 http://blog.miniasp.com/post/2008/07/How-to-write-COM-component-using-NET.aspx 這邊補充一個部分,要將.net組件加入到GAC中時,必須要簽署組件,也就是設定強式名稱(Strong Name),不然會加不進去,簽署的位置會像下圖這樣 好,那麼參考完保哥的文章後,相信大家都可以實作出COM DLL了,接下來就是如何在VS2003中去使用了。 在將相關的DLL安裝到系統上之後,開啟VS2003,選擇加入參考之後,在選單中可以看到我們註冊到系統中的DLL,但是選取後卻會得到一個無情的錯誤 沒關係,沒辦法從IDE加入,還有CreateObject可以使用,所以用了像下面這樣的方式 Dim A As Object = CreateObject("RFTagSDKs.RD1623") 結果卻得到了一個無法產生ActiveX的錯誤訊息,怎麼會這樣呢,主要就是因為.net framework版本的關係;那要怎麼去解決呢?可以參考下面這篇的方式 http:/...

Chinese SMS 在英文ROM上的相關問題 (Kaiser,TyTn2)

圖片
之前對於WM6.5這部分的測試大多是利用模擬器來玩,想說要等官方(HTC)出WM6.5的ROM之後,再來更新;不過等著等著,實在是等的有點煩了(不知道到底會不會出啊~),於是就到xda閒逛(對WM這部分有興趣的 xda forums 一定要去看看),找到了一個WM6.5英文版的ROM,滿喜歡這介面,而且想要在實機上來跑跑看WM6.5,於是乎,就鼓起勇氣給他刷機下去;我刷的ROM是 這個版本 目前是到4.0;至於怎麼刷機呢?這個就請自行參考xda上的說明了,我看的是 這邊 ,for kaiser的,不同機型請自行參考其他相關資料了,也請記得刷機有一定的風險,請三思,並且詳讀說明喔。 刷完了之後,介面看起來的爽度就是不一樣,抓了下面幾張圖,是首頁以及天氣、設定的畫面 是不是還不錯呢?接下來由於刷的是英文的ROM,接下來就該面對一下痛苦的部分了;刷完機在介面上並不是所有中文字都是無法顯示,大多中文字還是可以顯示出來,不過這於事無補..因為..沒有中文輸入法,真糟,不過幸好在 小熊工作室的網站 找到了相關的解決方式,可以將中文輸入法安裝到英文的ROM裡面,之後安裝 sbp keyboard 就有中文輸入可以用了,一切使用上也沒什麼大問題,直到發出中文簡訊給其他人的時候,在我這邊輸入的中文簡訊都是正常的,向是下面這樣 但是接收端收到的卻全部都是"???"這樣的東西,怎麼會這樣哩..orz 直覺是編碼的問題,但一時之間卻也不知道該怎麼處理,後來在 xda的這篇討論 看到了相同的問題,找了一下相關設定後,設定一下,簡訊發送的問題就解決了,原來是要把"需要時使用unicode"的項目給勾選起來,下面抓了幾張圖,有同樣問題的朋友可以參考看看,首先進入到閱讀簡訊的介面後,進入設定頁面 之後找到Option 點選Option之後,會看到如下的設定畫面,接下來要點選*SMS/MMS 之後將"Use Unicode when necesaary"的項目勾選起來就可以了

[WM]利用Microsoft.Drawing擴充Graphics & 繪製縮圖 Part2

圖片
在上一篇 [WM]利用Microsoft.Drawing擴充Graphics & 繪製縮圖 當中有提到可以利用Microsoft.Drawing的命名空間下去繪製縮圖,而點了縮圖之後會叫出第二個Form來顯示較大的圖形,但顯示較大的圖形時,也只有一個等級;能不能再放大來看呢,今天就來測試看看這個部分。 首先,在Mobile 6.5的作業系統當中,在首頁可以看到圖片的瀏覽介面,像是下圖這樣 點選進入之後,就可以看到瀏覽的介面,選擇Zoom之後,會看到有個可以放大圖片的介面 今天就試做一個跟這個類似的瀏覽方式;在看程式碼之前,先說明一下大概實作的方向;筆者這邊背景放了一個較大的Picturebox,是顯示大圖用的,而在做放大的功能時,也是用偷懶的方式,設定picturebox的sizemode屬性為自動縮放;另外用一個panel來放置顯示縮圖的picturebox以及放大縮小的按鈕,在縮圖發生mousemove事件時,第一個動作是在縮圖上繪製紅色方框,之後移動下方的picturebox來模擬這樣的效果,那麼接下來就來看看程式碼的部分。 Imports Microsoft.Drawing Public Class Form2 ''暫存檔案位置 Private _filePath As String Dim img As IImage Dim imgThumb As IImage = Nothing ''繪製縮圖上面方框的pen Dim rectPen As New Pen(Color.Red, 2) Dim RectWidth As Integer = 30 Dim RectHeight As Integer = 30 ''紀錄座標相關 Dim sX, sY As Integer ''來源位置 Dim dX, dY As Integer ''變動位置 Dim rX, rY As Integer ''實際繪製位置 ''儲存原始圖檔 Dim tmpBmp As Bitmap ''儲存放大級數 Dim...

[WM]利用Microsoft.Drawing擴充Graphics & 製作自己的"option" form

圖片
這篇接著繼續說明Microsoft.Control.dll的功能,同樣的,如果看官還不知道要怎麼加入的話,可以參考之前的 [WM]利用Microsoft.Drawing擴充Graphics & 製作我的按鈕 這篇文章。 首先今天會使用到的是Graphics.DrawAlpha這個功能,Graphics.DrawAlpha可以繪製半透明的效果,例如下面的程式碼 Dim gOff As Graphics = Graphics.FromImage(_bmpOff) ''清除原先的圖形 gOff.Clear(Color.Black) ''繪圖動作 ''繪製具透明度的背景 e.Graphics.DrawAlpha(_bmpOff, _Opacity, 0, 0) 其中_bmpOff是一個與Form同樣大小的bitamp,取得bitmap的Graphics之後,會先用黑色去清除整個bitmap;而為什麼是黑色?不是白色、藍色...這邊到沒有限定要用什麼顏色,只是黑色套用半透明後會有感覺像"lightbox"的效果就是了。接下來DrawAlpha的第一個參數是要繪製的圖形,第二個是透明度,255是完全不透明,0則是完全透明,第三、第四個參數就是要繪製的位置了。用這樣就可以簡單的繪製出半透明的效果;有一個部分要特別注意,如果繪製時要"透過去",看到下一層的東西,那麼就要複寫掉OnPaintBackground的事件,讓背景繪製不要發生,不然就會變成"一張有透明效果的圖,畫在白色(背景色)上"。 接下來就來看看今天測試的程式碼,筆者這邊是繼承Form的類別,來做一個可以設定透明度的Form就姑且稱做myForm吧(myPhone..?),之後在myForm上面放了3個myButton來做選擇的功能,選擇後會自行把Form關閉,並且將相關的資訊儲存在property中,程式碼會像下面這樣 Imports Microsoft.Drawing Public Class myForm Inherits Windows.Forms.Form Private _bmpOff As Bit...

[WM]利用Microsoft.Drawing擴充Graphics & 繪製縮圖

圖片
這篇延續上一篇提到的,繼續利用擴充的Graphics類別所提供的新功能來做應用;在使用的時候也是要加入Microsoft.Controls的參考,如果不清楚如何加入的話請參考上一篇 [WM]利用Microsoft.Drawing擴充Graphics & 製作我的按鈕 首先,今天會使用到的是IImagingFactory以及IImage這兩個東東,首先要從檔案把Image抓出來,所以會利用像下面的程式碼來傳回IImage ''' ''' 取得影像相關動作 ''' ''' ''' ''' Private Function GetImage(ByVal fileName As String) As IImage Dim imgFactory As IImagingFactory ''建立IImageingFactory imgFactory = ImagingFactory.GetImaging ''建立IImage Dim image As IImage = Nothing imgFactory.CreateImageFromFile(fileName, image) Return image End Function 取回之後就可以呼叫IImage的GetThumbnail來取得縮圖,例如 img.GetThumbnail(48, 48, imgThumb) 好,大製了解動作之後就來看看這次測試的程式碼,筆者這邊是建立兩個form,form1會將縮圖顯示在畫面上,而點選縮圖之後會呼叫Form2來顯示比較大的圖形,Form1程式碼會像下面這樣 Imports Microsoft.Drawing Imports System.IO Public Class Form1 ''儲存圖檔的位置 Dim strImageDir As String = "\Storage card\"...

[WM]利用Microsoft.Drawing擴充Graphics & 製作我的按鈕

圖片
在compact framework的開發環境中,預設的環境對於繪圖部分的資源是比較少的,也沒有"透明色"這東西可以用,所以當需要製作漂漂的畫面時比就比較費力了。 而在最近,微軟的網站上也推出了UI Framework for .Net Compact Framework 3.5,今天初步的來測試看看有了UI Frameowrk之後多了哪些資源可以利用,首先UI Framework的參考網址是下面這邊 http://code.msdn.microsoft.com/uiframework/Release/ProjectReleases.aspx?ReleaseId=2315 接下來進入到下載頁面中可以下載相關的範例程式碼(程式碼是以C#撰寫),像下面這樣 可以先把相關的範例程式碼下載回來,慢慢消化,這邊筆者會先利用ListViewDemo相關的程式碼;開啟範例程式碼之後,在方案總管這邊會看到像下面的相關專案 筆者這邊只會用到Microsoft.Controls相關的東西,所以要先建置一下這個專案;建置完成之後就會得到MMobile.Controls.dll,像是下圖這樣 這就是要加入參考使用的dll了;原先ListViewDemo的專案就可以先關閉,之後建立一個新的智慧型裝置的專案(記得compact framework要選3.5喔),並且將剛剛產生的dll加入參考,加入參考之後在方案總管中可以看到新加入的參考,應該會像下面這樣 好,準備工作都完成了,接下來就來測試看看吧;首先要先引入命名空間 Imports Microsoft.Drawing 引入的命名空間之後在Graphics類別中就多了很多擴充方法可以利用,例如 ''繪製具透明度的image ''e.Graphics.DrawAlpha() ''繪製圓角矩形 ''e.Graphics.DrawGradientRoundedRectangle ''繪製具透明度的圓角矩形 ''e.Graphics.DrawGradientRoundedRectangleAlpha 那麼就先來測試看看DrawGradient...