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

📄 main.h

📁 鼠标手势识别系统
💻 H
字号:
// Main.h : Declaration of the _Main
/*
 Copyright (c) 2001 
 Author: Konstantin Boukreev 
 E-mail: konstantin@mail.primorye.ru 

 Created: 09.11.2001 13:15:07
 Version: 1.0.0

*/

#ifndef __MAIN_H_
#define __MAIN_H_

#include "resource.h"       // main symbols
#include "Board.h"       
#include "GestureLearn.h"
#include "MLNet.h"
#include "CustTestDlg.h"
#include "TrainOptDlg.h"

// Help and App commands
#define ID_APP_ABOUT                    0xE140
#define ID_APP_EXIT                     0xE141
#define ID_HELP                         0xE146

/////////////////////////////////////////////////////////////////////////////
// _Main
class _Main : 
	public CDialogImpl<_Main>
{
	MLNet			m_net;
	Board			m_board;
	GestureLearn	m_learn;
	TrainOptDlg		m_trainDlg;

	// test data
	CustTestDlg		m_testDlg;
	unsigned		m_test_stage;
	Board::path_t	m_path;
	RECT			m_rcBoard;
	unsigned		m_test_cycle;
	CustTestDlg::vector_t::iterator m_cur_pattern;	
	Board::path_t::iterator	m_cur_pos;

	// current weights filename (if any)
	std::basic_string<TCHAR> m_filename;		

	enum {TEST_TIMER_ID = 77};
	
public:
	_Main();
	~_Main();

	enum { IDD = IDD_MAIN };

 BEGIN_MSG_MAP(_Main)
	MESSAGE_HANDLER(WM_INITDIALOG,		OnInitDialog)
	MESSAGE_HANDLER(WM_DESTROY,			OnDestroy)
	MESSAGE_HANDLER(WM_SIZE,			OnSize)	
	MESSAGE_HANDLER(WM_TIMER,			OnTimer)
	COMMAND_ID_HANDLER(IDCANCEL,		OnCancel)
	COMMAND_ID_HANDLER(ID_TRAIN,		OnTrain)
	COMMAND_ID_HANDLER(ID_STOP,			OnStop)
	COMMAND_ID_HANDLER(ID_RECOGNIZE,	OnRecognize)
	COMMAND_ID_HANDLER(ID_FILEOPEN,		OnFileOpen)
	COMMAND_ID_HANDLER(ID_FILESAVE,		OnFileSave)	
	COMMAND_ID_HANDLER(ID_FILESAVEAS,	OnFileSaveAs)
	COMMAND_ID_HANDLER(ID_TEST,			OnTest)	
	COMMAND_ID_HANDLER(ID_HELP,			OnHelp)
	COMMAND_ID_HANDLER(ID_APP_ABOUT,	OnAbout)
	COMMAND_ID_HANDLER(ID_APP_EXIT,		OnCancel)
	COMMAND_ID_HANDLER(ID_APP_EMAIL,	OnSendEmail)
 END_MSG_MAP()

	LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		m_board.SubclassWindow(GetDlgItem(IDC_BOARD));
		UIUpdate();
		return 1;  // Let the system set the focus
	}
	LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		StopTest();
		m_learn.stop();
		return 0;
	}
	LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		if (wParam == SIZE_MINIMIZED) 
			return 0;
		int cx	= LOWORD(lParam); 
		int cy	= HIWORD(lParam);
		m_board.SetWindowPos(0, 0, 0, cx, cy, SWP_NOACTIVATE|SWP_NOMOVE);		
		return 0;
	}
	LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
	{
		DestroyWindow();
		return 0;
	}	
	LRESULT OnTrain(WORD, WORD, HWND, BOOL&);
	LRESULT OnStop(WORD, WORD, HWND, BOOL&);
	LRESULT OnRecognize(WORD, WORD, HWND, BOOL&)
	{
		RecognizeBoard();
		UIUpdate();
		return 0;
	}			
	LRESULT OnFileOpen(WORD, WORD, HWND, BOOL&);
	LRESULT OnFileSave(WORD, WORD, HWND, BOOL&);
	LRESULT OnFileSaveAs(WORD, WORD, HWND, BOOL&);
	LRESULT OnTest(WORD, WORD, HWND, BOOL&);	
	LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);	
	LRESULT OnHelp(WORD, WORD, HWND, BOOL&);
	LRESULT OnAbout(WORD, WORD, HWND, BOOL&);
	LRESULT OnSendEmail(WORD, WORD, HWND, BOOL&);

	BOOL DispatchDialogMessage(MSG* pMsg)
	{
		if (!m_hWnd) return 0;

		if ((pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYFIRST) && 
				pMsg->wParam == VK_ESCAPE)
		{
			if (m_test_stage) 
			{
				StopTest();
				return TRUE;
			}			
		}

		if (IsDialogMessage(pMsg)) 		
		{		
			return TRUE;
		}			
		return FALSE;
	}		
	
	virtual void OnFinalMessage(HWND)
	{	
		PostQuitMessage(1);
	}

	void StartTest();
	void StopTest();

	bool OpenHLink(const TCHAR*);
	
private:
	bool SaveNet(const TCHAR*);
	bool LoadNet(const TCHAR*);
	bool RecognizeBoard();
	void UIUpdate();
};


#endif //__MAIN_H_

⌨️ 快捷键说明

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