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

📄 lakeymainwindow.h

📁 Lakey这是一个免费的CW练习/收/发软件
💻 H
字号:
#pragma once

#include <queue>

#include "EventManagerWin32.h"
#include "LakeySetting.h"
#include "LaWaveCapture.h"

class CSinSound;
class CLaButton;
class CLaJournalPanel;
class CLaWaveCapture;
class CLaLabel;
class CLaLine;

class CLakeyMainWindow
	: public CEventDispatcherWin32
	, public IMouseMoveEventListener
	, public IKeyboardEventListener
	, public IMouseKeyEventListener
	, public IPaintEventControl
	, public ICwEventListener
	, public ICommandEventControl
{
public:
	CLakeyMainWindow(HWND hWnd, CLakeySetting* pSetting);
	virtual ~CLakeyMainWindow(void);

	virtual BOOL Initialize();

	virtual BOOL IsRelated(int x, int y) { return TRUE; };
	virtual void GetRect(RECT* r);

	virtual void OnMouseMove(void* owner, int x, int y);
	virtual void OnKeyDown(void* owner, int nKeyCode);
	virtual void OnKeyUp(void* owner, int nKeyCode);
	virtual void OnMouseKeyDown(void* owner, MouseKeyType nMkt, int x, int y);
	virtual void OnMouseKeyUp(void* owner, MouseKeyType nMkt, int x, int y);
	virtual BOOL OnClick(void* owner);
	virtual void OnPaint(void* owner, CGraphics* g, const RECT* pRect);

	virtual void OnCwEvent(BOOL bCwDown);
	virtual void OnCommand(void* owner, int nCommId);

	void PushText(const char* pText, int nSize, int nWordLen);
	void ClearQueue();

private:
	CLaButton* CreateButton(const char* pText, int x, int y, int w, int h, int nWantKeyCode);
	CLaButton* CreateButton(const BUTTONMAPPING* pMapping);
	CLaJournalPanel* CreateJournalPanel(const RECT* pRect, int nMaxShortCount);
	CLaWaveCapture* CreateWaveCapture(const RECT* pRect);
	CLaLabel* CreateLabel(const RECT* pRect, const char* pText, int nStyle, const char* pMutexName = NULL);
	CLaLine* CreateLine(int x1, int y1, int x2, int y2);
	MORSECODE* GetMorseCode(char ch);
	BOOL ChooseSendFile();

	void BuildMorseButtons();
	void CwDown();
	void CwUp();

private:
	CLakeySetting*	m_pSetting;
	CSinSound*	m_pSound;

	// Resources
	CFont*		m_pFont;

	// Controls
	CLaButton*	m_pBtCw;
	CLaButton*	m_pBtSendPause;
	CLaButton*	m_pBtSendFile;

	BOOL		m_bPause;
	BOOL		m_bClear;

	// Morse buttons
	CLaButton*	m_vBtMorse[MORSECODECOUNT];

	// CW journal panel
	CLaJournalPanel*	m_pJpSend;
	CLaLabel*			m_pSendCharQueueLabel;
	CLaLine*			m_pSendJpBorder;
	CLaLine*			m_pSendTunerBorder;

	CLaWaveCapture*		m_pRecvDctMonitor;
	CLaJournalPanel*	m_pJpRecv;
	CLaLine*			m_pRecvJpBorder;
	CLaLine*			m_pRecvTunerBorder;

	CLaLabel*			m_pSendLabel;
	CLaLabel*			m_pRecvLabel;

	// CW Flag
	BOOL		m_bCwFlag;

	// Send morse queue
	queue<MORSECODE *>	m_oSendMorseQueue;
	BOOL		m_bNeedExit;
	HANDLE		m_hMorseQueueThread;
	DWORD		m_nMorseQueueThreadID;
	HANDLE		m_hMorseJournalThread;
	DWORD		m_nMorseJournalThreadID;
	HANDLE		m_hRecvMonitorThread;
	DWORD		m_nRecvMonitorThreadID;

	int			m_nRecvIdleCount;

	static DWORD WINAPI MorseQueueThreadProc(LPVOID pOwner);
	static DWORD WINAPI MorseJournalThreadProc(LPVOID pOwner);
	static DWORD WINAPI RecvMonitorThreadProc(LPVOID pOwner);
};

⌨️ 快捷键说明

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