?? bitmapim.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 + -