社区
PowerBuilder
帖子详情
请问在更新数据时,出现“Data window does not have UPDATE capability.”信息,是什么原因?如何解决?
C_fan
2002-05-17 08:30:12
请问在更新数据时,出现“Data window does not have UPDATE capability.”信息,是什么原因?如何解决?
...全文
112
5
打赏
收藏
请问在更新数据时,出现“Data window does not have UPDATE capability.”信息,是什么原因?如何解决?
请问在更新数据时,出现“Data window does not have UPDATE capability.”信息,是什么原因?如何解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bys_home
2002-05-17
打赏
举报
回复
同意楼上的兄弟
tigerchamp
2002-05-17
打赏
举报
回复
没错,就这样搞定
sunkai
2002-05-17
打赏
举报
回复
设一下update属性就可以了
banalman
2002-05-17
打赏
举报
回复
在数据窗口的设计面板 row-->update property-->设置数据窗口的更新属性即可
swjtu95
2002-05-17
打赏
举报
回复
设定一下UPDATE属性就可以了(菜单rows-->update proper…-->勾上allow updates
并设置update的字段、主键和表)。
FlexGraphics_V_1.79_D4-XE10.2_Downloadly.ir
Version 1.7 ----------- - ADD: Delphi/CBuilder 10.2 Tokyo now supported. - ADD: Delphi/CBuilder 10.1 Berlin now supported. - ADD: Delphi/CBuilder 10 Seattle now supported. - ADD: Delphi/CBuilder XE8 now supported. - ADD: Delphi/CBuilder XE7 now supported. - ADD: Delphi/CBuilder XE6 now supported. - ADD: Delphi/CBuilder XE5 now supported. - ADD: Delphi/CBuilder XE4 now supported. - ADD: Delphi/CBuilder XE3 now supported. - ADD: Delphi/CBuilder XE2 now supported. - ADD: Delphi/CBuilder XE now supported. - ADD: Delphi/CBuilder 2010 now supported. - ADD: Delphi/CBuilder 2009 now supported. - ADD: New demo project Flex
CA
DImport. - FIX: The height of the TFlexRegularPolygon object incorrectly changes with its rotation. - FIX: Added division by zero protect in method TFlexControl.MovePathSegment. - FIX: The background beyond docuemnt wasn't filled when TFlexPanel.DocClipping=True. - FIX: In "
Window
s ClearType" font rendering mode (OS
Window
s mode) the "garbage" pixels
ca
n appear from the right and from the bottom sides of the painted rectangle of the TFlexText object. - FIX: The result rectangle incorrectly
ca
lculated in the TFlexText.GetRefreshRect method. - FIX: Added FPaint
Ca
che.rcPaint cleanup in the TFlexPanel.WMPaint method. Now it is possible to define is the drawing take place via WMPaint or via the PaintTo direct
ca
ll (if rcPaint contain non-empty rectangle then WMPaint in progress). - FIX: The TFlexPanel.FPaint
Ca
che field moved in the protected class section. Added rcPaint field in FPaint
Ca
che that represents drawing rectangle. - ADD: In the text prcise mode (TFlexText.Precise=True) takes into account the rotation angle (TFlexText.Angle). - FIX: Removed FG_NEWTEXTROTATE directive (the TFlexText Precise mode should be used instead). - FIX: The TFlexRegularPolygon object clones incorrectly drawed in
ca
se when TFlexRegularPolygon have alternative brush (gradient, texture). - ADD: Add TFlexPanel.InvalidateControl virtual method which
ca
lls from TFle
VB编程资源大全(英文源码 网络)
1 , WinLo
ca
leConvert.zip
This program shows the international settings of the country you select such as Format Currency, Date Format, Day Name, Month Name...
2 , netstuff.zip
This program queries the network and shows the Domains/Servers/Workstations structure. It also shows the users of each Server or Workstation and
ca
n send messages to the selected PC. This programs works only on a
Window
s NT 4.0 Machine!
3 , projectgroupx.zip
You may use this code as a learning tool only. The appli
ca
tion may not be sold in any shape or form. So 下载 the code and get involved with the News Group, help us to help you.
4 , urllink.zip
User control to launch web browser and jump to URL.
5 , vbftp.zip
Sample appli
ca
tion that implements FTP connection, 下载, and upload using the WinInet FTP API from Visual Basic
6 , browser.zip
Simple web browser using the Microsoft Internet Control.
7 , ftp.zip
Complete FTP appli
ca
tion.
8 , chatclnt.zip
Client side of an internet chat program
9 , chatserv.zip
Server side of an internet chat program
10 , hlink.zip
Is a control that you
ca
n use to link your program to a web site.
11 , Popmail.zip
Checks your email!
12 , telnet.zip
Telnet Appli
ca
tion
13 , validip.zip
Validate an IP address
14 , dmvbtest.zip
This is a complete email sending client in Visual Basic
15 ,
Ca
rlosChatApp.zip
This is a program that enables two people to chat across the internet. You must know each others IP address and have an understanding of ports
16 , inteferorprovider.zip
program which communi
ca
tes with each other and allows one computer to perform a task on the other
17 , itimer.zip
Internet Timer. Also
ca
lculates the cost of the
ca
ll.
Ca
n AutoDetect Phone
ca
ll charges from the time and date.
18 , tlsNet.zip
TILISOFT Internet ActiveX Controls - Retrieve HTML pages from the Net - Post
data
to HTTP server
19 , pingmon.zip
A ping monitor for the network administrator. Based on API code
20 , webbrowser.zip
Easily build your very own custom web browser,using the web browser object
21 , StealthSRC.zip
StealthMail 2.1 - full SOURCECODE for the StealthMail 2.1 program. Uses only VB6 code, and NO API
ca
lls!
22 , Worldmeet.zip
This is the source code for a client and server chat program.
23 , RemoteFileExp.zip
This uti
lity
allows you to remotely reboot, log-off, 下载 files, delete files,luanch appli
ca
tions, auto navigate a web browser and view desktops via TCP/IP
24 , Lagmeter.zip
This Will Allow You To See A Visual Representation Of The Latency of Your Lo
ca
l Machines IP. A.k.a Lag Meter
25 , mailcheck.zip
Mail Checker Sample Appli
ca
tion. Create your own POP3 client to retrieve e-mails from mail server. Source code + tutorial.
26 , chat.zip
This code shows you how to creat a lo
ca
l network chat room so that you and your friends
ca
n have a chat room which nowone else
ca
n enter
27 , news.zip
Demonstrates how to downlaod text from a webpage without a browser open. This could be used for what i used it for in the past for a news program
28 , url.zip
Worldwide list of URL extensions by country
29 , EmailChk.zip
This Appli
ca
tion checks for unread email using outlook. MS Agent will popup to announce how many unread mails you got. This also checks sub-folders on your inbox. Configuration is added to choose which MS Agent to use and the Time interval use to check for mails
30 , wsc_ftp_client.zip
FTP Client Sample Appli
ca
tion. It was built with MS Winsock Control. It is a complete FTP client that allows you to browse FTP directories, 下载 and upload files, resume broken file transfer, create and remove directories, delete and rename files. All the operations execute in an asynchronous mode with the progress indi
ca
tion .
31 , MultiServer.zip
This is real simple source code for a Multi-Client server, it allows upto 65535 users to connnect to your server,via winsock control- it
ca
n be customised to become any server, such as IRC, FTP. plus all the functions are in their to relay
data
and store information on each users accounts.
32 , GuardDuty.zip
Lets you create your very own Cyber Sitter or Net Nanny Type software- it blocks access to sites based on keywords such as "sex","hack" or "security" alternatively whatever you want ! - it's the long awaited project version of previously released WEB ADDRESS SPY!
33 , whisper.zip
Complete LAN chat program
34 , vbtelnetserver.zip
Telnet Server. Allows multiple connections, uses Access DB to store Access Control Lists/Users
35 ,
Ca
sperEdit.zip
Almost complete HTML editor with many functions. This is only a pre-released version so some stuff doesn't work.
36 , browser0516.zip
Its a fully functional web browser
37 , lovevirusCleaner.zip
With the onslaught of the Love Bug virus in the last 24 hours, many of us had to provide solutions prior to the Virus Protection companies. This VB6 code cleans the ILOVEYOU virus from systems
38 , shras21.zip
Custom Control, that lets you have full control of Dial Up Networking
39 , FullBrowser.zip
: This is A Complete Internet Browser Like IE With More Fuctions Like Bulk mail And Many more. Requires several third-party OCX files including Autocomplete.ocx.
40 , webpagmaker.zip
Web page maker
41 , vs.zip
Viru-Spy. Relays sytem information to your email account. Run on someone else machine to retrieve system info,dial up passwords, bookmarked urls etc etc
42 , icqp.zip
Send ICQ messages from VB
43 , DekMate2.0.zip
All new DeskMate2.0 with added new features like email checking, NT messaging system, movie screen, system tray alerts as well as the old features like, Online Weather, News headlines, Online Horoscopes, Movie Reviews etc.
44 , TelDialOut1.zip
TelDialOut is a program that dials a phone number from an appli
ca
tion using the modem. I had observed the large number of postings on various forums about this topic so I have included a well documented appli
ca
tion to assist those who would be using this feature in their appli
ca
tions
45 , TreeViewXML.zip
Great example program for programmers learning XML. This program shows you how to use the msxml.dll control, as well as the treeview control. Users must have msxml.dll version 2.0 for binary compatibi
lity
.
46 , CustEditXML.zip
Complete VB appli
ca
tion that retrieves customer information from an XML script, allows you to make changes to the
data
, and saves the record using other XML scripts. This is a great example for learning MSXML.dll and TransactXML.dll procedures.
47 , email1mapi.zip
Visual Basic code for Sending email using MAPI control.
48 , Dan.zip
Dan's All purpose masterful program
49 , metasite.zip
this vb code executes a request from metacrawler.com and returns all links results in a TreeView.
50 , email.zip
Sending Email using MAPI control.
51 , EmailChecker.zip
Checks your new mails from mutiple mail servers(yeah it works!!!!!). it switches tray icons on different states & displays the number of new messages (as msn messenger display messages) and plays a WAV file
52 , urlhist.zip
This sample demonstrates how to loop through the history folder of Internet Explorer.
53 , AdvancedWebBrowser.zip
Advanced web browser..something like IE but less options really nice interface..code is very easy to understand..teaches you the basics of using vb.
54 , iusage.zip
NO its not another internet usage monitor its different.Apart from
ca
lculating the cost and total time you spend on the net it even reminds you to switch of the net after a time interval which you specify.Check out this cool program.
55 , dauntless.zip
This is an exceptionally good piece of code. One program runs on a machine somewhere, and the other on your machine. You
ca
n then send commands to the other machine, take screen snapshots and more... It uses the INET control for all functiona
lity
, but you could do the same with the Winsock DLL.
56 , netcontrol2.zip
Following on from the original NetControl by Danny, this little ActiveX/OXC project contains some small modifi
ca
tions and the sourcecode for the control. You
ca
n send messages with a client/server type setup.
57 , al40.zip
Apparently, if you use AOL to connect to the Internet and you do not touch it for 45 minutes it will timeout and drop the connection. This little program will ensure that it keeps the connection active.
58 , yougotmail.zip
Kenneth has developed this is a great little appli
ca
tion which reads a Microsoft Exchange mailbox and lets you know via playing a .WAV file when you have mail.
59 , netcontrol.zip
This little project is Dannys first attempt at an ActiveX control and its very good. There are two mini projects included here. The first is
ca
lled SlotDemo and allows you to send messages or
data
in a client/server type role. Its uses some very clever programming.
60 , cethernetaddress.zip
We found this bit of code somewhere on the Internet a few months ago and tidied it up a bit. I don't know the author's name so
ca
nnot give them credit. But basi
ca
lly this sample will return the Ethernet Address of the
ca
rd in the current machine.
61 , cnetworkinfo.zip
This little demo will return, using
Window
s API
ca
lls, the following: IP Address, Network Username, WorkdstationID,
Window
s version, build version and service pack info, the
window
s directory, the PDC name if you are logged onto an NT server and the time
62 , ccheckduncount.zip
If you want to check if there is a RAS/DUN conneciton activ, then this little routine will return true or false depending on whats going on. If RAS isn't installed on the machine, it will crash but otherwise its a great routine. For more information
63,winskip.zip
Using the Winsock Control to get IP Information
64,opnblank.zip
Open a Blank Browser
Window
65,distitl.zip
Display the Title of a Page in a Form's
Ca
ption Bar
66,disbrows.zip
Disable Input to a WebBrowser Control
67,lbllink.zip
Make a Label Act Like an Internet Link
68,linkcmbo.zip
Link a ComboBox to a WebBrowser Control
69,navbutns.zip
Navigation Buttons
70,status.zip
Show Browser Status
71,iphost.zip
Get Lo
ca
l IP and HostName using WinSock
72,xmldirviewer.zip
This is a sample from an XML implementation I created for my company's Intranet, giving the
ca
p
abi
lity
for user maintained content
73,phone.zip
A Cellular Phone Appli
ca
tion Uses MSCOMM, Modem and normal telephone lines to make
ca
lls.
74,PhoneDial.zip
A Phone Dialing program that play both DTMF Tones and MF Tones using wav files. It does not use A real Phone.
75,dnslookup.zip
Easy DNS Lookup and Reverse Name lookup using qdns.dll (dll vb source is included in zip). For use see included sample ASP page.
76,Mar_05_2001.zip
About myself, i am a computer pro experienced in creating dynamic
data
driven web sites. About the code, it demonstrates the usage of internet transfer control to 下载 the content from the web.
77,InstantMessenger.zip
A basic Instant Messenger.
78,Web
Ca
pture.zip
Just mention the site URL and easily
Ca
pture the desired
Data
, Tag's from that Web Site. Also
helps in understanding the use of DoEvents, Error traping and many more features.
79,destructureur.zip
this code analyse DOM of a web document(Document Object Model).
Usefull in order to rettrieve all links, images, scripts informations like url, index, absolute index of all HTML objects.
80,bla.zip
This is an Internet Public Chat Appli
ca
tion, which is unique. This is for All. I have seen several Internet Chat systems developed but they were not good enough to encourage the Novice programmers understand the complexities of using the Winsock control. This is the Internet Chat System developed using Winsock Control only and no API
ca
lls, or any other DLLs.
81,EmailSystem.zip
In this tutorial of 100+ pages, you
ca
n get every thing which is mainly related to build a complete web based email system. this arti
ca
l will cover everthing of SMTP, POP3, MIME and HTTP.
82,inanny.zip
Inanny is a netnanny like clone,u
ca
n use inanny to block sites lo
ca
lly.The new version works with nets
ca
pe(all versions) as well as ie(all versions).
83,source_build84.zip
IRC Client that supports all basic needs of an IRC Client and a bit more. Uses Raw RTF code, so it's very fast displaying text. Also handles IDENTd properly.
84,Blitz.zip
Blitz Chat System is a complete Chat Server and Client appli
ca
tion for internet and intranet users. It has facilities like room selection,
85,QNavigator.zip
Q Navigator Ver 1.1 is an
update
d form of my Web Browser, which has the best features (and more) of all browsers.
86,atomicclock.zip
RJ Soft's AtomicClock (Atomic Clock.Exe) sets your computers Date and Time from an atomic clock via tcp/ip at 12:01 AM every day. Atomic Clock sits in the system tray so you
ca
n load it and forget it or click on the icon and tell it to reset the Date and Time.
86,demooutlook.zip
Send Text or HTML Mail(You
ca
n join an ONLINE photo). Retrieve all your input box mails and create a new folder.
87,weather.zip
This is a grand appli
ca
tion allowing you to get 10 day weather fore
ca
sts for almost every region of the world. Also gives you weather imagery maps. Must see. Kind of a big 下载, but I wanted to make sure everything was included.
88,下载er2.zip
Website 下载er.
Update
d with many new features.
89,SurfMonitorCODE2.zip
OK folks.....this is a better version of the SurfMonitor code. Not only does it have the 'Autodetect' feature, it also manages the registry better and creates log files. The administrator
ca
n also apply time and date restrictions on users....
90,ThePorter.zip
This is an anti-hacker tool I've created. It's much like Lockdown 2000. It sits on your system tray listening for incoming connections on various ports.
91,SurfMonitorCODE.zip
Allows an individual to restrict multiple users to access the users only for a certain amount of time. It also has an 'Autodetect' feature to automati
ca
lly detect an internet connection and disconnect in
ca
se
92,下载er.zip
Just enter the URL of a webspage you want to 下载 and all the links in the webpage will be 下载ed including any image files . The program is still in the development stage .
93,bmail.zip
This software for bulk email for personal and corporate use. The enclosed zip conatains all the codes and readme text. This software uses MAPI and CDO for
Window
s 9x.
94,winsock.zip
Appli
ca
tion demonstrates the use of the VB Winsock control and some of its properties.
95,HTMLEd.zip
A simple HTML editor written in Visual Basic.
96,emailnotifier.rar
This is an appli
ca
tion that monitors the lo
ca
l host for IP address changes and notifies a list of people by e-mail if the IP address changes. Both the IP address and the e-mail list are stored between sessions
97,pbaspediter.zip
A Full Advanced ASP/Html Editer with
Data
base, Cookies, includes, sounds, forms, body, Tables wizards and more. (Wizards do html & responce.write) Color coding html. tag inserts, Plugins, Templates, Java codebase, vbscript codebases, full asp codebase Asp Preview on lo
ca
lhost and normal preview and LOTS MORE MUST SEE
98,Exchange_Viewer.zip
You must have Access 2000 installed in order to print. Other than that you should be fine. This will anonymously query an exchange 5.5 or higher exchange server and retrieve The names and email addresses and place them into an access
data
base. This code has many useful examples.
99,Automatic_
Update
r.zip
UPDATE
D 11/10/2000 Now With even more options!! This appli
ca
tion allows you to check for an
update
d version of a file or a program via FTP, then 下载 that
update
if it is available.
100,PingX.zip
Ping(s) a computer and returns the results.
101,hm
update
dold.zip
HotmailBox - Alternative Hotmail client that accesses your inbox. Includes support for multiple accounts, synchronizes your account, has a built-in address book and support for attachments (with the exception of images, so far).
102,hypermap.zip
Hyper_Map allows you to define areas on a webpage graphic for jumping to different URLs. Image mapping is a neat way to create links. Also, the program demonstrates Picture1 draw properties and some HTML creation.
103,icqvb.zip
ICQ Control Center, The worlds most complete icq api example freely availble on the net, this revised edition contains protocol information sample code and much much more !
104,HTMLMail.zip
This appli
ca
tion allows to send HTML mails ! Now you
ca
n send images, formatted text in your mails, put some really cool effects !
105,NTPSync.zip
Synchronize Your System Time with a Network Time Protocol (NTP) Server.
106,WinsockTrans.zip
This code allows you to transfer files from one pc to another using winsock.
107,Winsock下载.zip
Winsock 下载er - Lets you 下载 any file from the internet (Binary, ASCII, Text) any size.
108,ftp2.zip
An FTP appli
ca
tion with complete VB source code included.
109,vb-aim.zip
AOL instant messenger client written in VB.
110,ping2src.zip
Version 2.02 of the popular Idoru Ping Monitor. Includes a Password Hacker, and shows important info on your machine
111,OnYxBrowser.zip
A full avtive browser, with all IE's trimings, i have left out the exe and some of the ocx. but ppl who have vb60 should have these ocx.
112,PostMan.zip
VB appli
ca
tion which uses winsock control to send mail to your mail server!
113,transfer.zip
Simple file transfer (FTP) appli
ca
tion. Contains both the client and server VB source code .vbp appli
ca
tions. Destination filename is set to "Temp".
114,inter.zip
Detects if the user is connected to the internet.
115,frmClient.zip
Started to program a remote tool FTP program. Give some feedback otherwise i'm going to code it in Delphi.
116,prjClient.zip
Live wire winsock file transfer program which retreives remote drives/directories and working on files and enables upload/下载 of files with progressbar.
117,webbrowser2.zip
I have tried to develop a very good browser. Now I myself
ca
n't rate it... so i am leaving to you guys out there to rate it..
118,InternetBrowser.zip
It is an interesting Internet Browser. Add your favorites, URLs, Home Page, and History to
Window
s 95/98 Registry. Must see.
119,Browser2.zip
[
UPDATE
D]:Complete Internet Browser. Must see.
120,display.zip
This code sample enables users to 下载 and display HTML, RTF, or Text files in a RichTextBox Control, using the Microsoft Internet Transfer Control included in Visual Basic 5.0.
121,easyhttp.zip
Retrieve Web page or file (including all HTTP headers and message body) througn HTTP protocol directly from VB program which utilize the MS WinSock Control.
122,emailcheck.zip
This appli
ca
tion checks for incoming mail (POP3 client).
123,NetSend.zip
A Simple Appli
ca
tion to Send Messages Without using a COMMAND Prompt.
124,ChatPrg.zip
This appli
ca
tion provides seamless interaction between users of an intranet. The
data
base acts as a Server and it has to be loaded on the server of your lo
ca
l intranet and each .exe serves as
a client.
125,Chatty.zip
This is a simple one-to-one chat program using Winsock. It includes a text based chat, a messaging feature and also a secure communi
ca
tion feature, much like SSL. I use the RSA 64 bit encryption for the secure channel.
126,Telephonic.zip
The program
ca
n be used in your desktop, as is. You will find dialing much more confortable and fast than the original
Window
s Dialer.exe.
127,ClientServer.zip
A messages Client / Server appli
ca
tion (compile and source code).You
ca
n send messages from a client to another and server remote all users activity and distribute the messages to client who request that
128,MESSENGER.zip
E-MAIL PROGRAM. ALLOWS USER TO LOG INTO ISP SERVICE AND SEND MESSAGES AND FILES.
129,ip.zip
Very simple appli
ca
tion which shows how to get your PC's IP address using the VB Winsock control.
130,CS_Tools_2.zip
This program
ca
n save you days to weeks of work on a huge domain with hundreds to thousands of users with its "Bulk Administration" and remote feature. Features Bulk Administration Allows you to administer the login path, profile path, home directory, and more with one click of a button for all users! Alternate Credentials Allows you to specify a different username and password to complete your tasks.
131,networkinfo.zip
Appli
ca
tion which gets all network information from the system.
132,gethtml.zip
This example uses the Inet control to 下载 the HTML source from any webpage. This could easily be used in conjunction with the Get Web Links example to make a full fledged web-spider and search engine program...
133,getweblinks.zip
This example uses the WebBrowser control to load a web page then enumerate and display all of the links on that page. This example could be easily expanded to be used as a web-spider with a little bit of effort.
134,bs2vb.zip
This example is a very simple solution to sending and receiving
data
to and from a Parallax Basic Stamp. This example requires a Basic Stamp and the MSComm control. Also included is an example Basic Stamp II program to work with the example...
135,Chatptop.zip
A Peer-to-Peer chatting program with a very easy user interface.
136,f_160.zip
A basic example on how to transfer files across the network using the WinSock Control(18KB)
137,f_159.zip
A simple example of exchanging
data
across a network using the WinSock control(4KB)
138,f_115.zip
A simple web browser built using the Web Browser control(2KB)
数位板压力测试
sdk LCS/Telegraphics Wintab* Interface Specifi
ca
tion 1.1: 16- and 32-bit API Reference By Rick Poyner Revised February 11, 2012 This specifi
ca
tion was developed in response to a perceived need for a standardized programming inter-face to digitizing tablets, three dimensional position sensors, and other pointing devices by a group of lead-ing digitizer manufacturers and appli
ca
tions developers. The avail
abi
lity
of drivers that support the features of the specifi
ca
tion will simplify the process of developing
Window
s appli¬
ca
tion programs that in-corporate absolute coordinate input, and enhance the acceptance of ad¬vanced pointing de¬vices among users. This specifi
ca
tion is intended to be an open standard, and as such the text and information contained herein may be freely used, copied, or distributed without compensation or licensing restrictions. This document is copyright 1991-2012 by LCS/Telegraphics.* Address questions and comments to: LCS/Telegraphics 150 Rogers St.
Ca
mbridge, MA 02142 (617)225-7970 (617)225-7969 FAX Compuserve: 76506,1676 Internet: wintab@pointing.com Note: sections marked with the “(1.1)” are new sections added for specifi
ca
tion version 1.1. Sec-tions bearing the “(1.1 modified)” notation contain
update
d information for specifi
ca
tion version 1.1. Version 1.1
Update
Notation Conventions 1 1. Background Information 1 1.1. Features of Digitizers 1 1.2. The
Window
s Environment 1 2. Design Goals 2 2.1. User Control 2 2.2. Ease of Programming 2 2.3. Tablet Sharing 3 2.4. Tablet Feature Support 3 3. Design Concepts 3 3.1. Device Conventions 3 3.2. Device Information 4 3.3. Tablet Contexts 4 3.4. Event Packets 4 3.5. Tablet Managers 5 3.6. Extensions 5 3.7. Persistent Binding of Interface Features (1.1) 6 4. Interface Implementations 6 4.1. File and Module Conventions 6 4.2. Feature Support Options 6 5. Function Reference 7 5.1. Basic Functions 7 5.1.1. WTInfo 8 5.1.2. WTOpen 9 5.1.3. WTClose 10 5.1.4. WTPacketsGet 10 5.1.5. WTPacket 11 5.2. Visibi
lity
Functions 11 5.2.1. WTEnable 11 5.2.2. WTOverlap 12 5.3. Context Editing Functions 12 5.3.1. WTConfig 12 5.3.2. WTGet 13 5.3.3. WTSet (1.1 modified) 13 5.3.4. WTExtGet 14 5.3.5. WTExtSet 14 5.3.6. WTSave 15 5.3.7. WTRestore 15 5.4. Advanced Packet and Queue Functions 16 5.4.1. WTPacketsPeek 16 5.4.2. WT
Data
Get 17 5.4.3. WT
Data
Peek 17 5.4.4. WTQueuePackets (16-bit only) 18 5.4.5. WTQueuePacketsEx 18 5.4.6. WTQueueSizeGet 19 5.4.7. WTQueueSizeSet 19 5.5. Manager Handle Functions 19 5.5.1. WTMgrOpen 19 5.5.2. WTMgrClose 20 5.6. Manager Context Functions 20 5.6.1. WTMgrContextEnum 20 5.6.2. WTMgrContextOwner 21 5.6.3. WTMgrDefContext 22 5.6.4. WTMgrDefContextEx (1.1) 22 5.7. Manager Configuration Functions 23 5.7.1. WTMgrDeviceConfig 23 5.7.2. WTMgrConfigReplace (16-bit only) 24 5.7.3. WTMgrConfigReplaceEx 24 5.8. Manager Packet Hook Functions 25 5.8.1. WTMgrPacketHook (16-bit only) 26 5.8.2. WTMgrPacketHookEx 26 5.8.3. WTMgrPacketUnhook 29 5.8.4. WTMgrPacketHookDefProc (16-bit only) 30 5.8.5. WTMgrPacketHookNext 30 5.9. Manager Preference
Data
Functions 31 5.9.1. WTMgrExt 31 5.9.2. WTMgrCsrEnable 32 5.9.3. WTMgrCsrButtonMap 32 5.9.4. WTMgrCsrPressureBtnMarks (16-bit only) 33 5.9.5. WTMgrCsrPressureBtnMarksEx 33 5.9.6. WTMgrCsrPressureResponse 34 5.9.7. WTMgrCsrExt 35 6. Message Reference 36 6.1. Event Messages 36 6.1.1. WT_PACKET 36 6.1.2. WT_CSRCHANGE (1.1) 37 6.2. Context Messages 37 6.2.1. WT_CTXOPEN 37 6.2.2. WT_CTXCLOSE 37 6.2.3. WT_CTX
UPDATE
38 6.2.4. WT_CTXOVERLAP 38 6.2.5. WT_PROXIMITY 38 6.3. Information Change Messages 39 6.3.1. WT_INFOCHANGE 39 7.
Data
Reference 39 7.1. Common
Data
Types (1.1 modified) 39 7.2. Information
Data
Structures 41 7.2.1. AXIS 41 7.2.2. Information
Ca
tegories and Indices (1.1 modified) 42 7.3. Context
Data
Structures 50 7.3.1. LOGCONTEXT (1.1 modified) 50 7.4. Event
Data
Structures 55 7.4.1. PACKET (1.1 modified) 55 7.4.2. ORIENTATION 57 7.4.3. ROTATION (1.1) 58 Appendix A. Using PKTDEF.H 59 Appendix B. Extension Definitions 60 B.1. Extensions Programming 60 B.2. Out of Bounds Tracking 61 OBT Programming 61 Information
Ca
tegory 61 Turning OBT On and Off 61 B.3. Function Keys 62 FKEYS Programming 62 Information
Ca
tegory 62 B.4. Tilt 62 TILT Programming 63 Information
Ca
tegory 63 B.5. Cursor Mask 63 CSRMASK Programming 64 Information
Ca
tegory 64 B.6. Extended Button Masks 64 XBTNMASK Programming 64 Information
Ca
tegory 65 VERSION 1.1
UPDATE
NOTATION CONVENTIONS Sections marked with the “(1.1)” are new sections added for specifi
ca
tion version 1.1. Sections bearing the “(1.1 modified)” notation contain
update
d information for specifi
ca
tion version 1.1. The “(1.1)” notation also marks the definitions of new functions, messages, and
data
structures. The nota-tion “1.1:” marks new text or commentaries explaining new functiona
lity
added to existing features. 1 BACKGROUND INFORMATION This document describes a programming interface for using digitizing tablets and other advanced pointing de¬vices with Microsoft
Window
s Version 3.0 and above. The design presented here is based on the input of numerous professionals from the pointing device manufacturing and
Window
s soft¬ware development industries. In this document, the words "tablet" and "digitizer" are used interchange¬ably to mean all absolute point¬ing or digitizing devices that
ca
n be made to work with this interface. The definition is not lim¬ited to de¬vices that use a physi
ca
l tablet. In fact, this specifi
ca
tion
ca
n support de¬vices that combine rela¬tive and absolute pointing as well as purely relative devices. The following sections describe features of tablets and of the
Window
s environment that helped mo¬tivate the design. 1.1 Features of Digitizers Digitizing tablets present several problems to device interface authors. • Many tablets have a very high report rate. • Many tablets have many configurable features and types of input information. • Tablets often control the system cursor, provide additional digitizing input, and provide template or macro functions. 1.2 The
Window
s Environment Programming for tablets in the
Window
s environment presents additional problems. • Multitasking means multiple appli
ca
tions may have to share the tablet. • The tablet must also be able to control the system cursor and/or the pen (in Pen
Window
s). • The tablet must work with legacy appli
ca
tions, and with appli
ca
tions written to take advan¬tage of tablet services. • The tablet driver must add minimal speed and memory overhead, so as many appli
ca
tions as possible
ca
n run as efficiently as possible. • The user should be able to control how appli
ca
tions use the tablet. The user interface must be ef-ficient, consistent, and customizable. 2 DESIGN GOALS While the tablet interface design must address the techni
ca
l problems stated above, it must also be useful to the programmers who will write tablet programs, and ultimately, to the tablet users. Four design goals will help clarify these needs, and provide some criteria for evaluating the interface speci¬fi
ca
tion. The goals are user control, ease of programming, tablet sharing, and tablet feature support. 2.1 User Control The user should be able to use and control the tablet in as natural and easy a manner as possible. The user's preferences should take precedence over appli
ca
tion requests, where possible. Here are questions to ask when thinking about user control as a design goal: •
Ca
n the user understand how appli
ca
tions use the tablet? • Is the interface for controlling tablet functions natural and unobtrusive? • Is the user allowed to change things that help to customize the work environment, but pre¬vented from changing things over which appli
ca
tions must have control? 2.2 Ease of Programming Programming is easiest when the amount of knowledge and effort required matches the task at hand. Writing simple programs should require only a few lines of code and a minimal understanding of the en-vironment. On the other hand, more advanced features and functions should be available to those who need them. The interface should accommodate three kinds of programmers: those who wish to write sim-ple tablet programs, programmers who wish to write complex appli
ca
tions that take full ad¬vantage of tab-let
ca
p
abi
lities, and programmers who wish to provide tablet device control features. In addition, the inter-face should accommodate programmers in as many different programming lan¬guages, situations, and en-vironments as possible. Questions to ask when thinking about ease of programming include: • How hard is it to learn the interface and write a simple program that uses tablet input? •
Ca
n programmers of complex appli
ca
tions control the features they need? • Are more powerful tablet device control features available? •
Ca
n the interface be used in different programming environments? • Is the interface logi
ca
l, consistent, and robust? 2.3 Tablet Sharing In the
Window
s environment, multiple appli
ca
tions that use the tablet may be running at once. Each ap-pli
ca
tion will require different services. Appli
ca
tions must be able to get the services they need without getting in each others' way. Questions to ask when thinking about tablet sharing include: •
Ca
n tablet appli
ca
tions use the tablet features they need, independent of other appli
ca
tions? • Does the interface prevent a rogue appli
ca
tion from "hijacking" the tablet, or
ca
using dead¬locks? • Does the sharing architecture promote efficiency? 2.4 Tablet Feature Support The interface gives standard access to as many features as possible, while leaving room for future ex¬ten-sions and vendor-specific customizations. Appli
ca
tions should be able to get the tablet informa¬tion and services they want, just the way they want them. Users should be able to use the tablet to set up an effi-cient, comfortable work environment. Questions to ask when thinking about tablet feature support include: • Does the interface provide the features appli
ca
tions need? Are any commonly available fea¬tures not supported? • Does the interface provide what users need? Is anything missing? • Are future extensions possible and fairly easy? • Are vendor-specific extensions possible? 3 DESIGN CONCEPTS The proposed interface design depends on several fundamental concepts. Devices and cursor types de-scribe physi
ca
l hardware configurations. The interface publishes read-only information through a single information interface. Appli
ca
tions interact with the interface by setting up tablet contexts and consuming event packets. Appli
ca
tions may assume interface and hardware control functions by be¬coming tablet managers. The interface provides explicit support for future extensions. 3.1 Device Conventions The interface provides access to one or more devices that produce pointing input. Devices sup¬ported by this interface have some common characteristics. The device must define an absolute or relative coordi-nate space in at least two dimensions for which it
ca
n return position
data
. The device must have a point-ing ap¬para¬tus or method (such as a stylus, or a finger touching a touch pad),
ca
lled the cursor, that de¬fines the current position. The cursor must be able to return at least one bit of additional state (via a but¬ton, touching a digitizing surface, etc.). Devices may have multiple cursor types that have different physi
ca
l configurations, or that have differ¬ent numbers of buttons, or return auxiliary information, such as pressure information. Cursor types may also describe different optional hardware configurations. The interface defines a standard orientation for reporting device native coordinates. When the user is viewing the device in its normal position, the coordinate origin will be at the lower left of the device. The coordinate system will be right-handed, that is, the positive x axis points from left to right, and the posi¬tive y axis points either upward or away from the user. The z axis, if supported, points either to¬ward the user or upward. For devices that lay flat on a table top, the x-y plane will be horizontal and the z axis will point upward. For devices that are oriented verti
ca
lly (for example, a touch screen on a conventional dis¬play), the x-y plane will be verti
ca
l, and the z axis will point toward the user. 3.2 Device Information Any program
ca
n get descriptive information about the tablet via the WTInfo function. The interface specifies certain information that must be available, but allows new implementations to add new types of information. The basic information includes device identifiers, version numbers, and overall
ca
¬p
abi
lities. The information items are organized by
ca
tegory and index numbers. The combination of a
ca
tegory and index specifies a single information
data
item, which may be a s
ca
lar value, string, structure, or array. Appli
ca
¬tions may retrieve single items or whole
ca
tegories at once. Some
ca
tegories are multiplexed. A single
ca
tegory code represents the first of a group of identi
ca
lly in-dexed
ca
tegories, one for each of a set of similar objects. Multiplexed
ca
tegories in¬clude those for devices and cur¬sor types. One constructs the
ca
tegory number by adding the defined
ca
te¬gory code to a zero-based device or cursor identifi
ca
tion number. The information is read-only for normal tablet appli
ca
tions. Some information items may change during the course of a
Window
s session; tablet appli
ca
tions receive messages notifying them of changes in tablet information. 3.3 Tablet Contexts Tablet contexts play a central role in the interface; they are the objects that appli
ca
tions use to specify their use of the tablet. Con¬texts include not only the physi
ca
l area of the tablet that the appli
ca
tion will use, but also information about the type, con¬tents, and delivery method for tablet events, as well as other information. Tablet contexts are somewhat analo¬gous to display contexts in the GDI interface model; they contain context information about a spe¬cific appli
ca
tion's use of the tablet. An appli
ca
tion
ca
n open more than one context, but most only need one. Appli
ca
tions
ca
n customize their contexts, or they
ca
n open a context using a default context specifi
ca
tion that is always available. The WTInfo function provides access to the default context specifi
ca
tion. Opening a context requires a
window
handle. The
window
handle becomes the context's owner and will receive any
window
messages associated with the context. Contexts are remotely similar to screen
window
s in that they
ca
n physi
ca
lly overlap. The tablet inter¬face uses a combination of context overlap order and context attributes to decide which context will process a given event. The topmost context in the overlap order whose input context encompasses the event, and whose event masks select the event, will process the event. (Note that the notion of overlap order is sepa-rate from the notion of the physi
ca
l z dimension.) Tablet managers (described below) provide a way to modify and overlap contexts. 3.4 Event Packets Tablet contexts generate and report tablet activity via event packets. Appli
ca
tions
ca
n control how they receive events, which events they receive, and what information they contain. Appli
ca
tions may receive events either by polling, or via
Window
s messages. • Polling: Any appli
ca
tion that has opened a context
ca
n
ca
ll the WTPacketsGet function to get the next state of the tablet for that context. •
Window
Messages: Appli
ca
tions that request messages will receive the WT_PACKET mes¬sage (described below), which indi
ca
tes that something happened in the context and provides a refer-ence to more information. Appli
ca
tions
ca
n control which events they receive by using event masks. For example, some appli¬
ca
¬tions may only need to know when a button is pressed, while others may need to receive an event every time the cursor moves. Tablet context event masks implement this type of control. Appli
ca
tions
ca
n control the contents of the event packets they receive. Some tablets
ca
n return
data
that many appli
ca
tions will not need, like button pressure and three dimensional position and orien¬tation in-formation. The context object provides a way of specifying which
data
items the appli¬
ca
tion needs. This allows the driver to improve the efficiency of packet delivery to appli
ca
tions that only need a few items per packet. Packets are stored in context-specific packet queues and retrieved by explicit function
ca
lls. The interface provides ways to peek at and get packets, to query the size and contents of the queue, and to re-size the queue. 3.5 Tablet Managers The interface provides functions for tablet management. An appli
ca
tion
ca
n become a tablet manager by opening a tablet manager handle. This handle allows the manager access to spe¬cial functions. These man-agement functions allow the appli
ca
tion to arrange, overlap, and modify tablet contexts. Man¬agers may also perform other functions, such as changing default values used by appli
ca
¬tions, chang¬ing ergo¬nomic, preference, and configuration settings, controlling tablet behavior with non-tablet aware appli
ca
¬tions, modi¬fy¬ing user dialogs, and recording and playing back tablet packets. Opening a manager handle re¬quires a
window
handle. The
window
becomes a manager
window
and receives
window
messages about interface and con¬text activity. 3.6 Extensions The interface allows implementations to define additional features
ca
lled extensions. Extensions
ca
n be made available to new appli
ca
tions without the need to modify ex¬isting appli
ca
tions. Extensions are sup-ported through the information
ca
tegories, through the flexible definition of packets, and through special context and manager functions. Designing an extension involves defining the meaning and behavior of the extension packet and/or prefer-ence
data
, filling in the information
ca
tegory, defining the extension's interface with the special functions, and possibly defining additional functions to support the extension. Each extension will be assigned a unique tag for identifi
ca
tion. Not all implementations will support all extensions. A multiplexed information
ca
tegory contains descriptive
data
about extensions. Note that appli
ca
¬tions must find their extensions by iterating through the
ca
tegories and matching tags. While tags are fixed across all implementations,
ca
tegory numbers may vary among implementations. 3.7 Persistent Binding of Interface Features (1.1) The interface provides access to many of its features using consecutive numeric indices whose value is not guaranteed from session to session. However, sufficient information is provided to create unique identifi¬ers for devices, cursors, and interface extensions. Devices should be uniquely identified by the contents of their name strings. If multiple identi
ca
l devices are present, implementation providers should provide unique, persistent id strings to the extent possible. Identi
ca
l devices that return unique serial numbers are ideal. If supported by the hardware, cursors also may have a physi
ca
l cursor id that uniquely identifies the cursor in a persistent and stable manner. Interface extensions are uniquely identified by their tag. 4 INTERFACE IMPLEMENTATIONS Implementations of this interface usually support one specific device, a class of similar devices, or a com-mon combination of devices. The following sections discuss guidelines for implementations. 4.1 File and Module Conventions For 16-bit implementations, the interface functions, and any additional vendor- or device-specific func-tions, reside in a dynamic link library with the file name "WINTAB.DLL" and module name "WINTAB"; 32-bit implementations use the file name "WINTAB32.DLL" and module name "WINTAB32." Any other file or module con¬ventions are implementation specific. Implementations may include other library mod-ules or
data
files as necessary. Installation processes are likewise implementa¬tion-specific. Wintab programs written in the C language require two header files. WINTAB.H contains definitions of all of the functions, constants, and fixed
data
types. PKTDEF.H contains a parameterized definition of the PACKET
data
structure, that
ca
n be tailored to fit the appli
ca
tion. The Wintab Programmer's Kit con¬tains these and other files necessary for Wintab programming, plus several example programs with C-lan¬guage source files. The Wintab Programmer's Kit is available from the author. 4.2 Feature Support Options Some features of the interface are optional and may be left out by some implementations. Support of defined
data
items other than x, y, and buttons is optional. Many devices only report x, y, and button information. Support of system-cursor contexts is optional. This option relieves implementations of replacing the sys¬tem mouse driver in
Window
s versions before 3.1. Support of Pen
Window
s contexts is optional. Not all systems will have the Pen
Window
s hardware and software necessary. Support of external tablet manager appli
ca
tions is optional, and the number of manager handles is imple-mentation-dependent. However, the manager functions should be present in all implementa¬tions, return¬ing appropriate failure codes if not fully implemented. An implementation may provide context- and hardware-management support internally only, if desired. On the other hand, providing the external man-ager interface may relieve the implementation of a considerable amount of user in¬terface code, and make improvements to the manager interface easier to implement and distribute later. Support of extension
data
items is optional. Most extensions will be geared to unusual hardware features. 5 FUNCTION REFERENCE All tablet function names have the prefix "WT" and have attributes equivalent to WINAPI. Appli
ca
¬tions gain access to the tablet interface functions through a dynamic-link library with standard file and module names, as defined in the previous section. Appli
ca
tions may link to the functions by using the
Window
s functions LoadLibrary, FreeLibrary, and GetPro
cA
ddress, or use an import library. Specific to 32-bit Wintab: The functions WTInfo, WTOpen, WTGet, and WTSet have both ANSI and Unicode versions, using the same ANSI/Unicode porting conventions used in the Win32 API. Five non-portable functions, WTQueuePackets, WTMgrCsrPressureBtnMarks, WTMgrConfigReplace, WTMgrPacketHook, and WTMgrPacketHookDefProc are replaced by new portable functions WTQueuePacketsEx, WTMgrCsrPressureBtnMarksEx, WTMgrConfigReplaceEx, WTMgrPack-etHookEx, WTMgrPacketUnhook, and WTMgrPacketHookNext. WTMgrConfigReplaceEx and WTMgrPacketHookEx have both ANSI and Unicode versions. Table 5.1. Ordinal Function Numbers for Dynamic Linking Ordinal numbers for dynamic linking are defined in the table below. Where two ordinal entries appear, the first entry identifies the 16-bit and 32-bit ANSI versions of the function. The second entry identifies the 32-bit Unicode version. Function Name Ordinal Function Name Ordinal WTInfo 20, 1020 WTMgrOpen 100 WTOpen 21, 1021 WTMgrClose 101 WTClose 22 WTMgrContextEnum 120 WTPacketsGet 23 WTMgrContextOwner 121 WTPacket 24 WTMgrDefContext 122 WTEnable 40 WTMgrDefContextEx (1.1) 206 WTOverlap 41 WTMgrDeviceConfig 140 WTConfig 60 WTMgrConfigReplace 141 WTGet 61, 1061 WTMgrConfigReplaceEx 202, 1202 WTSet 62, 1062 WTMgrPacketHook 160 WTExtGet 63 WTMgrPacketHookEx 203, 1203 WTExtSet 64 WTMgrPacketUnhook 204 WTSave 65 WTMgrPacketHookDefProc 161 WTRestore 66 WTMgrPacketHookNext 205 WTPacketsPeek 80 WTMgrExt 180 WT
Data
Get 81 WTMgrCsrEnable 181 WT
Data
Peek 82 WTMgrCsrButtonMap 182 WTQueuePackets 83 WTMgrCsrPressureBtnMarks 183 WTQueuePacketsEx 200 WTMgrCsrPressureBtnMarksEx 201 WTQueueSizeGet 84 WTMgrCsrPressureResponse 184 WTQueueSizeSet 85 WTMgrCsrExt 185 5.1 Basic Functions The functions in the following section will be used by most tablet-aware appli
ca
tions. They include getting interface and device information, opening and closing contexts, and retrieving packets by polling or via
Window
s messages. 5.1.1 WTInfo Syntax UINT WTInfo(w
Ca
tegory, nIndex, lpOutput) This function returns global information about the interface in an appli
ca
tion-sup-plied buffer. Different types of information are specified by different index argu-ments. Appli
ca
tions use this function to receive information about tablet coordi-nates, physi
ca
l dimensions,
ca
p
abi
lities, and cursor types. Parameter Type/Description w
Ca
tegory UINT Identifies the
ca
tegory from which information is being re-quested. nIndex UINT Identifies which information is being requested from within the
ca
tegory. lpOutput LPVOID Points to a buffer to hold the requested information. Return Value The return value specifies the size of the returned information in bytes. If the infor-mation is not supported, the function returns zero. If a tablet is not physi¬
ca
lly pres-ent, this function always returns zero. Comments Several important
ca
tegories of information are available through this function. First, the function provides identifi
ca
tion information, including specifi
ca
tion and software version numbers, and tablet vendor and model information. Sec¬ond, the function provides general
ca
p
abi
lity
information, including dimensions, resolutions, optional features, and cursor types. Third, the function provides
ca
tegories that give defaults for all tablet context attributes. Finally, the func¬tion may provide any other implementation- or vendor-specific information
ca
t¬egories necessary. The information returned by this function is subject to change during a Win¬dows session. Appli
ca
tions
ca
nnot change the information returned here, but tablet man-ager appli
ca
tions or hardware changes or errors
ca
n. Appli
ca
tions
ca
n respond to information changes by fielding the WT_INFOCHANGE message. The parameters of the message indi
ca
te which information has changed. If the w
Ca
tegory argument is zero, the function copies no
data
to the output buffer, but returns the size in bytes of the buffer necessary to hold the largest complete
ca
tegory. If the nIndex argument is zero, the function returns all of the information entries in the
ca
tegory in a single
data
structure. If the lpOutput argument is NULL, the function just returns the required buffer size. See Also
Ca
tegory and index definitions in tables 7.3 through 7.9, and the WT_INFOCHANGE message in section 6.3.1. 5.1.2 WTOpen Syntax HCTX WTOpen(hWnd, lpLogCtx, fEnable) This function establishes an active context on the tablet. On successful comple¬tion of this function, the appli
ca
tion may begin receiving tablet events via mes¬sages (if they were requested), and may use the handle returned to poll the con¬text, or to per-form other context-related functions. Parameter Type/Description hWnd HWND Identifies the
window
that owns the tablet context, and receives messages from the context. lpLogCtx LPLOGCONTEXT Points to an appli
ca
tion-provided LOGCONTEXT
data
structure describing the context to be opened. fEnable BOOL Specifies whether the new context will immediately begin processing input
data
. Return Value The return value identifies the new context. It is NULL if the context is not opened. Comments Opening a new context allows the appli
ca
tion to receive tablet input or creates a context that controls the system cursor or Pen
Window
s pen. The owning
window
(and all manager
window
s) will immediately receive a WT_CTXOPEN message when the context has been opened. If the fEnable argument is zero, the context will be created, but will not process input. The context
ca
n be enabled using the WTEnable function. If tablet event messages were requested in the context specifi
ca
tion, the owning
window
will receive them. The appli
ca
tion
ca
n control the message numbers used the lcMsgBase field of the LOGCONTEXT structure. The
window
that owns the new context will receive context and information change messages even if event messages were not requested. It is not necessary to handle these in many
ca
ses, but some appli
ca
tions may wish to do so. The newly opened tablet context will be placed on the top of the context overlap or-der. Invalid or out-of-range attribute values in the logi
ca
l context structure will ei¬ther be validated, or
ca
use the open to fail, depending on the attributes involved. Upon a successful return from the function, the context specifi
ca
tion pointed to by lpLogCtx will contain the validated values. See Also The WTEnable function in section 5.2.1, the LOGCONTEXT
data
structure in section 7.3.1, and the context and infor¬mation change messages in sections 6.2 and 6.3. 5.1.3 WTClose Syntax BOOL WTClose(hCtx) This function closes and destroys the tablet context object. Parameter Type/Description hCtx HCTX Identifies the context to be closed. Return Value The function returns a non-zero value if the context was valid and was destroyed. Otherwise, it returns zero. Comments After a
ca
ll to this function, the passed handle is no longer valid. The owning win¬dow (and all manager
window
s) will receive a WT_CTXCLOSE message when the context has been closed. See Also The WTOpen function in section 5.1.2. 5.1.4 WTPacketsGet Syntax int WTPacketsGet(hCtx, cMaxPkts, lpPkts) This function copies the next cMaxPkts events from the packet queue of context hCtx to the passed lpPkts buffer and removes them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being returned. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. Return Value The return value is the number of packets copied in the buffer. Comments The exact structure of the returned packet is determined by the packet infor¬mation that was requested when the context was opened. The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. Appli
ca
tions may flush packets from the queue by
ca
lling this function with a NULL lpPkt argument. See Also The WTPacketsPeek function in section 5.4.1, and the descriptions of the LOGCONTEXT (section 7.3.1) and PACKET (section 7.4.1)
data
structures. 5.1.5 WTPacket Syntax BOOL WTPacket(hCtx, wSerial, lpPkt) This function fills in the passed lpPkt buffer with the context event packet having the specified serial number. The returned packet and any older packets are removed from the context's internal queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being returned. wSerial UINT Serial number of the tablet event to return. lpPkt LPVOID Points to a buffer to receive the event packet. Return Value The return value is non-zero if the specified packet was found and returned. It is zero if the specified packet was not found in the queue. Comments The exact structure of the returned packet is determined by the packet infor¬mation that was requested when the context was opened. The buffer pointed to by lpPkts must be at least sizeof(PACKET) bytes long to pre-vent overflow. Appli
ca
tions may flush packets from the queue by
ca
lling this function with a NULL lpPkts argument. See Also The descriptions of the LOGCONTEXT (section 7.3.1) and PACKET (section 7.4.1)
data
structures. 5.2 Visibi
lity
Functions The functions in this section allow appli
ca
tions to control contexts' visibi
lity
, whether or not they are pro-cessing input, and their overlap order. 5.2.1 WTEnable Syntax BOOL WTEnable(hCtx, fEnable) This function enables or disables a tablet context, temporarily turning on or off the processing of packets. Parameter Type/Description hCtx HCTX Identifies the context to be enabled or disabled. fEnable BOOL Specifies enabling if non-zero, disabling if zero. Return Value The function returns a non-zero value if the enable or disable request was satis¬fied, zero otherwise. Comments
Ca
lls to this function to enable an already enabled context, or to disable an al¬ready disabled context will return a non-zero value, but otherwise do nothing. The context’s packet queue is flushed on disable. Appli
ca
tions
ca
n determine whether a context is currently enabled by using the WTGet function and examining the lcStatus field of the LOGCONTEXT struc¬ture. See Also The WTGet function in section 5.3.2, and the LOGCONTEXT structure in sec¬tion 7.3.1. 5.2.2 WTOverlap Syntax BOOL WTOverlap(hCtx, fToTop) This function sends a tablet context to the top or bottom of the order of over¬lapping tablet contexts. Parameter Type/Description hCtx HCTX Identifies the context to move within the overlap order. fToTop BOOL Specifies sending the context to the top of the overlap or-der if non-zero, or to the bottom if zero. Return Value The function returns non-zero if successful, zero otherwise. Comments Tablet contexts' input areas are allowed to overlap. The tablet interface main¬tains an overlap order that helps determine which context will process a given event. The topmost context in the overlap order whose input context encom¬passes the event, and whose event masks select the event will process the event. This function is useful for getting access to input events when the appli
ca
tion's con-text is overlapped by other contexts. The function will fail only if the context argument is invalid. 5.3 Context Editing Functions This group of functions allows appli
ca
tions to edit, save, and restore contexts. 5.3.1 WTConfig Syntax BOOL WTConfig(hCtx, hWnd) This function prompts the user for changes to the passed context via a dialog box. Parameter Type/Description hCtx HCTX Identifies the context that the user will modify via the dialog box. hWnd HWND Identifies the
window
that will be the parent
window
of the dialog box. Return Value The function returns a non-zero value if the tablet context was changed, zero oth-erwise. Comments Tablet appli
ca
tions
ca
n use this function to let the user choose context attributes that the appli
ca
tion doesn't need to control. Appli
ca
tions
ca
n control the editing of con¬text attributes via the lcLocks logi
ca
l context structure member. Appli
ca
tions should consider providing access to this function through a menu item or command. See Also The LOGCONTEXT structure in section 7.3.1 and the context lock values in table 7.13. 5.3.2 WTGet Syntax BOOL WTGet(hCtx, lpLogCtx) This function fills the passed structure with the current context attributes for the passed handle. Parameter Type/Description hCtx HCTX Identifies the context whose attributes are to be copied. lpLogCtx LPLOGCONTEXT Points to a LOGCONTEXT
data
structure to which the context attributes are to be copied. Return Value The function returns a non-zero value if the
data
is retrieved successfully. Oth¬er¬wise, it returns zero. See Also The LOGCONTEXT structure in section 7.3.1. 5.3.3 WTSet (1.1 modified) Syntax BOOL WTSet(hCtx, lpLogCtx) This function allows some of the context's attributes to be changed on the fly. Parameter Type/Description hCtx HCTX Identifies the context whose attributes are being changed. lpLogCtx LPLOGCONTEXT Points to a LOGCONTEXT
data
structure containing the new context attributes. Return Value The function returns a non-zero value if the context was changed to match the passed context specifi
ca
tion; it returns zero if any of the requested changes could not be made. Comments If this function is
ca
lled by the task or process that owns the context, any context attribute may be changed. Otherwise, the function
ca
n change attributes that do not affect the format or meaning of the context's event packets and that were not speci-fied as locked when the context was opened. Context lock values
ca
n only be changed by the context’s owner. 1.1: If the hCtx argument is a default context handle returned from WTMgrDef-Context or WTMgrDefContextEx, and the lpLogCtx argument is WTP_LPDEFAULT, the default context will be reset to its initial factory default values. See Also The LOGCONTEXT structure in section 7.3.1 and the context lock values in table 7.13. 5.3.4 WTExtGet Syntax BOOL WTExtGet(hCtx, wExt, lp
Data
) This function retrieves any context-specific
data
for an extension. Parameter Type/Description hCtx HCTX Identifies the context whose extension attributes are being retrieved. wExt UINT Identifies the extension tag for which context-specific
data
is being retrieved. lp
Data
LPVOID Points to a buffer to hold the retrieved
data
. Return Value The function returns a non-zero value if the
data
is retrieved successfully. Oth¬er¬wise, it returns zero. See Also The extension definitions in Appendix B. 5.3.5 WTExtSet Syntax BOOL WTExtSet(hCtx, wExt, lp
Data
) This function sets any context-specific
data
for an extension. Parameter Type/Description hCtx HCTX Identifies the context whose extension attributes are being modified. wExt UINT Identifies the extension tag for which context-specific
data
is being modified. lp
Data
LPVOID Points to the new
data
. Return Value The function returns a non-zero value if the
data
is modified successfully. Oth¬er¬wise, it returns zero. Comments Extensions may forbid their context-specific
data
to be changed during the life¬time of a context. For such extensions,
ca
lls to this function would always fail. Extensions may also limit context
data
editing to the task of the owning
window
, as with the context locks. See Also The extension definitions in Appendix B, the LOGCONTEXT
data
structure in section 7.3.1 and the context locking values in table 7.13. 5.3.6 WTSave Syntax BOOL WTSave(hCtx, lpSaveInfo) This function fills the passed buffer with binary save information that
ca
n be used to restore the equivalent context in a subsequent
Window
s session. Parameter Type/Description hCtx HCTX Identifies the context that is being saved. lpSaveInfo LPVOID Points to a buffer to contain the save information. Return Value The function returns non-zero if the save information is successfully retrieved. Oth-erwise, it returns zero. Comments The size of the save information buffer
ca
n be determined by
ca
lling the WTInfo function with
ca
tegory WTI_INTERFACE, index IFC_CTXSAVESIZE. The save information is returned in a private binary
data
format. Appli
ca
tions should store the information unmodified and recreate the context by passing the save information to the WTRestore function. Using WTSave and WTRestore allows appli
ca
tions to easily save and restore ex-tension
data
bound to contexts. See Also The WTRestore function in section 5.3.7. 5.3.7 WTRestore Syntax HCTX WTRestore(hWnd, lpSaveInfo, fEnable) This function creates a tablet context from save information returned from the WTSave function. Parameter Type/Description hWnd HWND Identifies the
window
that owns the tablet context, and receives messages from the context. lpSaveInfo LPVOID Points to a buffer containing save information. fEnable BOOL Specifies whether the new context will immediately begin processing input
data
. Return Value The function returns a valid context handle if successful. If a context equivalent to the save information could not be created, the function returns NULL. Comments The save information is in a private binary
data
format. Appli
ca
tions should only pass save information retrieved by the WTSave function. This function is much like WTOpen, except that it uses save in¬formation for input instead of a logi
ca
l context. In particular, it will generate a WT_CTXOPEN mes¬sage for the new context. See Also The WTOpen function in section 5.1.2, the WTSave function in section 5.3.6, and the WT_CTXOPEN message in section 6.2.1. 5.4 Advanced Packet and Queue Functions These functions provide advanced packet retrieval and queue manipulation. The packet retrieval functions require the appli
ca
tion to provide a packet output buffer. To prevent overflow, the buffer must be large enough to hold the requested number of packets from the specified context. It is up to the
ca
ller to deter¬mine the packet size (by interrogating the context, if necessary), and to allo
ca
te a large enough buffer. Ap¬pli
ca
tions may flush packets from the queue by passing a NULL buffer pointer. 5.4.1 WTPacketsPeek Syntax int WTPacketsPeek(hCtx, cMaxPkts, lpPkts) This function copies the next cMaxPkts events from the packet queue of context hCtx to the passed lpPkts buffer without removing them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being read. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. Return Value The return value is the number of packets copied in the buffer. Comments The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. See Also the WTPacketsGet function in section 5.1.4. 5.4.2 WT
Data
Get Syntax int WT
Data
Get(hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts) This function copies all packets with serial numbers between wBegin and wEnd in-clusive from the context's queue to the passed buffer and removes them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being returned. wBegin UINT Serial number of the oldest tablet event to return. wEnd UINT Serial number of the newest tablet event to return. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. lpNPkts LPINT Points to an integer to receive the number of packets ac-tually copied. Return Value The return value is the total number of packets found in the queue between wBegin and wEnd. Comments The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. See Also The WT
Data
Peek function in section 5.4.3, and the WTQueuePacketsEx function in section 5.4.5. 5.4.3 WT
Data
Peek Syntax int WT
Data
Peek(hCtx, wBegin, wEnd, cMaxPkts, lpPkts, lpNPkts) This function copies all packets with serial numbers between wBegin and wEnd in-clusive, from the context's queue to the passed buffer without removing them from the queue. Parameter Type/Description hCtx HCTX Identifies the context whose packets are being read. wBegin UINT Serial number of the oldest tablet event to return. wEnd UINT Serial number of the newest tablet event to return. cMaxPkts int Specifies the maximum number of packets to return. lpPkts LPVOID Points to a buffer to receive the event packets. lpNPkts LPINT Points to an integer to receive the number of packets ac-tually copied. Return Value The return value is the total number of packets found in the queue between wBegin and wEnd. Comments The buffer pointed to by lpPkts must be at least cMaxPkts * sizeof(PACKET) bytes long to prevent overflow. See Also The WT
Data
Get function in section 5.4.2, and the WTQueuePacketsEx function in section 5.4.5. 5.4.4 WTQueuePackets (16-bit only) Syntax DWORD WTQueuePackets(hCtx) This function returns the serial numbers of the oldest and newest packets cur¬rently in the queue. Parameter Type/Description hCtx HCTX Identifies the context whose queue is being queried. Return Value The high word of the return value contains the newest packet's serial number; the low word contains the oldest. Comments This function is non-portable and is superseded by WTQueuePacketsEx. See Also The WTQueuePacketsEx function in section 5.4.5. 5.4.5 WTQueuePacketsEx Syntax BOOL WTQueuePacketsEx(hCtx, lpOld, lpNew) This function returns the serial numbers of the oldest and newest packets cur¬rently in the queue. Parameter Type/Description hCtx HCTX Identifies the context whose queue is being queried. lpOld UINT FAR * Points to an unsigned integer to receive the oldest packet's serial number. lpNew UINT FAR * Points to an unsigned integer to receive the newest packet's serial number. Return Value The function returns non-zero if successful, zero otherwise. 5.4.6 WTQueueSizeGet Syntax int WTQueueSizeGet(hCtx) This function returns the number of packets the context's queue
ca
n hold. Parameter Type/Description hCtx HCTX Identifies the context whose queue size is being re¬turned. Return Value The return value is the number of packet the queue
ca
n hold. See Also The WTQueueSizeSet function in section 5.4.7. 5.4.7 WTQueueSizeSet Syntax BOOL WTQueueSizeSet(hCtx, nPkts) This function attempts to change the context's queue size to the value specified in nPkts. Parameter Type/Description hCtx HCTX Identifies the context whose queue size is being set. nPkts int Specifies the requested queue size. Return Value The return value is non-zero if the queue size was successfully changed. Other¬wise, it is zero. Comments If the return value is zero, the context has no queue be
ca
use the function deletes the original queue before attempting to create a new one. The appli
ca
tion must continue
ca
lling the function with a smaller queue size until the function returns a non-zero value. See Also The WTQueueSizeGet function in section 5.4.6. 5.5 Manager Handle Functions The functions described in this and subsequent sections are for use by tablet manager appli
ca
tions. The functions of this section create and destroy manager handles. These handles allow the interface code to limit the degree of simultaneous access to the powerful manager functions. Also, opening a manager handle lets the appli
ca
tion receive messages about tablet interface activity. 5.5.1 WTMgrOpen Syntax HMGR WTMgrOpen(hWnd, wMsgBase) This function opens a tablet manager handle for use by tablet manager and con¬figu-ration appli
ca
tions. This handle is required to
ca
ll the tablet management func¬tions. Parameter Type/Description hWnd HWND Identifies the
window
which owns the manager handle. wMsgBase UINT Specifies the message base number to use when notifying the manager
window
. Return Value The function returns a manager handle if successful, otherwise it returns NULL. Comments While the manager handle is open, the manager
window
will receive context mes-sages from all tablet contexts. Manager
window
s also receive information change messages. The number of manager handles available is interface implementation-dependent, and
ca
n be determined by
ca
lling the WTInfo function with
ca
tegory WTI_INTERFACE and index IFC_NMANAGERS. See Also The WTInfo function in section 5.1.1, the WTMgrClose function in section 5.5.2, the description of message base numbers in section 6 and the context and in¬for¬ma-tion change messages in sections 6.2 and 6.3. 5.5.2 WTMgrClose Syntax BOOL WTMgrClose(hMgr) This function closes a tablet manager handle. After this function returns, the passed manager handle is no longer valid. Parameter Type/Description hMgr HMGR Identifies the manager handle to close. Return Value The function returns non-zero if the handle was valid; otherwise, it returns zero. 5.6 Manager Context Functions These functions provide access to all open contexts and their owners, and allow changing context de¬faults. Only tablet managers are allowed to manipulate tablet contexts belonging to other appli
ca
¬tions. 5.6.1 WTMgrContextEnum Syntax BOOL WTMgrContextEnum(hMgr, lpEnumFunc, lParam) This function enumerates all tablet context handles by passing the handle of each context, in turn, to the
ca
llback function pointed to by the lpEnumFunc pa¬rameter. The enumeration terminates when the
ca
llback function returns zero. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. lpEnumFunc WTENUMPROC Is the procedure-instance address of the
ca
ll-back function. See the following "Comments" section for details. lParam LPARAM Specifies the value to be passed to the
ca
llback func-tion for the appli
ca
tion's use. Return Value The return value specifies the outcome of the function. It is non-zero if all con¬texts have been enumerated. Otherwise, it is zero. Comments The address passed as the lpEnumFunc parameter must be created by using the MakeProcInstance function. The
ca
llback function must have attributes equivalent to WINAPI. The
ca
llback function must have the following form:
Ca
llback BOOL WINAPI EnumFunc(hCtx, lParam) HCTX hCtx; LPARAM lParam; EnumFunc is a place holder for the appli
ca
tion-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the appli
ca
-tion's module-definition file. Parameter Description hCtx Identifies the context. lParam Specifies the 32-bit argument of the WTMgrContextEnum func-tion. Return Value The function must return a non-zero value to continue enumeration, or zero to stop it. 5.6.2 WTMgrContextOwner Syntax HWND WTMgrContextOwner(hMgr, hCtx) This function returns the handle of the
window
that owns a tablet context. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. hCtx HCTX Identifies the context whose owner is to be returned. Return Value The function returns the context owner's
window
handle if the passed arguments are valid. Otherwise, it returns NULL. Comments This function allows the tablet manager to coordinate tablet context manage¬ment with the states of the context-owning
window
s. 5.6.3 WTMgrDefContext Syntax HCTX WTMgrDefContext(hMgr, fSystem) This function retrieves a context handle that allows setting values for the current default digit¬izing or system context. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. fSystem BOOL Specifies retrieval of the default system context if non-zero, or the default digitizing context if zero. Return Value The return value is the context handle for the specified default context, or NULL if the arguments were invalid. Comments The default digitizing context is the context whose attributes are returned by the WTInfo function WTI_DEFCONTEXT
ca
tegory. The default system context is the context whose attributes are returned by the WTInfo function WTI_DEFSYSCTX
ca
tegory. Editing operations on the retrieved handles will fail if the new default contexts do not meet certain requirements. The digitizing context must include at least buttons, x, and y in its packet
data
, and must return absolute coordinates. 1.1: Editing the current default digitizing context will also
update
the device-spe¬cific default context for the device listed in the lcDevice field of the default con¬text’s LOGCONTEXT structure. See Also The WTInfo function in section 5.1.1 the WTMgrDefContextEx function in section 5.6.4, and the
ca
tegory and index definitions in tables 7.3 through 7.9. 5.6.4 WTMgrDefContextEx (1.1) Syntax HCTX WTMgrDefContextEx(hMgr, wDevice, fSystem) This function retrieves a context handle that allows setting values for the default digit¬izing or system context for a specified device. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. wDevice UINT Specifies the device for which a default context handle will be returned. fSystem BOOL Specifies retrieval of the default system context if non-zero, or the default digitizing context if zero. Return Value The return value is the context handle for the specified default context, or NULL if the arguments were invalid. Comments The default digitizing contexts are contexts whose attributes are returned by the WTInfo function WTI_DDCTXS multiplexed
ca
tegory. The default system con-texts are contexts whose attributes are returned by the WTInfo function WTI_DSCTXS multiplexed
ca
tegory. Editing operations on the retrieved handles will fail if the new default contexts do not meet certain requirements. The digitizing context must include at least buttons, x, and y in its packet
data
, and must return absolute coordinates. See Also The WTInfo function in section 5.1.1, and the
ca
tegory and index definitions in tables 7.3 through 7.9. 5.7 Manager Configuration Functions These functions allow manager appli
ca
tions to replace the default context configuration dialog and to display a configuration dialog for each hardware device. 5.7.1 WTMgrDeviceConfig Syntax UINT WTMgrDeviceConfig(hMgr, wDevice, hWnd) This function displays a custom modal tablet-hardware configuration dialog box, if one is supported. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. wDevice UINT Identifies the device that the user will configure via the dialog box. hWnd HWND Identifies the
window
that will be the parent
window
of the dialog box. If this argument is NULL, the function will return non-zero if the dialog is supported, or zero otherwise. Return Value The return value is zero if the dialog box is not supported. Otherwise, it is one of the following non-zero values. Value Meaning WTDC_
CA
NCEL The user
ca
nceled the dialog without making any changes. WTDC_OK The user made and confirmed changes. WTDC_RESTART The user made and confirmed changes that require a sys-tem restart in order to take effect. The
ca
lling program should query the user to determine whether to restart. Restart
Window
s using the function
ca
ll ExitWin-dows(EW_RESTART
WINDOW
S, 0);. 5.7.2 WTMgrConfigReplace (16-bit only) Syntax BOOL WTMgrConfigReplace(hMgr, fInstall, lpConfigProc) This function allows a manager appli
ca
tion to replace the default behavior of the WTConfig function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. fInstall BOOL Specifies installation of a replacement function if non-zero, or removal of the current replacement if zero. lpConfigProc WTCONFIGPROC Is the procedure-instance address of the new configuration function. This argument is ignored during a re¬moval request. Return Value The function return non-zero if the installation or removal request succeeded. Oth-erwise, it returns zero. Comments This function is non-portable and is superseded by WTMgrConfigReplaceEx. See Also The WTConfig function in section 5.3.1, and for a description of the configuration
ca
llback function, see the WTMgrConfigReplaceEx function in section 5.7.3. 5.7.3 WTMgrConfigReplaceEx Syntax BOOL WTMgrConfigReplaceEx(hMgr, fInstall, lpszModule, lpszCfgProc) This function allows a manager appli
ca
tion to replace the default behavior of the WTConfig function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. fInstall BOOL Specifies installation of a replacement function if non-zero, or removal of the current replacement if zero. lpszModule LPCTSTR Points to a null-terminated string that names a DLL module containing the new configuration function. This argument is ignored during a re¬moval request lpszCfgProc LPCSTR Points to a null-terminated string that names the new configuration function. This argument is ignored during a re¬moval request. Return Value The function return non-zero if the installation or removal request succeeded. Oth-erwise, it returns zero. Comments The configuration
ca
llback function must have attributes equivalent to WINAPI. Only one
ca
llback function may be installed at a time. The manager handle passed with the removal request must match the handle passed with the corre¬sponding in-stallation request. Tablet managers that install a replacement context configuration function must re-move it before exiting.
Ca
llback BOOL WINAPI ConfigProc(hWnd, hCtx) HWND hWnd; HCTX hCtx; ConfigProc is a place holder for the appli
ca
tion-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the appli
ca
-tion's module-definition file. Parameter Description hWnd Identifies the
window
that will be the parent
window
of the dialog box. hCtx Identifies the context that the user will modify via the dialog box. Return Value The function returns a non-zero value if the tablet context was changed, zero oth-erwise. Comments The configuration function and resulting dialog box should analyze the lcLocks context structure member, and only allow editing of unlocked context attributes. See Also The WTConfig function in section 5.3.1. 5.8 Manager Packet Hook Functions These functions allow manager appli
ca
tions to monitor, record, and play back sequences of tablet packets. 5.8.1 WTMgrPacketHook (16-bit only) Syntax WTHOOKPROC WTMgrPacketHook(hMgr, fInstall, nType, lpFunc) This function installs or removes a packet hook function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. fInstall BOOL Specifies installation of a hook function if non-zero, or removal of the specified hook if zero. nType int Specifies the packet hook to be installed. It
ca
n be any one of the following values: Value Meaning WTH_PLAYBACK Installs a packet playback hook. WTH_RECORD Installs a packet record hook. lpFunc WTHOOKPROC Is the procedure-instance address of the hook function to be installed. See the "Comments" section under WTMgrPacketHookEx for details. Return Value When installing a hook, the return value points to the procedure-instance ad¬dress of the previously installed hook (if any). It is NULL if there is no previous hook; it is negative one if the hook
ca
nnot be installed. The appli
ca
tion or library that
ca
lls this func¬tion should save this return value in the library's
data
segment. The fourth argument of the WTPacketHookDefProc function points to the lo
ca
tion in memory where the library saves this return value. When removing a hook, the return value is the passed lpFunc if successful, NULL otherwise. Comments This function is non-portable and is superseded by WTMgrPacketHookEx and WTMgrPacketUnhook. See Also the WTMgrPacketHookEx function in section 5.8.2, and the WTMgrPacketUn-hook function in section 5.8.3. 5.8.2 WTMgrPacketHookEx Syntax HWTHOOK WTMgrPacketHookEx(hMgr, nType, lpszModule, lpszHookProc) This function installs a packet hook function. Parameter Type/Description hMgr HMGR Is the valid manager handle that identifies the
ca
ller as a manager appli
ca
tion. nType int Specifies the packet hook to be installed. It
ca
n be any one of the following values: Value Meaning WTH_PLAYBACK Installs a packet playback hook. WTH_RECORD Installs a packet record hook. lpszModule LPCTSTR Points to a null-terminated string that names a DLL module containing the new hook function. See the following "Comments" section for details. lpszHookProc LPCSTR Points to a null-terminated string that names the new hook function. See the following "Comments" section for details. Return Value If the function succeeds, the return value is the handle of the installed hook func-tion. Otherwise, the return value is NULL. Comments Packet hooks are a shared resource. Installing a hook affects all appli
ca
tions using the interface. All Wintab hook functions must be exported functions residing in a DLL module. The following section describes how to support the individual hook functions. WTH_PLAYBACK Wintab
ca
lls the WTH_PLAYBACK hook whenever a request for an event packet is made. The function is intended to be used to supply a previously recorded event packet for a compatible context. The hook function must have attributes equivalent to WINAPI. The filter function must have the following form: Hook Function LRESULT WINAPI HookFunc(nCode, wParam, lParam); int nCode; WPARAM wParam; LPARAM lParam; HookFunc is a place holder for the library-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the library's mod¬ule-definition file. Parameter Description nCode Specifies whether the hook function should process the mes¬sage or
ca
ll the WTMgrPacketHookDefProc (if installed by WTMgrPacketHook)or WTMgrPacketHookNext (if installed by WTMgrPacketHookEx) function. If the nCode parame¬ter is less than zero, the hook function should pass the message to the appropriate function without further process¬ing. wParam Specifies the context handle whose event is being requested. lParam Points to the packet being processed by the hook function. Comments The WTH_PLAYBACK function should copy an event packet to the buffer pointed to by the lParam pa¬rameter. The packet must have been previously recorded by us-ing the WTH_RECORD hook. It should not modify the packet. The return value should be the amount of time (in milliseconds) Wintab should wait before pro¬cess¬ing the mes¬sage. This time
ca
n be computed by
ca
lculation the difference between the time stamps of the current and previous packets. If the function returns zero, the message is processed immediately. Once it returns control to Wintab, the packet continues to be processed. If the nCode parameter is WTHC_SKIP, the hook func-tion should prepare to return the next recorded event message on its next
ca
ll. The packet pointed to by lParam will have the same structure as packets re¬trieved from the context normally. Wintab will validate the following packet items to en¬sure consistency: context handle, time stamp, and serial number. The remaining fields will be valid if the context used for playback is equivalent to the context from which the events were recorded. The WTH_PLAYBACK hook will not be
ca
lled to notify it of the display or re¬moval of system modal dialog boxes. It is expected that appli
ca
tions playing back packets will also be playing back
window
event messages using
Window
s' own hook functions. While the WTH_PLAYBACK function is in effect, Wintab ignores all hardware in-put. WTH_RECORD The interface
ca
lls the WTH_RECORD hook whenever it processes a packet from a context event queue. The hook
ca
n be used to record the packet for later playback. The hook function must have attributes equivalent to WINAPI. The hook function must have the following form: Hook Function LRESULT WINAPI HookFunc(nCode, wParam, lParam); int nCode; WPARAM wParam; LPARAM lParam; HookFunc is a place holder for the library-supplied function name. The actual name must be exported by including it in an EXPORTS statement in the library's mod¬ule-definition file. Parameter Description nCode Specifies whether the hook function should process the mes¬sage or
ca
ll the WTMgrPacketHookDefProc (if installed by WTMgrPacketHook)or WTMgrPacketHookNext (if installed by WTMgrPacketHookEx) function. If the nCode parame¬ter is less than zero, the hook function should pass the message to the appropriate function without further process¬ing. wParam Specifies the context handle whose event is being processed. lParam Points to the packet being processed by the hook function. Comments The WTH_RECORD function should save a copy of the packet for later play¬back. It should not modify the packet. Once it returns control to Wintab, the message con-tinues to be processed. The filter function does not require a return value. The packet pointed to by lParam will have the same structure as packets re¬trieved from the context normally. The WTH_RECORD hook will not be
ca
lled to notify it of the display or re¬moval of system modal dialog boxes. It is expected that appli
ca
tions recording packets will also be recording
window
event messages using
Window
s' own hook functions. 5.8.3 WTMgrPacketUnhook Syntax BOOL WTMgrPacketUnhook(hHook) This function removes a hook function installed by the WTMgrPacketHookEx function. Parameter Type/Description hHook HWTHOOK Identifies the hook function to be removed. Return Value The function returns a non-zero value if successful, zero otherwise. See Also The WTMgrPacketHookEx function in section 5.8.2, and the WTMgrPack-etHookNext function in section 5.8.5. 5.8.4 WTMgrPacketHookDefProc (16-bit only) Syntax LRESULT WTMgrPacketHookDefProc(nCode, wParam, lParam, lplpFunc) This function
ca
lls the next function in a chain of packet hook functions. A packet hook function is a function that processes packets before they are re¬trieved from a context's queue. When appli
ca
tions define more than one hook function by using the WTMgrPacketHook function, Wintab places func¬tions of the same type in a chain. Parameter Type/Description nCode int Specifies a code used by the hook function to determine how to process the message. wParam WPARAM Specifies the word parameter of the message that the hook function is processing. lParam LPARAM Specifies the long parameter of the message that the hook function is processing. lplpFunc WTHOOKPROC FAR * Points to a memory lo
ca
tion that con-tains the WTHOOKPROC returned by the WTMgrPacketHook function. Wintab changes the value at this lo
ca
tion after an appli-
ca
tion unhooks the hook using the WTMgrPacketHook function. Return Value The return value specifies a value that is directly related to the nCode parameter. Comments This function is non-portable and is superseded by the WTMgrPacketHookNext function. See Also The WTMgrPacketHookNext function in section 5.8.5. 5.8.5 WTMgrPacketHookNext Syntax LRESULT WTMgrPacketHookNext(hHook, nCode, wParam, lParam) This function passes the hook information to the next hook function in the current hook chain. Parameter Type/Description hHook HWTHOOK Identifies the current hook. nCode int Specifies the hook code passed to the current hook function. wParam WPARAM Specifies the wParam value
DevExpress VCL v2012 vol 1.6源码、例子、帮助-part2
=====注意:一共2个压缩分卷,这是第2个!===== DevExpress VCL v2012 vol 1.6 Delphi VCL. 包含所有源码、例子、帮助 支持Metro啦! What's New in DevExpress VCL 12.1.6 Release Notes The following sections list all minor and major changes in DevExpress VCL 12.1.6. Note that products, controls and libraries which aren't mentioned in the list below are included in the unified installer for compatibi
lity
, but have not been
update
d. New Features/Changes ExpressLayout Control S170028 - Documentation - Describe runtime object access
ca
p
abi
lities in the "On-Form Object Access" topic S170040 - Documentation -
Update
the "ExpressLayout Control: Resource Strings" topic with resource strings used in customization context menus ExpressTile Control S170009 - Add the
ca
p
abi
lity
to determine if a specific point corresponds to a tile control's title using HitTest information Resolved Issues VCL Subscription Q434991 -
Data
-aware container controls - Format settings are not applied to cells ExpressBars Suite Q440463 - Ribbon - TdxBarAppli
ca
tionMenu - Check marks displayed for TdxBarLargeButton items appear highly pixelated Q441061 - Ribbon - TdxRibbonBackstageView opened in a new Ribbon Form created in an appli
ca
tion remains visible on screen if this Ribbon Form is closed via its Close button Q425185 - Ribbon Form - Incorrect text color is applied to a maximized form's
ca
ption B219006 - TcxBarEditItem - LookupComboBox - An error occurs when moving focus from one lookup bar item to another ExpressDocking Library Q440931 - TdxDockPanel is not activated by clicking the panel's tab in TdxTabContainerDockSite ExpressLayout Control Q434679 - A layout group fires the OnTabChanging event twice if the event's handler
ca
lls Appli
ca
tion.ProcessMessages Q433283 - A layout group with a label layout item that is set to occupy the entire client area of its group has an incorrect width B218895 - Documentation - Incorrect topic navigation due to a corrupt HLP file (Delphi 7 only) ExpressPrinting System Q440760 - Export to PDF - The File Save dialog is not shown if the default file name for a report is too long B218629 - In the Page Number Format dialog, the "Start At" field value is incorrectly validated for character-based number formats B218627 - TBasedxReportLink descendants - Customized values of the TimeFormat, DateFormat and PageFormat properties are reset to their default values in some
ca
ses if default formats have been customized at the TdxComponentPrinter level Q440453 - TdxComponentPrinter - The Date And Time dialog
ca
nnot be re-opened after the last time format has been selected in the Available Time Formats list Q435027 - The Print Preview
window
freezes when invoked from a
window
lo
ca
ted in a DLL file B219022 - TreeList Report Link - Rich text formatting is missing when printing cxRichEdit columns ExpressQuantumGrid Suite Q404033 - An exception is thrown when the selection is modified within the View's OnSelectionChanged event handler Q430561 - Assigning a Table View column to a Layout View
data
item or
Ca
rd View row modifies the assignee's GroupIndex property Q434910 - Compilation errors occur after the View's Navigator.InfoPanel.OnClick event handler has been created at design time due to the missing cxNavigator unit in the 'uses' clause Q437880 -
Data
-aware Views - The "RecordIndex out of range" exception is thrown when removing a record if the View contains unbound columns Q433982 -
Data
-aware Views - The "RowIndex out of range" exception is thrown when updating the TClient
Data
Set bound to the View within a form's OnDestroy event handler using Empty
Data
Set, etc. B218884 - Layout View -
Ca
rd
ca
ptions and currently focused items are incorrectly painted in selected
ca
rds B218883 - Layout View - Cell content areas are hot-tracked regardless of the View's OptionsBehavior.ItemHotTrack property value B218885 - Layout View - The text color specified in the View's Styles.OnGetItemStyle event handler is not applied to
ca
rd layout items Q438267 - Server Mode - Clicking a Filter Row cell in a column containing Null values throws the "Could not convert variant of type (Null) into type (OleStr)" exception Q435475 - Tabular and Layout Views - The View does not synchronize edit value changes with the
data
controller in the OnEditChanged event handler if
Data
Controller.Options includes dcoImmediatePost, and a grid item's Properties.ImmediatePost property is set to True ExpressQuantumTreeList Suite Q434260 - TcxDBTreeList refreshes all
data
if a bound
data
set was edited via the TreeList control when the Options
Data
.SmartRefresh property is set to True Q435693 - TcxTreeList - An AV occurs when adding nodes in RAD Studio XE3 at design time ExpressScheduler Suite Q431232 - cxDateNavigator - The date navigator does not maintain the number of selected weeks always visible on screen when scrolling months backwards Q433746 - Day View - Resizing an event that lasts more than one day past 11:59pm increases the event's duration by one day if the ShowAllDayEventsInContentArea property is set to True ExpressSkins Library Q435604 - TdxBevel - Additional colors are not defined for the control in the Blueprint, DevExpressStyle, Seven, SevenClassic, VS2010, and Whiteprint skins Q436337 - The Skin Editor does not generate skin packages for RAD Studio XE3 ExpressSpreadSheet B218380 - The TcxSSViewInfo
Data
record fields in the cxSSViewInfo.hpp file generated by a C++Builder appli
ca
tion have an invalid alignment ExpressTile Control Q432087 - cxDateEdit controls are not displayed on a detail page when activating this page for the second and subsequent times in
Window
s XP B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ExpressVerti
ca
lGrid Suite Q439250 - Closing the Customization form does not disable the customization mode in error Common Libraries ExpressEditors Library Q431767 - TdxDBBreadcrumbEdit does not
update
its content after a new record is inserted into a
data
base table in XE2
Update
4 Q434043 - Background and text colors are not applied to a read-only editor if its Properties.ReadOnly property is set via RepositoryItem Q434045 - cxMemo - Scrollbars are not shown if the editor is the last object in a DFM file, the editor has no text, and its Properties.ScrollBars property is set to ssBoth at design time B218869 - dxBreadCrumbEdit - A node's DeleteChildren method does not
update
the node's HasChildren property Q437728 - dxBreadcrumbEdit - An AV occurs when clicking the Root in a node's drop-down
window
when the selected node's children are repopulated within an OnPathSelect event handler B213307 - ExpressEditors are erroneously painted by VCL styles, as if they are standard VCL editors Q436036 - Some editors dis
ca
rd changes to the edit value if these changes were made by pasting
data
from the clipboard, using the Backspace key, etc. Q433948 - TcxImage - Intersections with other transparent DevExpress editors may appear distorted Q440954 - TcxScrollBox - The Create method does not use the GetViewInfoClass method Q436691 - TcxShellBrowserDialog - Memory leaks when selecting a file or folder in the dialog and clicking the OK button Q432788 - TcxSplitter - In Delphi 2010 and later, changes to the AlignSplitter property erroneously
ca
use form resizing Q434498 - TdxShellBreadcrumbEdit - An AV occurs when selecting a file in a linked shell tree view B218303 - TdxShellBreadcrumbEdit - Files selected in a linked shell tree view are added as nodes (folders) to the breadcrumb editor ExpressLibrary Q432285 - TdxScreenTip - An AV occurs when displaying hints for ExpressQuantumGrid cells after ScreenTips have been shown by hint controllers lo
ca
ted on other forms
DevExpress VCL 2012 vol 1.6源码、例子、帮助-Part2
=====注意:一共2个压缩分卷,这是第2个!===== DevExpress VCL v2012 vol 1.6 Delphi VCL. 包含所有源码、例子、帮助 支持Metro啦! What's New in DevExpress VCL 12.1.6 Release Notes The following sections list all minor and major changes in DevExpress VCL 12.1.6. Note that products, controls and libraries which aren't mentioned in the list below are included in the unified installer for compatibi
lity
, but have not been
update
d. New Features/Changes ExpressLayout Control S170028 - Documentation - Describe runtime object access
ca
p
abi
lities in the "On-Form Object Access" topic S170040 - Documentation -
Update
the "ExpressLayout Control: Resource Strings" topic with resource strings used in customization context menus ExpressTile Control S170009 - Add the
ca
p
abi
lity
to determine if a specific point corresponds to a tile control's title using HitTest information Resolved Issues VCL Subscription Q434991 -
Data
-aware container controls - Format settings are not applied to cells ExpressBars Suite Q440463 - Ribbon - TdxBarAppli
ca
tionMenu - Check marks displayed for TdxBarLargeButton items appear highly pixelated Q441061 - Ribbon - TdxRibbonBackstageView opened in a new Ribbon Form created in an appli
ca
tion remains visible on screen if this Ribbon Form is closed via its Close button Q425185 - Ribbon Form - Incorrect text color is applied to a maximized form's
ca
ption B219006 - TcxBarEditItem - LookupComboBox - An error occurs when moving focus from one lookup bar item to another ExpressDocking Library Q440931 - TdxDockPanel is not activated by clicking the panel's tab in TdxTabContainerDockSite ExpressLayout Control Q434679 - A layout group fires the OnTabChanging event twice if the event's handler
ca
lls Appli
ca
tion.ProcessMessages Q433283 - A layout group with a label layout item that is set to occupy the entire client area of its group has an incorrect width B218895 - Documentation - Incorrect topic navigation due to a corrupt HLP file (Delphi 7 only) ExpressPrinting System Q440760 - Export to PDF - The File Save dialog is not shown if the default file name for a report is too long B218629 - In the Page Number Format dialog, the "Start At" field value is incorrectly validated for character-based number formats B218627 - TBasedxReportLink descendants - Customized values of the TimeFormat, DateFormat and PageFormat properties are reset to their default values in some
ca
ses if default formats have been customized at the TdxComponentPrinter level Q440453 - TdxComponentPrinter - The Date And Time dialog
ca
nnot be re-opened after the last time format has been selected in the Available Time Formats list Q435027 - The Print Preview
window
freezes when invoked from a
window
lo
ca
ted in a DLL file B219022 - TreeList Report Link - Rich text formatting is missing when printing cxRichEdit columns ExpressQuantumGrid Suite Q404033 - An exception is thrown when the selection is modified within the View's OnSelectionChanged event handler Q430561 - Assigning a Table View column to a Layout View
data
item or
Ca
rd View row modifies the assignee's GroupIndex property Q434910 - Compilation errors occur after the View's Navigator.InfoPanel.OnClick event handler has been created at design time due to the missing cxNavigator unit in the 'uses' clause Q437880 -
Data
-aware Views - The "RecordIndex out of range" exception is thrown when removing a record if the View contains unbound columns Q433982 -
Data
-aware Views - The "RowIndex out of range" exception is thrown when updating the TClient
Data
Set bound to the View within a form's OnDestroy event handler using Empty
Data
Set, etc. B218884 - Layout View -
Ca
rd
ca
ptions and currently focused items are incorrectly painted in selected
ca
rds B218883 - Layout View - Cell content areas are hot-tracked regardless of the View's OptionsBehavior.ItemHotTrack property value B218885 - Layout View - The text color specified in the View's Styles.OnGetItemStyle event handler is not applied to
ca
rd layout items Q438267 - Server Mode - Clicking a Filter Row cell in a column containing Null values throws the "Could not convert variant of type (Null) into type (OleStr)" exception Q435475 - Tabular and Layout Views - The View does not synchronize edit value changes with the
data
controller in the OnEditChanged event handler if
Data
Controller.Options includes dcoImmediatePost, and a grid item's Properties.ImmediatePost property is set to True ExpressQuantumTreeList Suite Q434260 - TcxDBTreeList refreshes all
data
if a bound
data
set was edited via the TreeList control when the Options
Data
.SmartRefresh property is set to True Q435693 - TcxTreeList - An AV occurs when adding nodes in RAD Studio XE3 at design time ExpressScheduler Suite Q431232 - cxDateNavigator - The date navigator does not maintain the number of selected weeks always visible on screen when scrolling months backwards Q433746 - Day View - Resizing an event that lasts more than one day past 11:59pm increases the event's duration by one day if the ShowAllDayEventsInContentArea property is set to True ExpressSkins Library Q435604 - TdxBevel - Additional colors are not defined for the control in the Blueprint, DevExpressStyle, Seven, SevenClassic, VS2010, and Whiteprint skins Q436337 - The Skin Editor does not generate skin packages for RAD Studio XE3 ExpressSpreadSheet B218380 - The TcxSSViewInfo
Data
record fields in the cxSSViewInfo.hpp file generated by a C++Builder appli
ca
tion have an invalid alignment ExpressTile Control Q432087 - cxDateEdit controls are not displayed on a detail page when activating this page for the second and subsequent times in
Window
s XP B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ExpressVerti
ca
lGrid Suite Q439250 - Closing the Customization form does not disable the customization mode in error Common Libraries ExpressEditors Library Q431767 - TdxDBBreadcrumbEdit does not
update
its content after a new record is inserted into a
data
base table in XE2
Update
4 Q434043 - Background and text colors are not applied to a read-only editor if its Properties.ReadOnly property is set via RepositoryItem Q434045 - cxMemo - Scrollbars are not shown if the editor is the last object in a DFM file, the editor has no text, and its Properties.ScrollBars property is set to ssBoth at design time B218869 - dxBreadCrumbEdit - A node's DeleteChildren method does not
update
the node's HasChildren property Q437728 - dxBreadcrumbEdit - An AV occurs when clicking the Root in a node's drop-down
window
when the selected node's children are repopulated within an OnPathSelect event handler B213307 - ExpressEditors are erroneously painted by VCL styles, as if they are standard VCL editors Q436036 - Some editors dis
ca
rd changes to the edit value if these changes were made by pasting
data
from the clipboard, using the Backspace key, etc. Q433948 - TcxImage - Intersections with other transparent DevExpress editors may appear distorted Q440954 - TcxScrollBox - The Create method does not use the GetViewInfoClass method Q436691 - TcxShellBrowserDialog - Memory leaks when selecting a file or folder in the dialog and clicking the OK button Q432788 - TcxSplitter - In Delphi 2010 and later, changes to the AlignSplitter property erroneously
ca
use form resizing Q434498 - TdxShellBreadcrumbEdit - An AV occurs when selecting a file in a linked shell tree view B218303 - TdxShellBreadcrumbEdit - Files selected in a linked shell tree view are added as nodes (folders) to the breadcrumb editor ExpressLibrary Q432285 - TdxScreenTip - An AV occurs when displaying hints for ExpressQuantumGrid cells after ScreenTips have been shown by hint controllers lo
ca
ted on other forms
PowerBuilder
1,108
社区成员
66,453
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章