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

📄 bitmapim.h

📁 WinCE4.0的COM组件.工业控制专用软键盘
💻 H
字号:
// BitmapIM.h : Declaration of the CBitmapIM
#ifndef __BITMAPIM_H_
#define __BITMAPIM_H_
#include "Defination.h"
/////////////////////////////////////////////////////////////////////////////
// CBitmapIM
   
// Message dispatch table for SipWindowProc
class ATL_NO_VTABLE CBitmapIM : 
	public CComObjectRootEx<CComMultiThreadModel>,
	public CComCoClass<CBitmapIM, &CLSID_BitmapIM>,
	public IDispatchImpl<IBitmapIM, &IID_IBitmapIM, &LIBID_SIMPLEIMLib>,
	public IInputMethod
{
public:
	CBitmapIM()
	{
	}

DECLARE_REGISTRY_RESOURCEID(IDR_BITMAPIM)


BEGIN_COM_MAP(CBitmapIM)
	COM_INTERFACE_ENTRY(IBitmapIM)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(IInputMethod)
END_COM_MAP()

private:
	HWND		m_hwndParent;
    HWND		m_hwndMyWnd;
    HIMAGELIST	m_himlWide;
    HIMAGELIST	m_himlNarrow;


	IIMCallback *m_pIMCallback;
// IBitmapIM
// IInputMethod
	STDMETHOD(Select)(HWND hwndSip)
	{
		HBITMAP hBmp, hbmpMask;
		m_hwndParent = hwndSip;

		// Create image list for narrow (16x16) image.
		m_himlNarrow = ImageList_Create (16, 16, ILC_COLOR | ILC_MASK, 1, 0);
		hBmp = LoadBitmap (hInst, MAKEINTRESOURCE(IDB_NARROWBMP));
		hbmpMask = LoadBitmap (hInst, MAKEINTRESOURCE(IDB_NARROWMASK));
		ImageList_Add (m_himlNarrow, hBmp, hbmpMask);
		DeleteObject (hBmp);
		DeleteObject (hbmpMask);
   
		// Create image list for wide (32x16) image.
		m_himlWide = ImageList_Create (32, 16, ILC_COLOR | ILC_MASK, 1, 0);
		hBmp = LoadBitmap (hInst, MAKEINTRESOURCE(IDB_WIDEBMP));
		hbmpMask = LoadBitmap (hInst,MAKEINTRESOURCE(IDB_WIDEMASK));
		ImageList_Add (m_himlWide, hBmp, hbmpMask);
		DeleteObject (hBmp);
		DeleteObject (hbmpMask);
   
		// Create SIP window.  
		m_hwndMyWnd = CreateIMWindow (hwndSip);
		if (!IsWindow (m_hwndMyWnd))
			return E_FAIL;
		return S_OK;
	}
	STDMETHOD(Deselect)()
	{
		DestroyIMWindow (m_hwndMyWnd);
		ImageList_Destroy (m_himlNarrow);
		ImageList_Destroy (m_himlWide);
		return S_OK;
	}
	STDMETHOD(Showing)()
	{
		return S_OK;
	}
	STDMETHOD(Hiding)()
	{
		return S_OK;
	}
	STDMETHOD(GetInfo)(_tagImInfo  * pimi)
	{
		pimi->cbSize			= sizeof (IMINFO);
		pimi->hImageNarrow		= m_himlNarrow;
		pimi->hImageWide		= m_himlWide;
		pimi->iNarrow			= 0;
		pimi->iWide				= 0;  
		pimi->fdwFlags			= SIPF_DOCKED;
		pimi->rcSipRect.left	= GetSystemMetrics(SM_CXSCREEN) - FLOATWIDTH;
		pimi->rcSipRect.top		= GetSystemMetrics(SM_CYSCREEN) - FLOATHEIGHT;
		pimi->rcSipRect.right	= GetSystemMetrics(SM_CXSCREEN) 
								  - GetSystemMetrics(SM_CXBORDER) ;
		pimi->rcSipRect.bottom	= GetSystemMetrics(SM_CYSCREEN) 
								  - GetSystemMetrics(SM_CYBORDER)*2
								  - GetSystemMetrics(SM_CYCAPTION);
		SendMessage (m_hwndMyWnd, WM_METHCALL, MSGCODE_GETINFO, (LPARAM) pimi);

		// Callback to inform the SIP that IMINFO has been changed!!!
		// KEY step of SIP resizing!!!
		m_pIMCallback->SetImInfo(pimi);

		return S_OK;

	}
	STDMETHOD(ReceiveSipInfo)(SIPINFO * psi)
	{
		SendMessage (m_hwndMyWnd, WM_METHCALL, MSGCODE_SETINFO, (LPARAM) psi);
		return S_OK;
	}
	STDMETHOD(RegisterCallback)(IIMCallback * lpIMCallback)
	{
		m_pIMCallback = lpIMCallback;
		PostMessage (m_hwndMyWnd, WM_METHCALL, MSGCODE_REGCALLBACK, (LPARAM)m_pIMCallback);
		return S_OK;
	}
	STDMETHOD(GetImData)(ULONG dwSize, VOID * pvImData)
	{
		if (pvImData == NULL)			return E_POINTER;		return S_OK;
	}
	STDMETHOD(SetImData)(ULONG dwSize, VOID * pvImData)
	{
		return S_OK;
	}
	STDMETHOD(UserOptionsDlg)(HWND hwndParent)
	{
		MessageBox (hwndParent, _T("Sorry, no options here."), 
			_T("Simple Keyboard"),  MB_OK);
		return S_OK;
	}
};

#endif //__BITMAPIM_H_

⌨️ 快捷键说明

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