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

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

?? editctrl.cpp

?? 一個WinCE6。0下的IP phone的源代碼
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "Edit.hpp"
#include <winuserm.h>
#include "Input.hpp"
#include "Common.hpp"
#include "Debug.hpp"


/*------------------------------------------------------------------------------
    EditImpl_t::EditImpl_t

    Constructor
------------------------------------------------------------------------------*/
EditImpl_t::EditImpl_t(
    )
{
    TRACE(ZONE_COMMON_CTOR);
}

/*------------------------------------------------------------------------------
    EditImpl_t::~EditImpl_t

    Destructor
------------------------------------------------------------------------------*/
EditImpl_t::~EditImpl_t(
    )
{
    TRACE(ZONE_COMMON_CTOR);
}

/*------------------------------------------------------------------------------
    EditImpl_t::ControlWindowProc

    Handle messages
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::ControlWindowProc(
    UINT Message,
    WPARAM wParam,
    LPARAM lParam,
    bool& Handled
    )
{
    LRESULT Result;

    //by default assume we handled the message
    Handled = true;

    switch (Message)
    {
    case EM_SETINPUTMODE:
        return OnSetInputMode(wParam, lParam);

    case WM_CHAR:
        return OnChar(wParam, lParam);

    case WM_CREATE:
        return OnCreate(reinterpret_cast<CREATESTRUCT*>(lParam));

    case WM_KEYDOWN:
        return OnKeydown(wParam, lParam);

    case WM_KILLFOCUS:
        return OnKillFocus(wParam, lParam);

    case WM_SETFOCUS:
        return OnSetFocus(wParam, lParam);

    case WM_CLOSE:
        Handled = ForwardMessageToParent(Message, wParam, lParam, &Result);
        return Result;

    case WM_COMMON_GETCALLBACK_PTR:
        return OnGetCallback();

    case WM_COMMON_SETCALLBACK_PTR:
        return OnSetCallback(lParam);

    default:
        Handled = false;
        return 0;
    }
}

bool
EditImpl_t::IsDialPad(
    )
{
    return (GetWindowLong(m_hwnd, GWL_STYLE) & VES_DIALPAD) ? true : false;
}

/*------------------------------------------------------------------------------
    EditImpl_t::OnSetCallback

    Handles VMSG_PTR_SETCALLBACK

    Sets a parent defined identifier with which we pass back to the parent
    on notification events
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnSetCallback(
    LPARAM lParam
    )
{
    m_pCallback = (INT_PTR)lParam;

    return S_OK;
}

/*------------------------------------------------------------------------------
    EditImpl_t::OnGetCallback

    Handles VMSG_PTR_GETCALLBACK

    Gets a parent defined identifier with which we pass back to the parent
    on notification events
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnGetCallback(
    )
{
    return (LRESULT)m_pCallback;
}

/*------------------------------------------------------------------------------
    EditImpl_t::OnCreate

    Handles WM_CREATE
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnCreate(
    CREATESTRUCT* pCreateStruct
    )
{
    m_InputMode  = (pCreateStruct) ?
        reinterpret_cast<UINT>(pCreateStruct->lpCreateParams) :
        EIM_NUMBERS;

    m_IsFirstTime = true;

    return 0;
}


/*------------------------------------------------------------------------------
    EditImpl_t::OnKillFocus

    Handles WM_KILLFOCUS

    Force redraw, and arbitrarily hide the Sip panel
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnKillFocus(
    WPARAM wParam,
    LPARAM lParam
    )
{
    HWND NewFocus = reinterpret_cast<HWND>(wParam);

    //force redraw
    InvalidateRect(m_hwnd, NULL, TRUE);
    UpdateWindow(m_hwnd);

    if (NewFocus != NULL)
    {
        // Get the type of the control which will get the focus
        CommonUtilities_t::ControlType_e Type =
            CommonUtilities_t::GetControlType(NewFocus);

        switch (Type)
        {
        case CommonUtilities_t::ControlTypeMenuButton:
            goto exit;

        case CommonUtilities_t::ControlTypeEdit:
            if (!(GetWindowLong(NewFocus, GWL_STYLE) & (ES_NUMBER | ES_READONLY)))
            {
                goto exit;
            }
            break;
        }
    }

    Input_HandleEvent(
        Input_t::ieEditControlLostFocus,
        reinterpret_cast<Input_t::IPARAM>(m_hwnd)
        );

exit:
    return DefWindowProc(WM_KILLFOCUS, wParam, lParam);
}


/*------------------------------------------------------------------------------
    EditImpl_t::OnSetFocus

    Handles WM_SETFOCUS
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnSetFocus(
    WPARAM wParam,
    LPARAM lParam
    )
{
    LRESULT Result = 0;

    if (IsDialPad())
    {
        SetNumbersOnly(true);
    }

    if (!(GetWindowLong(m_hwnd, GWL_STYLE) & (ES_NUMBER | ES_READONLY)))
    {
        SendMessage(
            m_hwnd,
            EM_SETINPUTMODE,
            0,
            (LPARAM)m_InputMode
            );
    }

    //force redraw
    InvalidateRect(m_hwnd, NULL, TRUE);
    UpdateWindow(m_hwnd);

    Result = DefWindowProc(WM_SETFOCUS, wParam, lParam);

    // If it is the first time got focus, always put caret to the END of the edit box
    // otherwise, stay wherever it used to be
    if (m_IsFirstTime)
    {
        DefWindowProc(WM_KEYDOWN, (WPARAM)VK_END, 0);
        m_IsFirstTime = false;
    }

    Input_HandleEvent(
        Input_t::ieEditControlGainFocus,
        reinterpret_cast<Input_t::IPARAM>(m_hwnd)
        );

    NotifyParent(VNM_SETFOCUS);

    return Result;
}

LRESULT
EditImpl_t::OnSetInputMode(
    WPARAM wParam,
    LPARAM lParam
    )
{
    m_InputMode = static_cast<UINT>(lParam);
    return DefWindowProc(EM_SETINPUTMODE, wParam, lParam);
}

/*------------------------------------------------------------------------------
    EditImpl_t::OnKeyDown

    Handles WM_KEYDOWN

    Notifies the parent window that KEYDOWN was processed
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnKeydown(
    WPARAM wParam,
    LPARAM lParam
    )
{
    int keycode = static_cast<int>(wParam);
    LRESULT Result = 0;

//    if (!Input_ShouldDispatchKey(keycode))
//    {
//        return Result;
//    }

    switch (keycode)
    {
    case VK_UP:
    case VK_DOWN:
        ForwardMessageToParent(WM_KEYDOWN, wParam, lParam);
        break;

    default:
        return DefWindowProc(WM_KEYDOWN, wParam, lParam);
    }

    return Result;
}

/*------------------------------------------------------------------------------
    EditImpl_t::OnChar

    Handles WM_CHAR

    Notifies our parent when we handle a char. Instead of relying on EN_UPDATE
    we specifically send a ctrl notify message to our parent, since we assume all of our
    parent don't handle CHAR's other than as reporting mechanisms
------------------------------------------------------------------------------*/
LRESULT
EditImpl_t::OnChar(
    WPARAM wParam,
    LPARAM lParam
    )
{
    if (IsDialPad())
    {
        if ((wParam < L'0' || wParam > L'9') &&
            (wParam != L'*') &&
            (wParam != L'#') &&
            (wParam != L'\b'))
        {
            return 0;
        }
    }

    LRESULT Result = DefWindowProc(WM_CHAR, wParam, lParam);

    // Notify parent of an update to the control
    NotifyParent(EN_UPDATE);

    return Result;
}

bool
EditImpl_t::SetNumbersOnly(
    bool Enable
    )
{
    DWORD Style = GetWindowLong(m_hwnd, GWL_STYLE);

    if (Enable)
    {
        Style |= ES_NUMBER;
    }
    else
    {
        Style &= ~ES_NUMBER;
    }

    return (SetWindowLong(m_hwnd, GWL_STYLE, Style) != 0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人在线综合网| 99久久国产综合精品女不卡| 一区二区三区四区视频精品免费 | 久久精品一区二区三区不卡| 精品福利视频一区二区三区| 欧美大片一区二区| 久久久精品免费网站| 国产色婷婷亚洲99精品小说| 欧美国产精品中文字幕| 亚洲精品福利视频网站| 久久精品噜噜噜成人88aⅴ | 欧美一区二区三区四区在线观看| 91麻豆精品国产| 亚洲精品一区二区三区福利| 欧美激情资源网| 日韩福利视频网| 国产美女精品人人做人人爽| av激情成人网| www成人在线观看| 日韩理论片一区二区| 久久不见久久见中文字幕免费| 国产成人精品免费网站| 精品污污网站免费看| 国产精品久久午夜| 极品销魂美女一区二区三区| 色婷婷综合激情| 中文字幕精品一区二区三区精品| 天天综合网 天天综合色| 成人ar影院免费观看视频| 日韩欧美久久一区| 日韩高清不卡在线| 日本久久一区二区三区| 中文字幕精品一区二区精品绿巨人 | 久久精品视频在线看| 午夜激情久久久| 91精品欧美福利在线观看| 亚洲一区精品在线| 欧美亚洲高清一区| 亚洲精品v日韩精品| 91久久线看在观草草青青| 中文字幕在线观看一区二区| 国产成人精品网址| 亚洲日本va在线观看| 欧美tk—视频vk| 国产1区2区3区精品美女| 国产精品亲子伦对白| 成人免费毛片app| 亚洲综合色成人| 欧美高清dvd| 国产精品99久久久久久久vr| 国产精品日韩精品欧美在线| 91免费小视频| 蜜桃一区二区三区四区| 日本一区二区电影| 在线一区二区三区四区五区 | 欧美变态凌虐bdsm| 国产不卡高清在线观看视频| 中文字幕中文乱码欧美一区二区| 99国产精品久久久久| 免费精品视频最新在线| 中文字幕欧美日韩一区| 欧美精品自拍偷拍| 国产不卡在线播放| 蜜臀av性久久久久蜜臀aⅴ | 国产成人午夜精品影院观看视频| 亚洲欧美一区二区视频| 26uuu亚洲婷婷狠狠天堂| 一本大道av一区二区在线播放| 日本成人中文字幕在线视频| 亚洲精品高清视频在线观看| 欧美成人女星排名| 欧美日韩一二区| 91老司机福利 在线| 国产精品系列在线观看| 激情五月激情综合网| 日韩激情视频网站| 亚洲精选一二三| 亚洲精品中文在线观看| 国产欧美日韩视频一区二区| 精品日韩在线一区| 久久女同互慰一区二区三区| 欧美一级理论片| 欧美一级片免费看| 欧美一级片在线看| 日韩精品在线一区| 精品国产乱码久久久久久久久| 欧美精品高清视频| 日韩一级完整毛片| 精品蜜桃在线看| 精品国产99国产精品| 精品欧美一区二区三区精品久久| 欧美一区二区三区免费大片 | 亚洲国产精品影院| 欧美aaa在线| 丁香桃色午夜亚洲一区二区三区| 国产成人在线免费| 91在线国产福利| 91精品国产91久久综合桃花| 国产精品久久午夜| 国产欧美一区二区精品性色超碰 | 国产三级欧美三级日产三级99 | 国产精品一区在线观看你懂的| 国产精品99久久久久久宅男| 99久久99精品久久久久久| 在线观看一区二区精品视频| 欧美一区二区三区色| 中文字幕免费不卡在线| 日韩福利电影在线| 97se亚洲国产综合自在线观| 日韩一区二区三区在线视频| 亚洲三级理论片| 国产乱子伦视频一区二区三区| 91免费观看国产| 成人激情电影免费在线观看| 成人看片黄a免费看在线| www.亚洲在线| 国产精品一二三区在线| 国产麻豆日韩欧美久久| 成人免费视频app| 色综合久久中文字幕| 日韩免费电影网站| www国产成人| 另类人妖一区二区av| 91免费观看在线| 精品国产乱码久久久久久影片| 亚洲日本中文字幕区| 国产乱人伦偷精品视频不卡| 欧美久久高跟鞋激| 亚洲图片激情小说| 99在线精品观看| 国产精品丝袜久久久久久app| 午夜精品福利在线| 91精品国产综合久久福利软件 | 日韩欧美一级特黄在线播放| 亚洲一区二区三区视频在线 | 久久综合五月天婷婷伊人| 天堂成人免费av电影一区| 正在播放一区二区| 日韩在线观看一区二区| 91精品国产一区二区三区| 五月天亚洲精品| 欧美tk—视频vk| 国精产品一区一区三区mba视频 | 国产精品入口麻豆九色| 成人久久视频在线观看| 中文字幕综合网| 欧美日韩国产综合一区二区三区 | 久久精品国产亚洲高清剧情介绍 | 欧美国产日韩在线观看| 成人免费av在线| 中文字幕一区av| 欧美视频一区二区| 国产在线精品一区二区夜色 | 亚洲国产精品综合小说图片区| 欧美最新大片在线看| 美国一区二区三区在线播放| 欧美韩日一区二区三区四区| 99精品欧美一区二区三区小说 | 国产成人av一区二区三区在线 | 国产一区二区不卡在线 | 99视频精品在线| 麻豆精品在线观看| 亚洲制服丝袜av| wwww国产精品欧美| 欧美视频第二页| 91麻豆国产自产在线观看| 亚洲成av人影院在线观看网| 国产精品久久看| 日韩欧美久久久| 欧美日韩电影在线播放| 91在线码无精品| 91在线视频观看| 国产成人免费高清| 国产麻豆精品一区二区| 蜜臀久久99精品久久久久宅男 | 免费高清在线一区| 美女免费视频一区二区| 亚洲综合丝袜美腿| 亚洲色图欧洲色图| 国产精品三级在线观看| 国产精品成人一区二区三区夜夜夜 | 久久99深爱久久99精品| 日韩精品乱码免费| 精品一区二区三区影院在线午夜| 婷婷开心久久网| 免费一级片91| 久久99精品国产91久久来源| 国内精品写真在线观看| 99riav久久精品riav| 99热国产精品| 91免费版在线| 欧美日韩精品福利| 久久综合av免费| 一区二区三区在线视频观看58| 亚洲国产成人91porn| 美女精品自拍一二三四| 色综合久久中文综合久久97| 日韩一级完整毛片| 国产精品人成在线观看免费| 国产精品国产精品国产专区不片|