⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pentrac.cpp

📁 wince下的pen处理程序
💻 CPP
字号:
//=====================================================================
// HelloCE - A simple application for Windows CE
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//
//=====================================================================
# include <windows.h>					// For all that Windows stuff
# include <commctrl.h>					// command bar includes
# include "PenTrac.h"					// Program-specific stuff

//---------------------------------------------------------------------
// Global data
//
const TCHAR szAppName[] = TEXT("Pentrac");
HINSTANCE hInst;						// Program instance handle


// Message dispatch table for MainWindowProc
const struct decodeUINT MainMessages[] = {
	WM_CREATE, DoCreateMain,
	WM_PAINT, DoPaintMain,
	WM_LBUTTONDOWN, DoMouseMain,
//	WM_HIBERNATE, DoHibernateMain,
//	WM_ACTIVATE, DoActivateMain,
    WM_MOUSEMOVE, DoMouseMain,
	WM_DESTROY, DoDestroyMain,
};

//=====================================================================
//
// Program entry point
//
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
					LPWSTR lpCmdLine, int nCmdShow) {
	MSG msg;
	int rc = 0;
	HWND hwndMain;

	// Initialize application.
	rc = InitApp (hInstance);
	if (rc) return rc;

	// Initialize this instance.
	hwndMain = InitInstance (hInstance, lpCmdLine, nCmdShow);
	if (hwndMain == 0)
		return 0x10;

	// Application message loop
	while (GetMessage (&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	// Instance cleanup
	return TermInstance(hInstance, msg.wParam);
}
//---------------------------------------------------------------------
// InitApp - Application initialization
//
int InitApp (HINSTANCE hInstance) {
	WNDCLASS wc;

	// Register application main window class.
	wc.style = 0;							// Window style
	wc.lpfnWndProc = MainWndProc;			// Callback function
	wc.cbClsExtra = 0;						// Extra class data
	wc.cbWndExtra = 0;						// Extra window data
	wc.hInstance = hInstance;				// Owner handle
	wc.hIcon = NULL;						// Application icon
	wc.hCursor = NULL;						// Default cursor
	wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
	wc.lpszMenuName = NULL;					// Menu name
	wc.lpszClassName = szAppName;			// Window class name

	if (RegisterClass (&wc) == 0) return 1;

	return 0;
}
//---------------------------------------------------------------------
// InitInstance - Instance initialization
//
HWND InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow) {
	HWND hWnd;
	
	// Save program instance handle in global variable.
	hInst = hInstance;

	// Create main window.
	hWnd = CreateWindow (szAppName,			// Window class
						 TEXT("PenTrac"),	// Window title
						 WS_VISIBLE,		// Style flags
						 CW_USEDEFAULT,		// x position
						 CW_USEDEFAULT,		// y positoin
						 CW_USEDEFAULT,		// Initial width
						 CW_USEDEFAULT,		// Initial height
						 NULL,				// Parent
						 NULL,				// Menu, must be null
						 hInstance,			// Application instance
						 NULL);				// Pointer to create parameters

	// Return fail code if window not created.
	if (! IsWindow(hWnd)) return 0;

	// Standard show and update calls
	ShowWindow (hWnd, nCmdShow);
	UpdateWindow (hWnd);
	return hWnd;
}
//---------------------------------------------------------------------
// TermInstance - Program cleanup
//
int TermInstance (HINSTANCE hInstance, int nDefRC) {
	return nDefRC;
}

//=====================================================================
// Message handling procedures for main window
//

//---------------------------------------------------------------------
// MainWndProc - Callback function for application window
//
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
							  LPARAM lParam) {
	int i;
	//
	// Search message list to see if we need to handle this messge.
	// If in list, call procedure.
	//
	for (i = 0; i<dim(MainMessages); i++) {
		if (wMsg == MainMessages[i].Code)
			return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
	}
	return DefWindowProc (hWnd, wMsg, wParam, lParam);
}
//---------------------------------------------------------------------
// DoCreateMain - Process WM_CREATE message for window.
//
LRESULT DoCreateMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) {
	HWND hwndCB;

	// Create a command bar.
	hwndCB = CommandBar_Create (hInst, hWnd, IDC_CMDBAR);
	// Add exit button to command bar.
	CommandBar_AddAdornments (hwndCB, 0|CMDBAR_OK|CMDBAR_HELP, 0);

	//Add: your code here.
	return 0;
}

//----------------------------------------------------------------------
//DoMouseMain - Process WM_LBUTTONDOWM and WM_MOUSEMOVE messages
//for window.
//
LRESULT DoMouseMain(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	POINT pt[64];
	POINT ptM;
	UINT i,uPoints = 0;
	HDC hdc;

	ptM.x = LOWORD(lParam);
	ptM.y = HIWORD(lParam);

	hdc = GetDC(hWnd);
	//if shift and mouse move , see if any lost points.
	if(wMsg == WM_MOUSEMOVE)
	{
		if(wParam & MK_SHIFT)
			GetMouseMovePoints(pt,64,&uPoints);

		for(i = 0; i< uPoints; i++)
		{
			SetPixel(hdc,pt[i].x/4, pt[i].y/4, RGB(255,0,0));
			SetPixel(hdc,pt[i].x/4, pt[i].y/4, RGB(255,0,0));
			SetPixel(hdc,pt[i].x/4, pt[i].y/4, RGB(255,0,0));
			SetPixel(hdc,pt[i].x/4, pt[i].y/4, RGB(255,0,0));
		}
	}

	//The original point is drawn last in case one of the pints
	//returned by GetMouseMovePoints overlaps it.
	SetPixel(hdc,ptM.x,ptM.y,RGB(0,0,0));
	SetPixel(hdc,ptM.x+1,ptM.y,RGB(0,0,0));
	SetPixel(hdc,ptM.x,ptM.y+1,RGB(0,0,0));
	SetPixel(hdc,ptM.x+1,ptM.y+1,RGB(0,0,0));
	ReleaseDC(hWnd,hdc);
	//Kill time to make believe we are busy
	Sleep(25);
	return 0;	
}

//----------------------------------------------------------------------
// DoPaintMain - Process WM_PAINT message for window.
//
LRESULT DoPaintMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) {
	PAINTSTRUCT ps;
	RECT rect;
	HDC hdc;


	// Adjust the size of the client rectangle to take into account
	// the command bar height.
	GetClientRect (hWnd, &rect);
	rect.top += CommandBar_Height (GetDlgItem (hWnd, IDC_CMDBAR));

	hdc = BeginPaint (hWnd, &ps);

	//Add: your code here.

	EndPaint(hWnd, &ps);
	return 0;
}
//----------------------------------------------------------------------
// DoHibernateMain - Process WM_HIBERNATE message for window.
//
LRESULT DoHibernateMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) {
	
	// If not the active window, nuke the command bar to save memory.
	if (GetActiveWindow() != hWnd)
		CommandBar_Destroy (GetDlgItem(hWnd, IDC_CMDBAR));

	return 0;
}
//----------------------------------------------------------------------
// DoActivateMain - Process WM_ACTIVATE message for window.
//
LRESULT DoActivateMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) {
	
	HWND hwndCB;
	// If activating and no command bar, create it.
	if ((LOWORD(wParam) != WA_INACTIVE) &&
		(GetDlgItem (hWnd, IDC_CMDBAR) == 0)) {

		// Create a command bar.
		hwndCB = CommandBar_Create (hInst, hWnd, IDC_CMDBAR);
		// Add exit button to command bar.
		CommandBar_AddAdornments (hwndCB, 0, 0);
	}
	return 0;
}
//----------------------------------------------------------------------
// DoDestroyMain - Process WM_DESTROY message for window.
//
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) {
	PostQuitMessage(0);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -