ON_CONTROL_REFLECT(EN_SETFOCUS, OnSetfocus)
ON_CONTROL_REFLECT(EN_KILLFOCUS, OnKillfocus)
void CMyEdit::OnSetfocus()
{
RECT rect;
GetRect( &rect );
ClientToScreen(&rect);
SIPINFO si;
si.dwImDataSize = 0;
si.cbSize = sizeof(si);
BOOL bSip = SipGetInfo(&si);
if(rect.top >= 150)
{
si.rcSipRect.top = 0;
}
else
{
si.rcSipRect.top = 195;//half of the screen
}
SipSetInfo(&si);
SipShowIM(SIPF_ON);
}
void CMyEdit::OnKillfocus()
{
SipShowIM(SIPF_OFF);
SIPINFO si;
si.dwImDataSize = 0;
si.cbSize = sizeof(si);
BOOL bSip = SipGetInfo(&si);
si.rcSipRect.top = 195;
SipSetInfo(&si);
}