示例#1
0
//--------------------------------------------------------------------------------------
_Use_decl_annotations_
DXUTAPI bool CDXUTIMEEditBox::MsgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (!m_bEnabled || !m_bVisible)
		return false;

#if defined(DEBUG) || defined(_DEBUG)
	// DXUT.cpp used to call CDXUTIMEEditBox::StaticMsgProc() so that, but now
	// this is the application's responsiblity.  To do this, call
	// CDXUTDialogResourceManager::MsgProc() before calling this function.
	assert( m_bIMEStaticMsgProcCalled && L"To fix, call CDXUTDialogResourceManager::MsgProc() first" );
#endif
	switch (uMsg)
	{
	case WM_DESTROY:
		ImeUi_Uninitialize();
		break;
	}

	bool trappedData;
	bool* trapped = &trappedData;

	*trapped = false;
	if (!ImeUi_IsEnabled())
		return CDXUTEditBox::MsgProc(uMsg, wParam, lParam);

	ImeUi_ProcessMessage(DXUTGetHWND(), uMsg, wParam, lParam, trapped);
	if (*trapped == false)
		CDXUTEditBox::MsgProc(uMsg, wParam, lParam);

	return *trapped;
}
示例#2
0
//--------------------------------------------------------------------------------------
_Use_decl_annotations_
DXUTAPI bool CDXUTIMEEditBox::StaticMsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(hWnd);
	UNREFERENCED_PARAMETER(wParam);

	if (!ImeUi_IsEnabled())
		return false;

#if defined(DEBUG) || defined(_DEBUG)
	m_bIMEStaticMsgProcCalled = true;
#endif

	switch (uMsg)
	{
	case WM_INPUTLANGCHANGE:
		DXUTTRACE(L"WM_INPUTLANGCHANGE\n");
		{
		}
		return true;

	case WM_IME_SETCONTEXT:
		DXUTTRACE(L"WM_IME_SETCONTEXT\n");
		//
		// We don't want anything to display, so we have to clear this
		//
		lParam = 0;
		return false;

		// Handle WM_IME_STARTCOMPOSITION here since
		// we do not want the default IME handler to see
		// this when our fullscreen app is running.
	case WM_IME_STARTCOMPOSITION:
		DXUTTRACE(L"WM_IME_STARTCOMPOSITION\n");
		ResetCompositionString();
		// Since the composition string has its own caret, we don't render
		// the edit control's own caret to avoid double carets on screen.
		s_bHideCaret = true;
		return true;
	case WM_IME_ENDCOMPOSITION:
		DXUTTRACE(L"WM_IME_ENDCOMPOSITION\n");
		s_bHideCaret = false;
		return false;
	case WM_IME_COMPOSITION:
		DXUTTRACE(L"WM_IME_COMPOSITION\n");
		return false;
	}

	return false;
}
示例#3
0
//--------------------------------------------------------------------------------------
void CDXUTIMEEditBox::RenderIndicator( float fElapsedTime )
{
    CDXUTElement* pElement = m_Elements.GetAt( 9 );
    pElement->TextureColor.Blend( DXUT_STATE_NORMAL, fElapsedTime );

    m_pDialog->DrawSprite( pElement, &m_rcIndicator, DXUT_NEAR_BUTTON_DEPTH );
    RECT rc = m_rcIndicator;
    InflateRect( &rc, -m_nSpacing, -m_nSpacing );

    pElement->FontColor.Current = m_IndicatorImeColor;
    RECT rcCalc = { 0, 0, 0, 0 };
    // If IME system is off, draw English indicator.
    WCHAR* pwszIndicator = ImeUi_IsEnabled() ? ImeUi_GetIndicatior() : L"En";

    m_pDialog->CalcTextRect( pwszIndicator, pElement, &rcCalc );
    m_pDialog->DrawText( pwszIndicator, pElement, &rc );
}