2009-01-03 8 views
6

क्या किसी को विंडोज़ पर टैबलेट/स्टाइलस दबाव की जानकारी प्राप्त करने के लिए एक सौहार्दपूर्ण तरीका पता है?आप विंडोज़ पर स्टाइलस दबाव की जानकारी कैसे प्राप्त करते हैं?

स्टाइलस को माउस से :: GetMessageExtraInfo के साथ अलग करना संभव है, लेकिन आप इससे परे कोई और जानकारी नहीं प्राप्त कर सकते हैं। मुझे Wacom साइट के कोने के रास्ते में WinTab API भी मिला, लेकिन यह विंडोज़ का हिस्सा नहीं है, जहां तक ​​मैं कह सकता हूं, और संदेश कतार से पूरी तरह से अलग घटना/संदेश प्रणाली है।

यह देखते हुए कि मैं चाहता हूं कि सबसे बुनियादी दबाव जानकारी निश्चित रूप से एक मानक Win32/COM API है, क्या किसी को यह पता होना चाहिए कि यह क्या हो सकता है?

उत्तर

2

आपको टैबलेट पीसी पेन/इंक एपीआई का उपयोग करने की आवश्यकता है। एपीआई का COM संस्करण InkObj.dll में रहता है। यहां प्रलेखन के लिए एक शुरुआती बिंदु है: http://msdn.microsoft.com/en-us/library/ms700664.aspx

यदि मुझे सही याद है, तो Windows XP SP2 और बाद के विंडोज क्लाइंट ओएस पर InkObj.dll उपलब्ध है, भले ही मशीन एक टैबलेट पीसी है या नहीं।

2

अद्यतन:
यह कई वर्षों से के बाद से मैं शुरू में अंततः wintab एपीआई के लिए अनुमति देने के लिए एक आवरण का निर्माण इस उत्तर प्रदान की है, लेकिन wintab वास्तविक मानक बन गया है, और Ntrig कम या ज्यादा मुड़ा हुआ, हो गया है इस डिजिटाइज़र के माध्यम से पहुंचा जा सकता है।
(http://www.tabletpcbuzz.com/showthread.php?37547-N-trig-Posts-WinTAB-Support-Driver)

यह एक बहुत देर से प्रतिक्रिया है, लेकिन हाल ही में मेरी पत्नी और मैं एक Dell एक्सटी टेबलेट पीसी, के रूप में यह पता चला है जो वास्तव में NTrig, इंटरफेस है कि स्याही का उपयोग का एक सूट का उपयोग करता है खरीदा है, नई स्वीकार किए जाते हैं विंडोज एपीआई जो विंडोज एक्सपी टैबलेट संस्करण, फिर एसपी 2 और इसके बाद के सभी संस्करणों के साथ भेज दिया गया।

बहुत सारे वाकॉम टैबलेट और अन्य विंटैब एपीआई का उपयोग करते हैं, जो वर्तमान में खुला नहीं है और न ही वास्तव में उपयोग करने की अनुमति है। जो लोग मैं इसे बनाए रखता हूं, उससे मैं बहुत खुश हूं।

तो यह इस बात पर निर्भर करता है कि आप किस प्रकार का टैबलेट उपयोग कर रहे हैं, और आपके द्वारा इंस्टॉल किए गए ड्राइवर। मेरी पक्षपातपूर्ण राय में, आपको इंक के साथ काम करना चाहिए, क्योंकि यह प्रदान करता है (या कम से कम एनटीआरआईजी और विंडोज 7 प्रदान करेगा) बहु स्पर्श क्षमता और टैबलेट इंटरफेस के लिए नया मानक होगा। लेकिन अभी तक, एनटीआरआईजी डिवाइस अपने दबाव और कोण की जानकारी को सामान्य विंटैब-आधारित अनुप्रयोगों जैसे फ़ोटोशॉप या कोरल पेंटर में अनुवाद नहीं करते हैं। ठीक से काम करने के लिए अनुप्रयोगों को माइक्रोसॉफ्ट के टैबलेट एपीआई के लिए कम से कम कुछ समर्थन की आवश्यकता होती है।

+0

FYI करें, के बाद से मैं अक्सर wintab के बारे में अपनी खोजों में इस उत्तर मारा: wintab एपीआई अभी भी सामान्य कलम गोली संबंधों के लिए प्रयोग किया जाता है और वास्तविक मानक प्रतीत होता है, कम से कम जब तक अधिक एप्लिकेशन और टैबलेट निर्माता माइक्रोसॉफ्ट इंक समर्थन को दोबारा नहीं हटाते हैं। वर्तमान में विनिर्देश बनाए रखने वाले लोग वाकॉम हैं, और वे [मुकदमा जो मुझे लगता है कि आप इसका जिक्र कर रहे हैं] प्राप्त करने वाले थे [http://caselaw.findlaw.com/us-federal-circuit/1114074.html)। उनकी वेबसाइट अन्य निर्माताओं को उनके हार्डवेयर के साथ विंटैब स्पेक को लागू करने के बारे में बात करने का स्वागत करती है। – user1201210

+0

वाह, चार साल बाद! मैंने पाया है कि आप क्या कहने के लिए कहते हैं, हालांकि जिन मुकदमे का मैं जिक्र कर रहा था, वे वाकॉम अपने मूल इंटरफ़ेस में पोर्ट विंटैब बंद करने का प्रयास करने के लिए मुकदमा कर रहे थे। ऐसा कहा जा रहा है कि, एनटीआईआरजी ने विंटाब एपीआई की अनुमति देने के लिए एक रैपर लिखा है, और अब मेरा पुराना डेल एक्सटी 2 फ़ोटोशॉप एट अल के साथ काम करता है। मैं यह जवाब अपडेट करूंगा। – NateDSaint

2

ऐसा करने का वर्तमान तरीका WM_POINTERnnn msgs को संभालना है। नोट यह विन 8 और बाद में है।

ध्यान दें कि आपको इन संदेशों को स्पर्श और कलम के लिए प्राप्त होगा, इसलिए आपको पेन के परीक्षण के लिए पॉइंटर टाइप पता होना होगा। WM_POINTERnnnn संदेशों के लिए WNDPROC द्वारा प्राप्त WPARAM को इस तरह के WM_POINTERUPDATE और अन्य संदेशों में पॉइंटर आईडी होती है जिसे आपको अधिक जानकारी के लिए अनुरोध करने के लिए आवश्यक होगा। अनुभवी रूप से मैंने पाया कि WM_POINTERUPDATE के परिणाम में सूचना डेटा होता है जिसमें दबाव डेटा होता है, जबकि अगर सूचक झंडे नीचे इंगित होते हैं तो कोई दबाव जानकारी नहीं होती है।

const WORD wid = GET_POINTERID_WPARAM(wParam); 
POINTER_INFO piTemp = {NULL}; 
GetPointerInfo(wid, &piTemp); 
if (piTemp.pointerType == PT_PEN 
{ 
    UINT32 entries = 0; 
    UINT32 pointers = 0; 

    GetPointerFramePenInfoHistory(wid, &entries, &pointers, NULL); // how many 
    // TODO, allocate space needed for the info, process the data in a loop to retrieve it, test pointerInfo.pointerFlags for down/up/update. 

} 

एक बार जब आप जानते हैं कि आप कलम के साथ काम कर रहे हैं, आप POINTER_PEN_INFO struct के दबाव की जानकारी प्राप्त कर सकते हैं।

यह हैंडलिंग टच के समान है हालांकि स्पर्श के लिए आप इशारा पहचान और जड़ता चाहते हैं। इन कार्यों का उपयोग करके चित्रित एक Microsoft नमूना है।

यह एक बिल्ड बात का हिस्सा है: https://channel9.msdn.com/Events/Build/2013/4-022

संबंधित मुद्दे

 संबंधित मुद्दे