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

📄 hikerwbstartdlg.cpp

📁 自己用Markov模型做的一个整句物笔输入法的原型
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    tnid.hIcon = hicon;
    if (lpszTip)
		lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
    else
		tnid.szTip[0]='\0';
    res=Shell_NotifyIcon(NIM_MODIFY, &tnid);
    if (hicon)
		DestroyIcon(hicon);
    return res;
}


//处理图标回调消息MYWM_NOTIFYICON
void CHikerWBStartDlg::OnMyIconNotify( WPARAM wParam, LPARAM lParam )
{
    UINT uMouseMsg = (UINT) lParam;
	CMenu menu, menuskb, menucharset;	
	POINT pt;
	GetCursorPos(&pt);

    if(uMouseMsg == WM_LBUTTONDOWN)		//点击图标
    {
		menu.CreatePopupMenu();
		if (m_bStart)
			menu.AppendMenu(MF_STRING, ID_MENU_START, "关闭输入法 CTRL+空格");
		else
			menu.AppendMenu(MF_STRING, ID_MENU_START, "启动输入法 CTRL+空格");

		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, ID_MENU_EXIT, "退出 CTRL+SHIFT+空格");
		ClientToScreen(&pt);
		menu.TrackPopupMenu(TPM_RIGHTALIGN, pt.x, pt.y-125, this);
    }
	else if(uMouseMsg == WM_RBUTTONDOWN)		
	{
		menuskb.CreatePopupMenu();
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_PC, "PC  键盘");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_GL, "希腊字母");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_RL, "俄文字母");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_CSL, "拼  音");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_PN, "注  音");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_JH, "日文平假名");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_JK, "日文片假名");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_PT, "标点符号");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_SN, "数字序号");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_MN, "数学符号");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_SP, "特殊符号");
		menuskb.AppendMenu(MF_SEPARATOR);
		menuskb.AppendMenu(MF_STRING, ID_MENU_SKB_CLOSE, "关闭软键盘");

		menucharset.CreatePopupMenu();
		if (GetOutputCharset() == 0)
		{
			menucharset.AppendMenu(MF_STRING|MF_CHECKED, ID_MENU_GB2312, "GB2312");
			menucharset.AppendMenu(MF_STRING, ID_MENU_GBK, "GBK");
		}
		else
		{
			menucharset.AppendMenu(MF_STRING, ID_MENU_GB2312, "GB2312");
			menucharset.AppendMenu(MF_STRING|MF_CHECKED, ID_MENU_GBK, "GBK");
		}

		menu.CreatePopupMenu();

		if (GetOutputStyle() == 0)
			menu.AppendMenu(MF_STRING, ID_MENU_STYLE, "终结者风格 CTRL+U");
		else
			menu.AppendMenu(MF_STRING|MF_CHECKED, ID_MENU_STYLE, "终结者风格 CTRL+U");

		menu.AppendMenu(MF_SEPARATOR);
		if (GetFloatWndStyle() == 0)
			menu.AppendMenu(MF_STRING, ID_MENU_FWSTYLE, "光标跟随  CTRL+I");
		else
			menu.AppendMenu(MF_STRING|MF_CHECKED, ID_MENU_FWSTYLE, "光标跟随  CTRL+I");

		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_POPUP, (int)(menucharset.m_hMenu), "字符集");
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_POPUP, (int)(menuskb.m_hMenu), "软键盘");
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, ID_MENU_TRAINFILE, "从文章学习");		//>>
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, ID_MENU_SET, "设置");
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, ID_MENU_HELP, "帮助");		//>>
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, ID_MENU_ABOUT, "关于");
		ClientToScreen(&pt);
		//rect = CRect()
		menu.TrackPopupMenu(TPM_RIGHTALIGN, pt.x, pt.y-125, this);
	}
}

//消息MYWM_SHOWAPPICONIC处理函数,在任务栏显示图标
void CHikerWBStartDlg::OnShowAppIconic(WPARAM wParam, LPARAM lParam )
{
    //HICON theIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDD_HIKERWBSTART_DIALOG) );
    MyTaskBarAddIcon(GetSafeHwnd(), 100, m_hIcon, _T("终结者五笔"));
    ShowWindow(SW_HIDE );
}

void CHikerWBStartDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	MyTaskBarDeleteIcon( GetSafeHwnd(), 100);

	BOOL bOk = UnregisterHotKey(GetSafeHwnd(), 0x0001);
	bOk &= UnregisterHotKey(GetSafeHwnd(), 0x0002);
	bOk &= UnregisterHotKey(GetSafeHwnd(), 0x0003);
	bOk &= UnregisterHotKey(GetSafeHwnd(), 0x0004);
}

void CHikerWBStartDlg::OnMenuStyle() 
{
	// TODO: Add your command handler code here
	if (GetOutputStyle() == 0)
		SetOutputStyle(1);
	else
		SetOutputStyle(0);
}

void CHikerWBStartDlg::OnMenuFWStyle() 
{
	// TODO: Add your command handler code here
	if (GetFloatWndStyle() == 0)
		SetFloatWndStyle(1);
	else
		SetFloatWndStyle(0);
}

void CHikerWBStartDlg::OnMenuExit() 
{
	// TODO: Add your command handler code here
	EndModalLoop(0);	
}

void CHikerWBStartDlg::OnMenuHelp() 
{
	// TODO: Add your command handler code here
	
}

void CHikerWBStartDlg::OnMenuSkb(int nID)
{
	// TODO: Add your command handler code here
	//LockInputWnd();

	switch(nID) {
	case ID_MENU_SKB_PC:
		ShowSoftKeyboard(TRUE, 0);
		break;
	case ID_MENU_SKB_GL:
		ShowSoftKeyboard(TRUE, 1);
		break;
	case ID_MENU_SKB_RL:
		ShowSoftKeyboard(TRUE, 2);
		break;
	case ID_MENU_SKB_CSL:
		ShowSoftKeyboard(TRUE, 3);
		break;
	case ID_MENU_SKB_PN:
		ShowSoftKeyboard(TRUE, 4);
		break;
	case ID_MENU_SKB_JH:
		ShowSoftKeyboard(TRUE, 5);
		break;
	case ID_MENU_SKB_JK:
		ShowSoftKeyboard(TRUE, 6);
		break;
	case ID_MENU_SKB_PT:
		ShowSoftKeyboard(TRUE, 7);
		break;
	case ID_MENU_SKB_SN:
		ShowSoftKeyboard(TRUE, 8);
		break;
	case ID_MENU_SKB_MN:
		ShowSoftKeyboard(TRUE, 9);
		break;
	case ID_MENU_SKB_SP:
		ShowSoftKeyboard(TRUE, 10);
		break;
	case ID_MENU_SKB_CLOSE:
		ShowSoftKeyboard(FALSE);
		break;
	default:
		break;
	}

	//ReleaseFocus();
	
	return;
}

void CHikerWBStartDlg::OnMenuGb2312() 
{
	// TODO: Add your command handler code here
	SetOutputCharset(0);
}

void CHikerWBStartDlg::OnMenuGbk() 
{
	// TODO: Add your command handler code here
	SetOutputCharset(1);
}

void CHikerWBStartDlg::OnMenuAbout() 
{
	// TODO: Add your command handler code here
	PostMessage(WM_SYSCOMMAND, IDM_ABOUTBOX, 0);	
}

void CHikerWBStartDlg::OnMenuStart() 
{
	// TODO: Add your command handler code here
	m_bStart = !m_bStart;
	if (m_bStart)
		HookOn();
	else
		HookOff();
}

void CHikerWBStartDlg::OnMenuTrainFromFile() 
{
	// TODO: Add your command handler code here
	TrainFromFile();
}

BOOL CHikerWBStartDlg::OnQueryEndSession() 
{
	// TODO: Add your command handler code here
	DestroySubWnd();		//invoke EndHook and so save mb

	return TRUE;
}

void CHikerWBStartDlg::ChangeIcon(int iIcon)
{
    //HICON theIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDD_HIKERWBSTART_DIALOG) );
	switch (iIcon)
	{
	case 0:
		MyTaskBarChangeIcon(GetSafeHwnd(), 100, m_hIcon, _T("终结者五笔"));
		break;
	case 1:
		MyTaskBarChangeIcon(GetSafeHwnd(), 100, m_hIconE, _T("终结者五笔"));
		break;
	case 2:
		MyTaskBarChangeIcon(GetSafeHwnd(), 100, m_hIconS, _T("终结者五笔"));
		break;
	}
}

int CHikerWBStartDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	BOOL bOk;

	bOk= RegisterHotKey(GetSafeHwnd(), 0x0001, MOD_CONTROL, VK_SPACE);
	bOk &= RegisterHotKey(GetSafeHwnd(), 0x0002, MOD_CONTROL|MOD_SHIFT, VK_SPACE);
	bOk &= RegisterHotKey(GetSafeHwnd(), 0x0003, MOD_CONTROL, 85);
	bOk &= RegisterHotKey(GetSafeHwnd(), 0x0004, MOD_CONTROL, 73);
	
	return 0;
}

void CHikerWBStartDlg::OnMenuSet() 
{
	// TODO: Add your command handler code here
	SetSysPara();
}

⌨️ 快捷键说明

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