社区
语言基础/算法/系统设计
帖子详情
在有线程程序中不能打开输入法
dancedance
2004-10-28 07:08:08
这个线程是无限循环读取数据,一直在工作。
我想在一个界面的文本框里输入汉字,那里知道一打开输入法整个程序就是死了,不过是微软自带的输入法还是紫光输入法。奇怪就是,我在其他地方copy汉字粘贴上去又没事。在没有打开汉字输入法而输入英文字母就没事。
如何在无限循环线程的程序的文本框内输入汉字呢?
...全文
136
6
打赏
收藏
在有线程程序中不能打开输入法
这个线程是无限循环读取数据,一直在工作。 我想在一个界面的文本框里输入汉字,那里知道一打开输入法整个程序就是死了,不过是微软自带的输入法还是紫光输入法。奇怪就是,我在其他地方copy汉字粘贴上去又没事。在没有打开汉字输入法而输入英文字母就没事。 如何在无限循环线程的程序的文本框内输入汉字呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aiirii
2004-10-29
打赏
举报
回复
看不出问题,也许要用代码实际测试下
dancedance
2004-10-29
打赏
举报
回复
我是每次都发生,没有办法打开输入法来输入汉字!郁闷
suuare
2004-10-29
打赏
举报
回复
的确! 我也遇见这个问题! 奇怪的是 这种情况不是每次都发生..... 严重关注中!
postren
2004-10-28
打赏
举报
回复
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket; //ServerType := stThreadBlocking;
Button1: TButton;
Memo1: TMemo; //在其中切换输入法就会死程序
procedure ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
procedure ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TClientThread = class(TServerClientThread)
private
FRBuf: array [0..4095] of Char;
protected
procedure ClientExecute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
Socket.Close;
end;
procedure TForm1.ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
var
A: DWORD;
begin
SocketThread := TClientThread.Create(False, ClientSocket);
A := ClientSocket.Handle; //如果没有这个语句就不会死
//(这也是我整理这段代码的时候发现的,我原来程序中是在另外的
// 一个列表中保存了该Handle的值,在此却发现只要读取了ClientSocket
// 的Handle,程序就会死掉,现象为当客户端连接到该服务器后,在Memo中
// 切换输入法,我默认的是Ctrl + Space,程序就会没有任何响应【Delphi 6/7】)
end;
{ TClientThread }
procedure TForm1.Button1Click(Sender: TObject);
begin
Self.ServerSocket1.Open;
end;
{ TClientThread }
procedure TClientThread.ClientExecute;
var
SocketStream : TWinSocketStream;
BytesRead, iPos: Integer;
begin
while not Terminated do
begin
SocketStream := TWinSocketStream.Create(ClientSocket, 5 * 1000);
try
try
iPos := 0;
while (SocketStream.WaitForData(5 * 1000)) do
begin
BytesRead := SocketStream.Read(FRBuf[iPos], SizeOf(LongWord));
end;
except
raise;
end;
finally
SocketStream.Free;
ClientSocket.Close;
Terminate;
end;
end;
end;
end.
postren
2004-10-28
打赏
举报
回复
我也碰到这样的问题,aiirii等等,我整理出来代码
aiirii
2004-10-28
打赏
举报
回复
>>如何在无限循环线程的程序的文本框内输入汉字呢?
表達不清楚, 我的不少程序都帶有線程, 從沒發生這種問題
delphi 的
输入法
编程检测
输入法
delphi 的
输入法
编程检测
输入法
,检测当前的
输入法
的状态,用于对
输入法
进行控制的软件,例如打字比赛软件
C#设置
输入法
程序
通过C#来设置应用
程序
输入的
输入法
,并可捕获用户改变
输入法
Visual Basic6.0获取系统当前
输入法
Visual Basic6.0获取系统当前
输入法
Visual Basic6.0获取系统当前
输入法
简单实现windows下的
输入法
简单实现的windows下的
输入法
源码,对于初写
输入法
的人有很大帮助
输入法
编程指南 创建自己的
输入法
IME提供下列增强功能: ●运行时相当于混合语言环境的一个部件 ●为每一个应用
程序
任务提供多重输入上下文 ●为每一个应用
程序
线程
提供一个活动的IME ●通过应用
程序
消息循环给应用
程序
提供信息(消息顺序
不能
改变) ●为无IME支持应用
程序
和部分IME支持应用
程序
提供有力的支持 要得到全部的增强功能,应用
程序
需要支持Windows IME应用
程序
I/F。 本文档描述了Windows IME体系结构的应用
程序
I/F。
语言基础/算法/系统设计
16,742
社区成员
33,237
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章