设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
richedit控件在win10下获得焦点的时候会假死10几秒? ...
返回列表
发新帖
richedit控件在win10下获得焦点的时候会假死10几秒?
[复制链接]
11
|
8
|
2021-1-27 05:14:18
|
显示全部楼层
|
阅读模式
我用mfc写了一个richedit类,是从CRichEditCtrl继承来的,代码很简单,生成dll给exe调用。
测试发现:
1.在win8,win10,windows2012,windows2016上,只要第一次在richedit的框里点一下鼠标,整个窗口就会假死10多秒,没有响应,然后就正常了。
2.winxpwin7win2003win2008下怎么点击都正常。
3.把CTraceServiceControl类直接写到exe里面调用,一切正常。
监视richedit的消息,点击后,会收到MSIMEQueryPosition(行号000236),这里要卡很久,然后才是000237,应该是和输入法有关,请问谁有办法解决吗?感谢大家
代码下载:http://9ijj.com/test.zip
结果如下:
00311312SWM_SETCURSORhwnd:00311312nHittest:HTCLIENTwMouseMsg:WM_MOUSEMOVE
00311312RWM_SETCURSORfHaltProcessing:True
00311312PWM_MOUSEMOVEfwKeys:MK_LBUTTONxPos:142yPos:177
00311312PEM_SETPUNCTUATIONfType:PC_DELIMITERpunctTable:00000010
00311312SEM_GETLINECOUNT
00311312REM_GETLINECOUNTcLines:1
00311312SEM_EXGETSELlpchr:00DAB7D4
00311312REM_EXGETSEL
00311312SEM_GETTEXTLENGTHEXpgtle:00DAB7BC
00311312REM_GETTEXTLENGTHEXnLength:0
00311312SEM_EXSETSELlpchr:00DAB7BC
00311312REM_EXSETSEL
00311312SEM_SETCHARFORMATuFlags:SCF_SELECTIONlpFmt:00DAB820
00311312REM_SETCHARFORMATfSucceeded:True
00311312SEM_REPLACESELlpszReplace:00CAE328("【2016-12-1620:28:11】")
00311312REM_REPLACESEL
00311312SEM_EXGETSELlpchr:00DAB7D4
00311312REM_EXGETSEL
00311312SEM_GETTEXTLENGTHEXpgtle:00DAB7BC
00311312REM_GETTEXTLENGTHEXnLength:23
00311312SEM_EXSETSELlpchr:00DAB7BC
00311312REM_EXSETSEL
00311312SEM_SETCHARFORMATuFlags:SCF_SELECTIONlpFmt:00DAB820
00311312REM_SETCHARFORMATfSucceeded:True
00311312SEM_REPLACESELlpszReplace:00CAE348("获得焦点")
00311312REM_REPLACESEL
00311312PWM_VSCROLLnScrollCode:SB_BOTTOMhwndScrollBar:(null)
00311312PWM_VSCROLLnScrollCode:SB_BOTTOMhwndScrollBar:(null)
00311312PWM_PAINThdc:00000000
00311312Smessage:0xC055[已注册:"MSIMEQueryPosition"]wParam:00000001lParam:00DAAEE0
00311312Rmessage:0xC055[已注册:"MSIMEQueryPosition"]lResult:00000001
00311312Smessage:0xC055[已注册:"MSIMEQueryPosition"]wParam:00000001lParam:00DAAEDC
00311312Rmessage:0xC055[已注册:"MSIMEQueryPosition"]lResult:00000001
00311312SWM_IME_NOTIFYdwCommand:IMN_SETOPENSTATUSdwCommand:00000008dwData:00000000
00311312RWM_IME_NOTIFY
00311312SWM_NCHITTESTxPos:610yPos:474
00311312RWM_NCHITTESTnHittest:HTCLIENT
00311312SWM_NCHITTESTxPos:610yPos:474
00311312RWM_NCHITTESTnHittest:HTCLIENT
00311312SWM_SETCURSORhwnd:00311312nHittest:HTCLIENTwMouseMsg:WM_LBUTTONUP
00311312RWM_SETCURSORfHaltProcessing:True
00311312PWM_LBUTTONUPfwKeys:0000xPos:142yPos:177
00311312SWM_GETDLGCODE
00311312RWM_GETDLGCODEfuDlgCode:DLGC_WANTARROWS|DLGC_WANTTAB|DLGC_WANTALLKEYS|DLGC_HASSETSEL|DLGC_WANTCHARS
00311312SWM_KILLFOCUShwndGetFocus:(null)
00311312RWM_KILLFOCUS
00311312SWM_IME_SETCONTEXTfSet:0iShow:C000000F
00311312SWM_IME_NOTIFYdwCommand:IMN_CLOSESTATUSWINDOWdwCommand:00000001dwData:00000000
00311312RWM_IME_NOTIFY
00311312RWM_IME_SETCONTEXT
00311312PEM_SETPUNCTUATIONfType:PC_DELIMITERpunctTable:00000010
00311312SEM_GETLINECOUNT
00311312REM_GETLINECOUNTcLines:2
00311312SEM_EXGETSELlpchr:00DAB7D4
00311312REM_EXGETSEL
00311312SEM_GETTEXTLENGTHEXpgtle:00DAB7BC
00311312REM_GETTEXTLENGTHEXnLength:28
00311312SEM_EXSETSELlpchr:00DAB7BC
00311312REM_EXSETSEL
00311312SEM_SETCHARFORMATuFlags:SCF_SELECTIONlpFmt:00DAB820
00311312REM_SETCHARFORMATfSucceeded:True
00311312SEM_REPLACESELlpszReplace:00CAE328("【2016-12-1620:28:25】")
00311312REM_REPLACESEL
00311312SEM_EXGETSELlpchr:00DAB7D4
00311312REM_EXGETSEL
00311312SEM_GETTEXTLENGTHEXpgtle:00DAB7BC
00311312REM_GETTEXTLENGTHEXnLength:51
00311312SEM_EXSETSELlpchr:00DAB7BC
00311312REM_EXSETSEL
00311312SEM_SETCHARFORMATuFlags:SCF_SELECTIONlpFmt:00DAB820
00311312REM_SETCHARFORMATfSucceeded:True
00311312SEM_REPLACESELlpszReplace:00CAE348("失去焦点")
00311312REM_REPLACESEL
分 -->
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
卡住的时候点"暂停",然后看callstack,看卡在哪
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
没准只是因为少某个字体。我猜。
或者控件注册不对。
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
在64位Windows下:
64位exe和dll在目录c:\windows\system32目录下;
32位exe和dll在目录c:\windows\syswow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32xxxxxxx.ocx或dll
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
引用2楼赵4老师的回复:
没准只是因为少某个字体。我猜。
或者控件注册不对。
直接在exe创建一个继承类,是没问题的,所以字体,控件原因可以排除
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
win10需要打补丁?
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
引用5楼赵4老师的回复:
win10需要打补丁?
补丁最新的
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
卸载“微软拼音输入法”就好了
回复
使用道具
举报
千问
|
2021-1-27 05:14:18
|
显示全部楼层
安装其他输入法,反正不要用“微软拼音输入法”就好了
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行