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

📄 handwriter.cpp

📁 三星2440下的手写程序.没有字库,因有版权问题.
💻 CPP
字号:
// handwriter.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "handwriter.h"
#include "FLYERAPI.h"
#include "windows.h"   

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
	MSG msg;

	// 执行应用程序初始化:
	if (!InitInstance(hInstance, nCmdShow)) 
	{
		return FALSE;
	}

	//FAILED(h);

	HACCEL hAccelTable;
	hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_HANDWRITER));

	// 主消息循环:
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return (int) msg.wParam;
}

//
//  函数: MyRegisterClass()
//
//  目的: 注册窗口类。
//
//  注释:
//
ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
{
	WNDCLASS wc;

	wc.style         = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc   = WndProc;
	wc.cbClsExtra    = 0;
	wc.cbWndExtra    = 0;
	wc.hInstance     = hInstance;
	wc.hIcon         = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HANDWRITER));
	wc.hCursor       = 0;
	wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName  = 0;
	wc.lpszClassName = szWindowClass;

	return RegisterClass(&wc);
}

//
//   函数: InitInstance(HINSTANCE, int)
//
//   目的: 保存实例句柄并创建主窗口
//
//   注释:
//
//        在此函数中,我们在全局变量中保存实例句柄并
//        创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
    HWND hWnd;
    TCHAR szTitle[MAX_LOADSTRING];		// 标题栏文本
    TCHAR szWindowClass[MAX_LOADSTRING];	// 主窗口类名

    g_hInst = hInstance; // 将实例句柄存储在全局变量中


    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); 
    LoadString(hInstance, IDC_HANDWRITER, szWindowClass, MAX_LOADSTRING);


    if (!MyRegisterClass(hInstance, szWindowClass))
    {
    	return FALSE;
    }

    hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

    if (!hWnd)
    {
        return FALSE;
    }

	DWORD style = WS_CHILD | WS_BORDER | WS_VSCROLL | /*TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS |*/ WS_VISIBLE;
	
	CreateWindow(TEXT("LISTBOX"),TEXT("IDS_PRINTLISTBOX"),style,30,30,200,400,hWnd,(HMENU)IDS_PRINTLISTBOX,hInstance,NULL);	

	//DWORD style1 = WS_CHILD | WS_BORDER | WS_VISIBLE ;
	//CreateWindow(TEXT("BUTTON"),TEXT("Clear List"),style1,270,30,80,27,hWnd,(HMENU)IDS_CLEARBUTTON,hInstance,NULL);		

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

	initialize();

    if (g_hWndCommandBar)
    {
        CommandBar_Show(g_hWndCommandBar, TRUE);
    }

    return TRUE;
}

// 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    for (int i = 0; i < dim(MainMessages); i++) 
	{
		if (message == MainMessages[i].Code)
	        return (*MainMessages[i].Fxn)(hWnd, message, wParam, lParam);
	}
    return DefWindowProc(hWnd, message, wParam, lParam);
}

// “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_INITDIALOG:
            RECT rectChild, rectParent;
            int DlgWidth, DlgHeight;	// 以像素为单位的对话框宽度和高度
            int NewPosX, NewPosY;

            // 设法使“关于”对话框居中显示
            if (GetWindowRect(hDlg, &rectChild)) 
            {
                GetClientRect(GetParent(hDlg), &rectParent);
                DlgWidth	= rectChild.right - rectChild.left;
                DlgHeight	= rectChild.bottom - rectChild.top ;
                NewPosX		= (rectParent.right - rectParent.left - DlgWidth) / 2;
                NewPosY		= (rectParent.bottom - rectParent.top - DlgHeight) / 2;
				
                // 如果“关于”框比实际屏幕大
                if (NewPosX < 0) NewPosX = 0;
                if (NewPosY < 0) NewPosY = 0;
                SetWindowPos(hDlg, 0, NewPosX, NewPosY,
                    0, 0, SWP_NOZORDER | SWP_NOSIZE);
            }
            return (INT_PTR)TRUE;

        case WM_COMMAND:
            if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
            {
                EndDialog(hDlg, LOWORD(wParam));
                return TRUE;
            }
            break;

        case WM_CLOSE:
            EndDialog(hDlg, message);
            return TRUE;

    }
    return (INT_PTR)FALSE;
}


// WM_CREATE 消息处理程序
LRESULT	DoCreate(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	g_hWndCommandBar = CommandBar_Create(g_hInst, hWnd, 1);
    CommandBar_InsertMenubar(g_hWndCommandBar, g_hInst, IDR_MENU, 0);
    CommandBar_AddAdornments(g_hWndCommandBar, 0, 0);
	return 0;
}
// WM_COMMAND 消息处理程序
LRESULT	DoCommand(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	int wmId    = LOWORD(wParam); 
    int wmEvent = HIWORD(wParam); 
    // 分析菜单选择:
    switch (wmId)
    {
		case IDS_CLEARBUTTON:
			{
				HWND hListBox = GetDlgItem(hWnd,IDS_PRINTLISTBOX);				
				SendMessage(hListBox,LB_RESETCONTENT,0,0);
			}
			break;
        case IDM_HELP_ABOUT:
			{
				DialogBox(g_hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, About);						
			}
            break;
        case IDM_FILE_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, wMsg, wParam, lParam);
    }
	return 0;
}
// WM_PAINT 消息处理程序
LRESULT	DoPaint(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{	
	PAINTSTRUCT ps;
	HDC hdc = BeginPaint(hWnd, &ps);
	
    EndPaint(hWnd, &ps);
	return TRUE;
}
// WM_LBUTTONDOWN 消息处理程序
LRESULT	DoLButtonDown(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	KillTimer(hWnd,1);
	if (bFinish)
	{
		points.clear();
		bFinish = false;
	}	

	POINT p;
	p.x = LOWORD(lParam);
	p.y = HIWORD(lParam);
	points.push_back(p);  
	bDrawing = true;
	return TRUE;
}
// WM_LBUTTONUP 消息处理程序
LRESULT	DoLButtonUp(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	POINT p;
	p.x = -1;
	p.y = 0;
	points.push_back(p);  
	bDrawing = false;		
	
	SetTimer(hWnd,1,1000,NULL);
	return TRUE;
}
// WM_MOUSEMOVE 消息处理程序
LRESULT	DoMouseMove(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	if (bDrawing)
	{
		POINT p;
		p.x = LOWORD(lParam);
		p.y = HIWORD(lParam);
		points.push_back(p);  	

		POINT pt[2];		

		HDC hdc = GetDC(hWnd);		

		if (points.size() >= 1)
		{
			pt[0] = points.at(points.size() - 2);
			pt[1] = points.at(points.size() - 1);
			Polyline(hdc,pt,2);
		}		

		ReleaseDC(hWnd,hdc);
		Sleep(25);		
	}
	return TRUE;
}
// WM_DESTROY 消息处理程序
LRESULT	DoDestroy(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	release();
	CommandBar_Destroy(g_hWndCommandBar);
    PostQuitMessage(0);
	return TRUE;
}

LRESULT	DoTimer(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
	KillTimer(hWnd,1);
	POINT p;
	p.x = -1;
	p.y = -1;
	points.push_back(p);
	THWPoint * penPoints = new THWPoint[points.size()];
	for(int i = 0; points.size() > i; i++)
	{
		penPoints[i].x = points.at(i).x;
		penPoints[i].y = points.at(i).y;
	}

	unsigned short result[MAXCANDNUM];
	if (getCode(penPoints,result) != -1)
	{
		for(int i = 0; MAXCANDNUM > i; i++)
		{
			wchar_t c = result[i];			

			HWND listHandler = GetDlgItem(hWnd,IDS_PRINTLISTBOX);
			SendMessage(listHandler,LB_ADDSTRING,0,(LPARAM)c);
		}
	}

	bFinish = true;
	delete [] penPoints;

	SendMessage(hWnd,WM_PAINT,0,0);
	RECT rect;
	GetClientRect(hWnd,&rect);
	InvalidateRect(hWnd,&rect,true);

	return TRUE;
}

⌨️ 快捷键说明

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