【发布时间】:2012-09-21 07:06:41
【问题描述】:
MFC 应用程序需要在对话框中使用编辑 ctrl 来编辑泰米尔语。 但是我发现泰米尔语在 Windows 中没有代码页(是的,没有泰米尔语系统语言环境),而且我的情况没有 Unicode 选项。
看到某人的想法,Embedding HWND into external process using SetParent
我想创建另一个使用 UNICODE 选项构建的应用程序,将其窗口嵌入到对话框中,但失败了。 查看MSDN,SetParent需要父子窗口在一个应用中。
那么,我该如何实现呢?
@MSalters
我通过覆盖 virtual BOOL CWinThread::PumpMessage() 解决了这个问题,强制消息循环使用 W 版本 API。
BOOL CtamildlgApp::PumpMessage()
{
_AFX_THREAD_STATE *pState = AfxGetThreadState();
if ( !::GetMessageW( &( pState->m_msgCur ), NULL, NULL, NULL ) )
{
// Note: prevents calling message loop things in 'ExitInstance'
// will never be decremented
return FALSE;
}
// process this message
if ( pState->m_msgCur.message != WM_KICKIDLE )
{
::TranslateMessage( &( pState->m_msgCur ) );
::DispatchMessageW( &( pState->m_msgCur ) );
}
return TRUE;
}
然后 CreateWindowExW(... MSFTEDIT_CLASS ...)
【问题讨论】: