111,089
社区成员




LRESULT FAR PASCAL MainWndProc(hWnd, message, wParam, lParam)
HWND hWnd;
unsigned message;
WPARAM wParam;
LPARAM lParam;
{
FARPROC lpProcAbout;
static HCTX hTab = NULL;
static POINT ptOld, ptNew;
static UINT prsOld, prsNew;
static RECT rcClient;
PAINTSTRUCT psPaint;
HDC hDC;
PACKET pkt;
BOOL fHandled = TRUE;
LRESULT lResult = 0L;
switch (message) {
case WM_CREATE:
hTab = TabletInit(hWnd);
if (!hTab) {
MessageBox(NULL, " Could Not Open Tablet Context.", "WinTab",
MB_OK | MB_ICONHAND);
SendMessage(hWnd, WM_DESTROY, 0, 0L);
}
break;
case WM_SIZE:
GetClientRect(hWnd, &rcClient);
InvalidateRect(hWnd, NULL, TRUE);
break;
case WM_COMMAND:
if (GET_WM_COMMAND_ID(wParam, lParam) == IDM_ABOUT) {
lpProcAbout = MakeProcInstance(About, hInst);
DialogBox(hInst, "AboutBox", hWnd, (DLGPROC)lpProcAbout);
FreeProcInstance(lpProcAbout);
}
else
fHandled = FALSE;
break;
case WT_PACKET:
if (gpWTPacket((HCTX)lParam, wParam, &pkt)) {
if (HIWORD(pkt.pkButtons)==TBN_DOWN) {
MessageBeep(0);
}
ptOld = ptNew;
prsOld = prsNew;
ptNew.x = MulDiv((UINT)pkt.pkX, rcClient.right, 10000);
ptNew.y = MulDiv((UINT)pkt.pkY, rcClient.bottom, 10000);
prsNew = pkt.pkNormalPressure;//这个pkt.pkNormalPressure是我想要的数据
if (ptNew.x != ptOld.x ||
ptNew.y != ptOld.y ||
prsNew != prsOld) {
InvalidateRect(hWnd, NULL, TRUE);
}
}
break;
case WM_ACTIVATE:
if (GET_WM_ACTIVATE_STATE(wParam, lParam))
InvalidateRect(hWnd, NULL, TRUE);
/* if switching in the middle, disable the region */
if (hTab) {
gpWTEnable(hTab, GET_WM_ACTIVATE_STATE(wParam, lParam));
if (hTab && GET_WM_ACTIVATE_STATE(wParam, lParam))
gpWTOverlap(hTab, TRUE);
}
break;
case WM_DESTROY:
if (hTab)
gpWTClose(hTab);
PostQuitMessage(0);
break;
case WM_PAINT:
if (hDC = BeginPaint(hWnd, &psPaint)) {
POINT ptHere;
ptHere.x = ptNew.x;
ptHere.y = rcClient.bottom - ptNew.y;
/* redo horz */
Ellipse(hDC, ptHere.x - prsNew, ptHere.y - prsNew,
ptHere.x + prsNew, ptHere.y + prsNew);
PatBlt(hDC, rcClient.left, ptHere.y,
rcClient.right, 1, DSTINVERT);
/* redo vert */
PatBlt(hDC, ptHere.x, rcClient.top,
1, rcClient.bottom, DSTINVERT);
EndPaint(hWnd, &psPaint);
}
break;
default:
fHandled = FALSE;
break;
}
if (fHandled)
return (lResult);
else
return (DefWindowProc(hWnd, message, wParam, lParam));
}