九九99精品-九九99靖品-九九99九九视频在线观看-九九99九九在线精品视频-曰韩一级-曰韩一级毛片

C# & WinForm開(kāi)發(fā)觸控應(yīng)用程式

作者: 51Touch     時(shí)間:2009-12-04     源于:runpc    總點(diǎn)擊:
【導(dǎo)讀】:多點(diǎn)觸控(Multi Touch)是微軟新一代作業(yè)系統(tǒng)Windows 7較受關(guān)注的特點(diǎn)之一,本文將使用Visual C# 2008建立一個(gè)Windows Form應(yīng)用程式,并說(shuō)明如何取得觸控動(dòng)作相關(guān)資訊。

    北京時(shí)間12月04日消息,中國(guó)觸摸屏網(wǎng)訊, 多點(diǎn)觸控(Multi Touch)是微軟新一代作業(yè)系統(tǒng)Windows 7較受關(guān)注的特點(diǎn)之一,本文將使用Visual C# 2008建立一個(gè)Windows Form應(yīng)用程式,并說(shuō)明如何取得觸控動(dòng)作相關(guān)資訊。

    本文來(lái)自:http://www.zc28898.cn/touchscreen/news/front/200912/04-4057.html

    在Windows 7的Home Premium、Professional、Enterprise和Ultimate版本中,只要搭配支援多點(diǎn)觸控的硬體即可使用多點(diǎn)觸控功能。而應(yīng)用程式方面,對(duì)觸控的支援則可分為三個(gè)等級(jí):Good、Better和Best(請(qǐng)參考表1)。

    Good等級(jí)表示不需要修改程式碼可直接支援?dāng)?shù)個(gè)基本的手勢(shì);Better等級(jí)要能針對(duì)各種不同的手勢(shì)做出合理自然的互動(dòng);Best等級(jí)則是使用更進(jìn)階的功能處理更詳細(xì)的資訊,自訂各種觸控操作經(jīng)驗(yàn)。

    Windows 7支援的手勢(shì)有9種(參考表2),我們可以看到除了Rotate和Two-Finger Tap之外,其馀手勢(shì)都可以對(duì)應(yīng)到傳統(tǒng)的滑鼠或鍵盤的操作,也就是說(shuō)應(yīng)用程式不需大幅修改既有的程式,即可支援Windows 7大部分的手勢(shì),然而你也可以在程式中重新定義這些手勢(shì)所對(duì)應(yīng)的動(dòng)作。 

    如何取得設(shè)備資訊?

    在開(kāi)始處理觸控動(dòng)作前,你可以呼叫GetSystemMetrics并傳入SM_DIGITIZER來(lái)得知目前電腦的觸控支援能力(參考程式1),根據(jù)GetSystemMetrics的傳回值,即可得知相關(guān)資訊(參考表3)。若你沒(méi)有適當(dāng)?shù)挠|控硬體,可以使用Multi-Touch Vista這個(gè)軟體搭配2隻滑鼠模擬2點(diǎn)輸入。

    如何取得觸控訊息?
 
    為了支援觸控動(dòng)作,Windows 7定義了2個(gè)新的視窗訊息:WM_GESTURE與WM_TOUCH。Windows 7中的視窗預(yù)設(shè)只會(huì)收到WM_GESTURE訊息,若呼叫了RegisterTouchWindow之后則會(huì)變成只會(huì)收到WM_TOUCH訊息,然而本文將專注于探討WM_GESTURE訊息。

    由于目前的WinForm尚未將這2個(gè)訊息轉(zhuǎn)換為控制項(xiàng)的事件,所以為了處理這2個(gè)訊息,最直接的方式就是覆寫控制項(xiàng)的WndProc方法。在本文的范例中,我們覆寫Form的WndProc方法,如此便能處理表單上的觸控動(dòng)作(參考程式2)。

    若你要讓其他控制項(xiàng)支援觸控動(dòng)作,則必須另外繼承該控制項(xiàng),并覆寫其WndProc方法,或是在表單的WndProc方法中實(shí)作判斷觸控目的控制項(xiàng)的邏輯。

    在收到一個(gè)手勢(shì)的第一個(gè)WM_GESTURE訊息前,程式會(huì)先收到一個(gè)WM_GESTURENOTIFY訊息,你可以在此時(shí)呼叫SetGestureConfig并帶入GESTURECONFIG結(jié)構(gòu),設(shè)定目前要接受或忽略哪些手勢(shì)。

    也可以在視窗一載入時(shí)就先設(shè)定好(參考程式3)。視窗預(yù)設(shè)不會(huì)收到關(guān)于Rotate手勢(shì)的訊息,若想收到所有手勢(shì)的訊息則必須呼叫 SetGestureConfig 做設(shè)定,詳細(xì)的設(shè)定項(xiàng)目請(qǐng)參考:http://msdn.microsoft.com/library/dd353241.aspx。

    如何解讀觸控資訊?

    在手勢(shì)作用的過(guò)程中成是會(huì)收到多個(gè)WM_GESTURE訊息,其所帶的參數(shù)可用來(lái)取得GESTUREINFO結(jié)構(gòu)(參考程式4),其中比較重要的部分是dwFlags、dwID、ptsLocation以及ullArguments。dwID可用來(lái)分辨是哪種手勢(shì)(參考表4),dwFlags表示手勢(shì)的狀態(tài)(開(kāi)始、慣性動(dòng)作、停止),ptsLocation及ullArguments則根據(jù)不同的手勢(shì)有不同的意義,詳細(xì)資訊請(qǐng)參考:http://msdn.microsoft.com/library/dd353242.aspx。

    在此我們只看到5種Gesture ID,但前文卻提到了9種手勢(shì),這是因?yàn)镕licks (筆觸,根據(jù)滑動(dòng)方向提供一組功能)是對(duì)應(yīng)到Pan手勢(shì)或鍵盤動(dòng)作,而其他3種手勢(shì)只會(huì)引發(fā)單純的滑鼠事件。在滑鼠事件處理常式中,利用GetMessageExtraInfo可得知事件是由滑鼠還是觸控所產(chǎn)生,進(jìn)而做不同的處理(參考程式5)。

    本文中的范例會(huì)于收到WM_GESTURE訊息時(shí),在DecodeGesture方法中利用GetGestureInfo來(lái)取得與手勢(shì)相關(guān)的GESTUREINFO結(jié)構(gòu),并根據(jù)不同的手勢(shì)做對(duì)應(yīng)的動(dòng)作(參考程式6)。需注意的是,處理完之后必須呼叫CloseGestureInfoHandle關(guān)閉GESTUREINFO的handle,否則會(huì)造成記憶體遺漏。

 

 

    處理Pan手勢(shì)的小技巧

    在處理Pan手勢(shì)時(shí),為了避免Windows將手勢(shì)誤判為Flicks,造成不良的使用經(jīng)驗(yàn),最好暫時(shí)關(guān)閉Flicks的功能。此動(dòng)作可以在控制項(xiàng)載入時(shí)就呼叫SetProp進(jìn)行設(shè)定(參考程式7),或是在WndProc中收到WM_TABLET_QUERYSYSTEMGESTURESTATUS訊息時(shí)設(shè)定m.Result為TABLET_DISABLE_FLICKS(參考程式8)。其他可設(shè)定的項(xiàng)目請(qǐng)參考http://msdn.microsoft.com/en-us/library/bb969148.aspx。

    結(jié)語(yǔ)

    了解以上處理WM_GESTURE訊息的方式之后,即可試著閱讀并修改Windows 7 SDK中的MTGestures范例程式。該范例會(huì)在表單上繪製一個(gè)長(zhǎng)方形,并依據(jù)不同的手勢(shì)對(duì)表單上的長(zhǎng)方形做出不同的動(dòng)作。


    觸摸屏與OLED網(wǎng)推出微信公共平臺(tái),每日一條微信新聞,涵蓋觸摸屏材料、觸摸屏設(shè)備、觸控面板行業(yè)主要資訊,第一時(shí)間了解觸摸屏行業(yè)發(fā)展動(dòng)態(tài)。關(guān)注辦法:微信公眾號(hào)“i51touch” 或微信中掃描下面二維碼關(guān)注,或這里查看詳細(xì)步驟
相關(guān)閱讀:3D打印    模具產(chǎn)業(yè)    微鑄鍛技術(shù)    石墨烯    OLED面板    夏普    iPhone 8    半導(dǎo)體    蘋果    
關(guān)于我們 | 廣告服務(wù) | 聯(lián)系我們 | 版權(quán)聲明 | 隱私政策 | 網(wǎng)站地圖 | 友情鏈接 | 歡迎投稿 | 加入收藏 | 意見(jiàn)反饋 | 經(jīng)銷商加入
網(wǎng)站廣告、經(jīng)銷商加盟、觸摸屏軟件銷售: 028-85108892 13183843395 028-66219290 聯(lián)系人: 張小姐 產(chǎn)品購(gòu)買聯(lián)系方式如下:
地址:成都市高升橋東路2號(hào)高盛中心1109室 電話: 028-85108892 13183843395 028-66219290
版權(quán)所有 Copyright(C) 2003-2015 All rights reserved 中國(guó)觸摸屏網(wǎng) 電子郵件: 51touch@126.com touch8@gmail.com
業(yè)務(wù)合作QQ:觸摸屏技術(shù),觸摸屏報(bào)價(jià),觸摸屏軟件咨詢 43361182 觸摸屏軟件制作與技術(shù)支持:觸摸屏軟件,觸摸查詢系統(tǒng),觸摸查詢軟件 893008608 媒體合作QQ: 893008608

2000人超級(jí)QQ觸摸屏群:59897879 171220106


分享到