亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? numpanel.cpp

?? MS-Press book about programming under Windows CE with source-codes of examples
?? CPP
字號:
//======================================================================
// NumPanel - A Windows CE example input method
//
// Written for the book Programming Windows CE
// Copyright (C) 1998 Douglas Boling
//======================================================================
#include <windows.h>                 // For all that Windows stuff
#include <commctrl.h>                // Command bar includes
#define INITGUID
#include <initguid.h>
#include <coguid.h>
#include <aygshell.h>                // Palm-size PC shell includes
#include <sip.h>                     // SIP includes

#include "NumPanel.h"                // Local program includes
#include "NPWnd.h"                   // My IM window includes
HINSTANCE hInst;                     // DLL instance handle
long g_DllCnt = 0;                   // Global DLL reference count

// Replace this GUID with your own!
static const TCHAR szCLSIDNumPanel[] = 
TEXT ("{C915FE81-24C0-11d2-93F7-204C4F4F5020}");
static const GUID CLSID_NumPanel = 
{0xc915fe81, 0x24c0, 0x11d2, {0x93,0xf7,0x20,0x4c,0x4f,0x4f,0x50,0x20}};
static const TCHAR szFriendlyName[] = TEXT ("Numeric Keypad");
//======================================================================
// DllMain - DLL initialization entry point
//
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD dwReason, 
                     LPVOID lpvReserved) {
    hInst = hinstDLL;
    return TRUE;
}
//======================================================================
// DllGetClassObject - Exported function called to get pointer to 
// Class factory object
//
STDAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv) {
    MyClassFactory *pcf;
    HRESULT hr;

    // See if caller wants us...
    if (IsEqualCLSID (rclsid, CLSID_NumPanel)) {

        // Create IClassFactory object.
        pcf = new MyClassFactory();
        if (pcf == NULL)
            return E_OUTOFMEMORY;

        // Call class factory's query interface method.
        hr = pcf->QueryInterface (riid, ppv);
        // This will cause an obj delete unless interface found
        pcf->Release();
        return hr;
    }
    return CLASS_E_CLASSNOTAVAILABLE;
}
//======================================================================
// DllCanUnloadNow - Exported function called when DLL can unload
//
STDAPI DllCanUnloadNow () {

    if (g_DllCnt)
        return S_FALSE;
    return S_OK;
}
//======================================================================
// DllRegisterServer - Exported function called to register the server
//
STDAPI DllRegisterServer () {
    TCHAR szName[MAX_PATH+2];
    DWORD dwDisp;
    HKEY hKey, hSubKey;
    INT rc, i;

    GetModuleFileName (hInst, szName, sizeof (szName));
    // Open the key.
    rc = RegCreateKeyEx (HKEY_CLASSES_ROOT, szCLSIDNumPanel, 0,
                         TEXT (""), 0, 0, NULL, &hKey, &dwDisp);
    if (rc != ERROR_SUCCESS)
        return E_FAIL;

    // Set the friendly name of the SIP.
    RegSetValueEx (hKey, TEXT (""), 0, REG_SZ, (PBYTE)szFriendlyName,
                   (lstrlen (szFriendlyName)+1) * sizeof (TCHAR));

    // Create subkeys.
    // Set the module name of the SIP.
    rc = RegCreateKeyEx (hKey, TEXT ("InProcServer32"), 0, TEXT (""),
                         0, 0, NULL, &hSubKey, &dwDisp);
    rc = RegSetValueEx (hSubKey, TEXT (""), 0, REG_SZ, (PBYTE)szName,
                        (lstrlen (szName)+1) * sizeof (TCHAR));
    RegCloseKey (hSubKey);

    // Set the default icon of the server.
    RegCreateKeyEx (hKey, TEXT ("DefaultIcon"), 0, TEXT (""),
                         0, 0, NULL, &hSubKey, &dwDisp);
    lstrcat (szName, TEXT (",0"));
    RegSetValueEx (hSubKey, TEXT (""), 0, REG_SZ, (PBYTE)szName,
                        (lstrlen (szName)+1) * sizeof (TCHAR));
    RegCloseKey (hSubKey);

    // Set the flag indicating this is a SIP.
    RegCreateKeyEx (hKey, TEXT ("IsSIPInputMethd"), 0, TEXT (""), 
                    0, 0, NULL, &hSubKey, &dwDisp);
    i = 1;
    RegSetValueEx (hSubKey, TEXT (""), 0, REG_DWORD, (PBYTE)&i, 4);
    RegCloseKey (hSubKey);

    RegCloseKey (hKey);
    return S_OK;
}
//======================================================================
// DllUnregisterServer - Exported function called to remove the server
// information from the registry
//
STDAPI DllUnregisterServer() {
    INT rc;
    rc = RegDeleteKey (HKEY_CLASSES_ROOT, szCLSIDNumPanel);
    if (rc == ERROR_SUCCESS)
        return S_OK;
    return E_FAIL;
}
//**********************************************************************
// MyClassFactory Object implimentation
//----------------------------------------------------------------------
// Object constructor
MyClassFactory::MyClassFactory () {
    m_lRef = 1;     //Set ref count to 1 on create
    return;
}
//----------------------------------------------------------------------
// Object destructor
MyClassFactory::~MyClassFactory () {
    return;
}
//----------------------------------------------------------------------
// QueryInterface - Called to see what interfaces this object supports
STDMETHODIMP MyClassFactory::QueryInterface (THIS_ REFIID riid, 
                                             LPVOID *ppv) {

    // If caller wants our IUnknown or IClassFactory object, 
    // return a pointer to the object.
    if (IsEqualIID (riid, IID_IUnknown) || 
        IsEqualIID (riid, IID_IClassFactory)) {

        *ppv = (LPVOID)this;     // return pointer to object.
        AddRef();                // Inc ref to prevent delete on return.
        return NOERROR;
    }
    *ppv = NULL;
    return (E_NOINTERFACE);
}
//----------------------------------------------------------------------
// AddRef - Increment object reference count.
STDMETHODIMP_(ULONG) MyClassFactory::AddRef (THIS) {
    ULONG cnt;

    cnt = (ULONG)InterlockedIncrement (&m_lRef);
    return cnt;
}
//----------------------------------------------------------------------
// Release - Decrement object reference count.
STDMETHODIMP_(ULONG) MyClassFactory::Release (THIS) {
    ULONG cnt;

    cnt = (ULONG)InterlockedDecrement (&m_lRef);
    if (cnt == 0)
        delete this;
    return cnt;
}
//----------------------------------------------------------------------
// LockServer - Called to tell the DLL not to unload even if use cnt 0
STDMETHODIMP MyClassFactory::LockServer (BOOL fLock) {
    if (fLock)
        InterlockedIncrement (&g_DllCnt);
    else
        InterlockedDecrement (&g_DllCnt);
    return NOERROR;
}
//----------------------------------------------------------------------
// CreateInstance - Called to have class factory object create other
// objects
STDMETHODIMP MyClassFactory::CreateInstance (LPUNKNOWN pUnkOuter, 
                                             REFIID riid, LPVOID *ppv) {
    MyIInputMethod *pMyIM;
    HRESULT hr;

    if (pUnkOuter)
        return (CLASS_E_NOAGGREGATION);

    if (IsEqualIID (riid, IID_IUnknown) || 
        IsEqualIID (riid, IID_IInputMethod)) {

        // Create file filter object.
        pMyIM = new MyIInputMethod();
        if (!pMyIM)
            return E_OUTOFMEMORY;

        // See if object exports the proper interface.
        hr = pMyIM->QueryInterface (riid, ppv);
        // This will cause an obj delete unless interface found.
        pMyIM->Release ();
        return hr;
    } 
    return E_NOINTERFACE;
}

//**********************************************************************
// MyIInputMethod Object implementation
//----------------------------------------------------------------------
// Object constructor
MyIInputMethod::MyIInputMethod () {

    m_lRef = 1;     //Set reference count to 1 on create.
    g_DllCnt++;
    return;
}
//----------------------------------------------------------------------
// Object destructor
MyIInputMethod::~MyIInputMethod () {
    g_DllCnt--;
    return;
}
//----------------------------------------------------------------------
// QueryInterface - Called to see what interfaces this object supports
STDMETHODIMP MyIInputMethod::QueryInterface (THIS_ REFIID riid, 
                                             LPVOID *ppv) {

    // If caller wants our IUnknown or IID_ICeFileFilter object, 
    // return a pointer to the object.
    if (IsEqualIID (riid, IID_IUnknown) || 
        IsEqualIID (riid, IID_IInputMethod)){

        // Return pointer to object.
        *ppv = (IInputMethod *)this;
        AddRef();                // Inc ref to prevent delete on return.
        return NOERROR;
    }
    *ppv = NULL;
    return (E_NOINTERFACE);
}
//----------------------------------------------------------------------
// AddRef - Increment object reference count.
STDMETHODIMP_(ULONG) MyIInputMethod::AddRef (THIS) {
    ULONG cnt;

    cnt = (ULONG)InterlockedIncrement (&m_lRef);
    return cnt;
}
//----------------------------------------------------------------------
// Release - Decrement object reference count.
STDMETHODIMP_(ULONG) MyIInputMethod::Release (THIS) {
    ULONG cnt;

    cnt = (ULONG)InterlockedDecrement (&m_lRef);
    if (cnt == 0) {
        delete this;
        return 0;
    }
    return cnt;
}
//----------------------------------------------------------------------
// Select - The IM has just been loaded into memory.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::Select (HWND hwndSip) {
    RECT rect;
    WNDCLASS wc;
    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, TEXT ("NarrowBmp"));
    hbmpMask = LoadBitmap (hInst, TEXT ("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, TEXT ("WideBmp"));
    hbmpMask = LoadBitmap (hInst, TEXT ("WideMask"));
    ImageList_Add (m_himlWide, hBmp, hbmpMask);
    DeleteObject (hBmp);
    DeleteObject (hbmpMask);

    // Register SIP window class.
    memset (&wc, 0, sizeof (wc));
    wc.style = CS_DBLCLKS;
    wc.lpfnWndProc = NPWndProc;               // Callback function
    wc.hInstance = hInst;                     // Owner handle
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszClassName = MYSIPCLS;              // Window class name
    if (RegisterClass (&wc) == 0) return E_FAIL;

    // Create SIP window.  
    GetClientRect (hwndSip, &rect);
    m_hwndMyWnd = CreateWindowEx (0, MYSIPCLS, TEXT (""), 
                  WS_VISIBLE | WS_CHILD | WS_BORDER, rect.left, 
                  rect.top, rect.right - rect.left, 
                  rect.bottom - rect.top, hwndSip, (HMENU)IDC_SIP, 
                  hInst, 0);
    if (!IsWindow (m_hwndMyWnd))
        return E_FAIL;

    return S_OK;
}
//----------------------------------------------------------------------
// Deselect - The IM is about to be unloaded.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::Deselect (void) {

    // Clean up since we're about to be unloaded.
    DestroyWindow (m_hwndMyWnd);
    UnregisterClass (MYSIPCLS, hInst);
    ImageList_Destroy (m_himlNarrow);
    ImageList_Destroy (m_himlWide);
    return S_OK;
}
//----------------------------------------------------------------------
// Showing - The IM is about to be made visible.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::Showing (void) {
    return S_OK;
}
//----------------------------------------------------------------------
// Hiding - The IM is about to be hidden.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::Hiding (void) {
    return S_OK;
}
//----------------------------------------------------------------------
// GetInfo - The SIP wants info from the IM.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::GetInfo (
                                              IMINFO __RPC_FAR *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 = 0;
    pimi->rcSipRect.top = 0;
    pimi->rcSipRect.right = FLOATWIDTH;
    pimi->rcSipRect.bottom = FLOATHEIGHT;
    SendMessage (m_hwndMyWnd, MYMSG_METHCALL, 1, (LPARAM) pimi);
    return S_OK;
}
//----------------------------------------------------------------------
// ReceiveSipInfo - The SIP is passing info to the IM.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::ReceiveSipInfo (
                                               SIPINFO __RPC_FAR *psi) {
    // Pass the SIP info data to the window.
    SendMessage (m_hwndMyWnd, MYMSG_METHCALL, 2, (LPARAM) psi);
    return S_OK;
}
//----------------------------------------------------------------------
// RegisterCallback - The SIP is providing the IM with the pointer to 
// the IIMCallback interface.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::RegisterCallback (
                                  IIMCallback __RPC_FAR *lpIMCallback) {
    m_pIMCallback = lpIMCallback;
    PostMessage (m_hwndMyWnd, MYMSG_METHCALL, 0, (LPARAM)m_pIMCallback);
    return S_OK;
}
//----------------------------------------------------------------------
// GetImData - An application is passing IM-specfic data to the IM.
// 
HRESULT STDMETHODCALLTYPE MyIInputMethod::GetImData (DWORD dwSize,
                                                     LPVOID pvImData) {
    return E_FAIL;
}
//----------------------------------------------------------------------
// SetImData - An application is querying IM-specfic data from the IM.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::SetImData (DWORD dwSize, 
                                                     LPVOID pvImData) {
    return S_OK;
}
//----------------------------------------------------------------------
// UserOptionsDlg - The SIP control panel applet is asking for a 
// configuration dialog box to be displayed.
//
HRESULT STDMETHODCALLTYPE MyIInputMethod::UserOptionsDlg (
                                                     HWND hwndParent) {
    MessageBox (hwndParent, TEXT ("UserOptionsDlg called."),
                TEXT ("NumPanel"), MB_OK);
    return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲乱码国产乱码精品精的特点 | 一本久久综合亚洲鲁鲁五月天| 欧美视频一区二区三区四区| 成人永久看片免费视频天堂| 国产综合久久久久久鬼色| 经典三级在线一区| 麻豆免费看一区二区三区| 久久成人久久爱| 处破女av一区二区| 色婷婷久久一区二区三区麻豆| 亚洲成人免费视| 日韩不卡在线观看日韩不卡视频| 欧美日本乱大交xxxxx| 欧美日韩午夜在线视频| 日韩一区二区三区电影在线观看| 国产成人在线视频网站| 国产精品一品二品| 99久久久久久99| 精品视频1区2区| 日韩欧美国产综合| 国产精品久久影院| 亚洲一级二级在线| 久久国产夜色精品鲁鲁99| 激情成人午夜视频| av综合在线播放| 欧美日本高清视频在线观看| 精品日韩99亚洲| 亚洲欧洲日本在线| 午夜精品一区二区三区免费视频 | 久久综合色婷婷| 国产精品网站在线播放| 亚洲欧美另类图片小说| 亚洲精品中文在线影院| 久久99精品久久久久婷婷| jizzjizzjizz欧美| 欧美一区在线视频| 国产精品久久久久天堂| 日韩1区2区3区| 99热精品国产| 欧美精品一区二区三区久久久| 欧美四级电影在线观看| 久久久五月婷婷| 丝袜a∨在线一区二区三区不卡| 国产欧美一二三区| 亚洲精品国久久99热| 久热成人在线视频| 日本精品裸体写真集在线观看| 成人涩涩免费视频| 日韩美一区二区三区| 亚洲一区二区三区四区在线观看 | 久久理论电影网| 亚洲电影激情视频网站| 不卡高清视频专区| 欧美变态tickle挠乳网站| 亚洲精品免费看| 日韩电影网1区2区| 91免费观看视频| 欧美激情一区不卡| 久久精品国产**网站演员| 91极品视觉盛宴| 中文字幕一区av| 国产精品自在在线| 精品伦理精品一区| 偷拍亚洲欧洲综合| 在线视频国内一区二区| 国产精品成人一区二区艾草| 国产91精品一区二区麻豆网站| 国产永久精品大片wwwapp| 欧美一级欧美三级| 亚洲va欧美va人人爽| 欧美日韩精品是欧美日韩精品| 日本高清不卡在线观看| 中文字幕一区二区三区四区不卡| 国产精品天天看| 国产一区二区三区久久久| 日韩精品一区在线| 麻豆91精品91久久久的内涵| 欧美一区二区精美| 美女尤物国产一区| 精品欧美乱码久久久久久1区2区| 精品国产三级电影在线观看| 日韩av电影免费观看高清完整版在线观看 | 欧美日韩在线免费视频| 亚洲六月丁香色婷婷综合久久 | 视频在线观看一区二区三区| 色婷婷久久久综合中文字幕| 有码一区二区三区| 欧美午夜精品久久久久久超碰| 日韩欧美成人一区| 国内精品国产成人国产三级粉色| av中文一区二区三区| 成人欧美一区二区三区小说| www.亚洲免费av| 又紧又大又爽精品一区二区| 欧美三级在线看| 免费精品视频最新在线| 久久精品一区二区三区不卡| 成人av中文字幕| 亚洲国产va精品久久久不卡综合 | 成人综合婷婷国产精品久久蜜臀| 色综合久久久久综合体桃花网| 欧美日韩免费视频| 久久99精品国产| 亚洲男同1069视频| 91国产精品成人| 韩国成人精品a∨在线观看| 国产蜜臀97一区二区三区| 欧美在线观看一区二区| 精品一区二区在线免费观看| 国产精品无遮挡| 欧美一区二区三区在线观看| 国产99久久久精品| 香蕉加勒比综合久久| 久久精品日产第一区二区三区高清版 | 国产一区二区三区四| 中文字幕一区二区三| 欧美一区二区三区日韩视频| 高清国产一区二区| 日韩在线观看一区二区| 久久久久久亚洲综合影院红桃| 石原莉奈在线亚洲二区| 国产精品网站在线| 91精品国产综合久久久蜜臀粉嫩| 一二三四社区欧美黄| 欧美国产精品一区二区| 91精品一区二区三区久久久久久| 亚洲精品国产成人久久av盗摄| 高清不卡一二三区| 久色婷婷小香蕉久久| 亚洲成人手机在线| 亚洲欧洲精品一区二区精品久久久| 国产成人免费在线| 蜜臀av性久久久久av蜜臀妖精 | 热久久免费视频| 悠悠色在线精品| 精品国产乱码久久久久久夜甘婷婷 | 国产午夜精品久久久久久免费视| 日韩成人精品视频| 亚洲国产精品天堂| 《视频一区视频二区| 国产亚洲精品bt天堂精选| 欧美zozo另类异族| 欧美videofree性高清杂交| 91精品国产欧美一区二区成人| 日日夜夜免费精品视频| 亚洲精品一二三区| 亚洲人成网站在线| 中文字幕在线不卡视频| 久久久影视传媒| 久久日一线二线三线suv| 日韩片之四级片| 91精品国产综合久久精品图片 | 亚洲图片欧美视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产成人自拍网| 国产高清久久久久| 国产**成人网毛片九色 | 国产精品你懂的| 日本一区二区三区高清不卡| 久久免费电影网| 国产精品欧美久久久久一区二区| 972aa.com艺术欧美| 91色九色蝌蚪| 在线亚洲一区观看| 91女厕偷拍女厕偷拍高清| 91麻豆国产在线观看| 91麻豆国产香蕉久久精品| 在线观看网站黄不卡| 777久久久精品| 精品免费国产一区二区三区四区| 99精品久久只有精品| 色久综合一二码| 欧美伦理视频网站| 欧美r级电影在线观看| 久久久精品人体av艺术| 亚洲欧美综合另类在线卡通| 一区二区在线观看av| 婷婷综合久久一区二区三区| 麻豆91精品视频| 99久久精品情趣| 欧美日韩一区二区在线观看视频 | a亚洲天堂av| 欧美日韩aaaaaa| 久久久久久毛片| 一区二区三区资源| 美腿丝袜一区二区三区| 成人aa视频在线观看| 欧美久久婷婷综合色| 久久久噜噜噜久久人人看| 亚洲综合久久久久| 精品一区二区三区蜜桃| 成人免费黄色大片| 欧美日韩aaaaaa| 国产精品情趣视频| 日韩精品一二三区| 99综合电影在线视频| 日韩午夜激情av| 亚洲精品国产a| 成人一道本在线| 91麻豆精品91久久久久同性|