使用快捷键更改语言时,VC ++应用程序挂起(左ALT + SHIFT) [英] VC++ application hangs while changing language using short cut keys (Left ALT + SHIFT)

查看:130
本文介绍了使用快捷键更改语言时,VC ++应用程序挂起(左ALT + SHIFT)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好

我们有一个在Windows XP中运行的Visual C ++应用程序.我们的申请将变为不响应".
更改XP语言(使用快捷键Left ALT + SHIFT) span>

在VS2008中调试应用程序时,我发现该控件未从
返回,如下所示MFC代码

LRESULT CWnd :: DefWindowProc(UINT nMsg,WPARAM wParam,LPARAM lParam)
{
if(m_pfnSuper!= NULL)
return :: CallWindowProc(m_pfnSuper,m_hWnd,nMsg,wParam,lParam);

观看信息
---------------- -------------
m_pfnSuper 0x7e43b3ec _EditWndProcA @ 16 long(HWND__ *,unsigned int,unsigned int,long)*
nMsg 80 ms unsigned int 1 unsigned int
lParam 135464979 long

完整调用堆栈信息
- ------------------------------------------

ntdll.dll!_KiFastSystemCallRet@0()
user32.dll!_NtUserMessageCall@28()+ 0xc字节
user32.dll!_EditWndProcA@16()+ 0xd5字节_call 32位. @ 20()+ 0x28字节
user32.dll!_UserCallWinProcCheckWow@32()+ 0xb7字节
user32.dll!_CallWindowProcAorW@24()+ 0x51字节+ ProWindowA @ 20 Window32 ()+ 0x1b字节
> mfc90d.dll!CWnd :: DefWindowProcA(unsigned int nMsg = 80,unsigned int wParam = 1,long lParam = 135464979)第1043行+ 0x20字节C ++
mfc90d.dll!CWnd :: WindowProc(unsigned int message = 80 ,unsigned int wParam = 1,long lParam = 135464979)行1756 + 0x1c字节C ++
mfc90d.dll!AfxCallWndProc(CWnd * pWnd = 0x04c17f38,HWND__ * hWnd = 0x00281598,unsigned int nMsg = 1,长lParam = 135464979)240行+ 0x1c字节C ++
mfc90d.dll!AfxWndProc(HWND__ * hWnd = 0x00281598,unsigned int nMsg = 80,unsigned int wParam = 1,long lParam = 135464979)<403行br/> mfc90d.dll!AfxWndProcBase(HWND__ * hWnd = 0x00281598,unsigned int nMsg = 80,unsigned int wParam = 1,long lParam = 135464979)行441 + 0x15字节C ++ )+ 0x28字节
user32.dll!_UserCallWinProcCheckWow@32()+ 0xb7字节
user32.dll!_DispatchMessageWorker@8()+ 0xdc字节
消息user32.dll!(4) + 0xf字节
mfc90d.dll!AfxInternalPumpMessage()第183行C ++
mfc90d.dll!CWinThread :: PumpMessage()第900行C ++
mfc90d.dll!)(CWinThread :) + 0xd字节的C ++
mfc90d.dll!CWinApp :: Run()行865 C ++
mfc90d.dll!AfxWinMain(HINSTANCE__ * hInstance = 0x00400000,HINSTANCE__ * hPrevInstance = 0x00000000,charLine * lp nCmdShow = 1)第47行+ 0xd字节C ++
OurApplication.exe!WinMain(HINSTANCE__ * hInstance = 0x00400000,HINSTANCE__ * hPrevInstance = 0x00000000,char * lpCmdLine = 0x00151f02,int nCmdShow = 1)第34行C ++
OurApplication.exe!__ tmainCRTStartup()第578行+ 0x35字节C
OurApplication.exe!WinMainCRTStartup()第403行C
kernel32.dll!_BaseProcessStart@4()+ 0x23字节

>
请帮助!
预先感谢
Harikrishnan

Hello

We have a Visual C++ application running in Windows XP. Our application will be become "Not Responding" on typing some characters in the dialog edit control and by simulatenously
changing the XP language(using shortcut key Left ALT + SHIFT)

On debugging the application in VS2008 i could found that the control is not returning from
following MFC code

LRESULT CWnd::DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam)
{
    if (m_pfnSuper != NULL)
 --->    return ::CallWindowProc(m_pfnSuper, m_hWnd, nMsg, wParam, lParam);

Watch information
-----------------------------
        m_pfnSuper    0x7e43b3ec _EditWndProcA@16    long (HWND__ *, unsigned int, unsigned int, long)*
        nMsg    80    unsigned int
        wParam    1    unsigned int
        lParam    135464979    long

Full Call stack information
--------------------------------------------

          ntdll.dll!_KiFastSystemCallRet@0()    
     user32.dll!_NtUserMessageCall@28()  + 0xc bytes   
     user32.dll!_EditWndProcA@16()  + 0xd5 bytes   
     user32.dll!_InternalCallWinProc@20()  + 0x28 bytes   
     user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
     user32.dll!_CallWindowProcAorW@24()  + 0x51 bytes   
     user32.dll!_CallWindowProcA@20()  + 0x1b bytes   
>    mfc90d.dll!CWnd::DefWindowProcA(unsigned int nMsg=80, unsigned int wParam=1, long lParam=135464979)  Line 1043 + 0x20 bytes    C++
     mfc90d.dll!CWnd::WindowProc(unsigned int message=80, unsigned int wParam=1, long lParam=135464979)  Line 1756 + 0x1c bytes    C++
     mfc90d.dll!AfxCallWndProc(CWnd * pWnd=0x04c17f38, HWND__ * hWnd=0x00281598, unsigned int nMsg=80, unsigned int wParam=1, long lParam=135464979)  Line 240 + 0x1c bytes    C++
     mfc90d.dll!AfxWndProc(HWND__ * hWnd=0x00281598, unsigned int nMsg=80, unsigned int wParam=1, long lParam=135464979)  Line 403    C++
     mfc90d.dll!AfxWndProcBase(HWND__ * hWnd=0x00281598, unsigned int nMsg=80, unsigned int wParam=1, long lParam=135464979)  Line 441 + 0x15 bytes    C++
     user32.dll!_InternalCallWinProc@20()  + 0x28 bytes   
     user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes   
     user32.dll!_DispatchMessageWorker@8()  + 0xdc bytes   
     user32.dll!_DispatchMessageA@4()  + 0xf bytes   
     mfc90d.dll!AfxInternalPumpMessage()  Line 183    C++
     mfc90d.dll!CWinThread::PumpMessage()  Line 900    C++
     mfc90d.dll!CWinThread::Run()  Line 629 + 0xd bytes    C++
     mfc90d.dll!CWinApp::Run()  Line 865    C++
     mfc90d.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f02, int nCmdShow=1)  Line 47 + 0xd bytes    C++
     OurApplication.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f02, int nCmdShow=1)  Line 34    C++
     OurApplication.exe!__tmainCRTStartup()  Line 578 + 0x35 bytes    C
     OurApplication.exe!WinMainCRTStartup()  Line 403    C
     kernel32.dll!_BaseProcessStart@4()  + 0x23 bytes   


Please help !

Thanks in advance
Harikrishnan

推荐答案

您好,Harikrishnan

您的应用程序是多线程的吗?听起来系统正在等待WM_IME_SELECT的答复,但线程中没有用于该过程的程序.
请告诉我们有关线程的一些详细信息.

并请:
1 .鼠标更改为每种输入语言,以检查其是否仍可用.
2.检查您的应用程序,在任何地方都可以使用SendMessage在线程之间进行通信.

此致!
Hi, Harikrishnan

Is your application multi-thread?  It sounds that the system is waiting for the reply of WM_IME_SELECT but no procedure for it in the thread.
Please tell us some details about the threads.

And please:
1. Change to the each input language by mouse to check whether it still hands.
2. Check your application, is there any place use SendMessage to communicate between the threads.

Sincerely!


这篇关于使用快捷键更改语言时,VC ++应用程序挂起(左ALT + SHIFT)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆