1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276
|
//Les déclarations suivantes sont la traduction en WL du fichier LibSign.h
//Les commentaires précédent un déclaration représentent le code C
/****************/
/* ENUMERATIONS */
/****************/
//enum EventType
//{
//EventType_Pen = 1,
//EventType_Key = 2,
//EventType_Eraser = 3,
//EventType_Wheel = 4,
//EventType_ALL = 0xfe
//};
EEventType est une Enumération
{
EventType_Pen = 1
EventType_Key = 2
EventType_Eraser = 3
EventType_Wheel = 4
EventType_ALL = 0xfe
}
//enum PenStatus
//{
//PenStatus_Hover, //悬浮
//PenStatus_Down, //按下
//PenStatus_Move, //移动
//PenStatus_Up, //抬起
//PenStatus_Leave //离开
//};
EPenStatus est Enumération
{
PenStatus_Hover
PenStatus_Down
PenStatus_Move
PenStatus_Up
PenStatus_Leave
};
//enum KeyStatus
//{
//KeyStatus_Up, //按键抬起
//KeyStatus_Down //按键按下
//};
EKeyStatus est une Enumération
{
KeyStatus_Up
KeyStatus_Down
}
//enum ButtonStatus
//{
//ButtonStatus_Up, //笔上按键抬起
//ButtonStatus_Down //笔上按键按下
//};
EButtonStatus est Enumération
{
ButtonStatus_Up
ButtonStatus_Down
}
//enum TouchStatus
//{
//TouchStatus_Up,
//TouchStatus_Down,
//TouchStatus_Move
//};
ETouchStatus est Enumération
{
TouchStatus_Up
TouchStatus_Down
TouchStatus_Move
}
//enum DeviceStatus
//{
//DeviceStatus_Disconnected=0,
//DeviceStatus_Connected,
//DeviceStatus_Sleep,
//DeviceStatus_Awake
//};
EDeviceStatus est Enumération
{
DeviceStatus_Disconnected=0
DeviceStatus_Connected
DeviceStatus_Sleep
DeviceStatus_Awake
}
//enum DeviceRunMode
//{
//DeviceRunMode_Mouse = 1, //系统鼠标
//DeviceRunMode_Pen = 2, //笔数据
//DeviceRunMode_MousePen = 3, //系统鼠标+笔数据
//DeviceRunMode_StdPen = 4 //标准数位笔
//};
EDeviceRunMode est Enumération
{
DeviceRunMode_Mouse = 1
DeviceRunMode_Pen = 2
DeviceRunMode_MousePen = 3
DeviceRunMode_StdPen = 4
}
/**************/
/* CONSTANTES */
/**************/
//Constantes d'erreur
CONSTANTE
ERR_OK = 0
ERR_DEVICE_NOTFOUND =-1
ERR_DEVICE_OPENFAIL =-2
ERR_DEVICE_NOTCONNECTED =-3
ERR_INVALIDPARAM =-101
ERR_NOSUPPORTED =-102
FIN
/***********************/
/* STRUCTURES ET ALIAS */
/***********************/
//Convention de préfixage :
//Le préfixage rend le code plus lisible lors du débogage, ou pour un lecteur qui n'est pas dans le contexte.
//La plupart des préfixes utilisés correspondent aux préfixes de la charte standard du WL.
//J'ai toutefois modifié cette charte afin d'avoir des préfixes correspondant à mes besoins.
//En voici un extrait :
//
// ST définition de structure
// st structure
// pst structure dynamique
//
// oc entier sans signe sur 1
// M entier sans signe sur 2 (Mot)
// n2 entier sur 2
// DM entier sans signe sur 4 (Double mot)
// n entier (sur 4)
// QM entier sans signe sur 8 (Quadruple mot)
// pk entier sur 8
// ptr entier système
//
// sa chaîne ANSI
// su chaîne UNICODE
//
// e énumération
//
// proc Procédure
//
//Note : les variables globales sont préfixées par les préfixes ci dessous précédées par g (e.g. gn est entier et globale)
//typedef struct tagAXIS
//{
//unsigned long min;
//unsigned long max;
//}AXIS, *PAXIS;
STTagAXIS est Structure
{
//Alias : AXIS
//Alias de pointeur sur un AXIS: PAXIS
m_DMMin est entier sans signe sur 4 octets
m_DMMax est entier sans signe sur 4 octets
}
//typedef struct tagTABLET_DEVICEINFO
//{
//AXIS axisX; //X轴范围
//AXIS axisY; //Y轴范围
//unsigned long pressure; //压感级别
//char vendor[32]; //厂商名称
//char product[32]; //产品名称
//unsigned long version; //驱动接口版本
//char serialnum[32]; //设备序列号
//}TABLET_DEVICEINFO, *PTABLET_DEVICEINFO;
STTagTABLET_DEVICEINFO est Structure
{
//Alias : TABLET_DEVICEINFO
//Alias de pointeur sur un TABLET_DEVICEINFO : PTABLET_DEVICEINFO
m_stAxisX est STTagAXIS
m_stAxisY est STTagAXIS
m_DMPressure est entier sans signe sur 4 octets
m_saVendor est chaîne sur 32
m_saProduct est chaîne sur 32
m_DMVersion est entier sans signe sur 4
m_saSerialNum est chaîne sur 32
}
//typedef struct tagDATAPACKET
//{
//EventType eventtype; //事件类型 4
//unsigned short physical_key; //物理按键 2
//unsigned short virtual_key; //虚拟按键 2
//KeyStatus keystatus; //按键状态 4
//PenStatus penstatus; //笔尖状态 4
//unsigned short x; //x坐标 2
//unsigned short y; //y坐标 2
//unsigned short pressure; //压感 2
//short wheel_direction; //转盘旋转方向标识 2
//unsigned short button; //笔身按键序列 2
//}DATAPACKET, *PDATAPACKET;
STTagDATAPACKET est Structure
{
//Alias : DATAPACKET
//Alias de pointeur sur un DATAPACKET : PDATAPACKET
m_eEVenttype est EEventType
m_MPhysical_key est entier sans signe sur 2
m_MVirtual_key est entier sans signe sur 2
m_eKeystatus est EKeyStatus
m_ePenstatus est EPenStatus
m_Mx est entier sans signe sur 2
m_MMy est entier sans signe sur 2
m_MPressure est un entier sans signe sur 2
m_n2Wheel_direction est entier sur 2
m_MButton est entier sans signe sur 2
}
//typedef struct tagTOUCHDATA
//{
//TouchStatus status[10];
//unsigned int x[10];
//unsigned int y[10];
//
//}TOUCHDATA, *PTOUCHDATA;
STTagTOUCHDATA est Structure
{
//Alias : TOUCHDATA
//Alias de pointeur sur un TOUCHDATA : PTOUCHDATA
m_eStatus est ETouchStatus
m_DMx est entier sans signe sur 4
m_DMDMy est entier sans signe sur 4
}
//typedef struct tagSTATUSPACKET
//{
//int penAlive;
//int penBattery;
//int status; //0 DISCONNECTED 1 CONNECTED 2 SLEEP 3 AWAKE
//}STATUSPACKET, *PSTATUSPACKET;
STTagSTATUSPACKET est Structure
{
m_nPenAlive est entier
m_nPenBattery est entier
m_nStatus est entier //0 DISCONNECTED 1 CONNECTED 2 SLEEP 3 AWAKE
}
/******************************************************/
/* POINTEURS ET ALIASES SUR LES FONCTIONS DE CALLBACK */
/******************************************************/
//PACKDATAPROC
//typedef int (_stdcall * PACKDATAPROC)(DATAPACKET pktObj);
//On définit un pointeur sur une fonction utilisant un DATAPACKET
//Déclaration de la fonction de type PACKDATAPROC
//FONCTION CallBackDataPacket(stMonDataPacket est STTagDATAPACKET) :entier
//DEVNOTIFYPROC
//typedef int (_stdcall * DEVNOTIFYPROC)(STATUSPACKET pktObj);
//On définit un pointeur sur une fonction utilisant un STATUSPACKET
//Déclaration de la fonction de type DEVNOTIFYPROC
//FONCTION CallBackStatusPacket(stMonStatusPacket est STTagSTATUSPACKET) :entier
//TOUCHPROC
//typedef int (_stdcall * TOUCHPROC)(TOUCHDATA td);
//On définit un pointeur sur une fonction utilisant un TOUCHDATA
//Déclaration de la fonction de type TOUCHPROC
//FONCTION CallBackTouchData(stMonTouchData est STTagTOUCHDATA) : entier
/*********************************************************/
/* VARIABLES ET STRUCTURES UTILISEES DANS LA COLLECTION */
/*********************************************************/
//Afin de faciliter l'accès à la dll, on va l'inclure dans l'installation dans un répertoire dll du répertoire de l'appli
gsaCheminDll est chaîne //Chemin de LibSign.dll
gsaCheminDll=ChaîneConstruit("%1dll\LibSign.dll",ComplèteRep(fRepExe))
gtaListeHandle est tableau associatif d'entiers système //Référence des Callbacks et de leur Handle |
Partager