首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi VirtualKey to WideString

Delphi VirtualKey to WideString
EN

Stack Overflow用户
提问于 2012-06-01 09:45:33
回答 1查看 1.2K关注 0票数 3

我想要将虚拟密钥转换为WideString。这就是我目前所拥有的..。

代码语言:javascript
复制
function VKeytoWideString (Key : Word) : WideString;
var
 WBuff         : array [0..255] of WideChar;
 KeyboardState : TKeyboardState;
 UResult       : Integer;
begin
 GetKeyBoardState (KeyboardState);
 UResult := ToUnicode(key, MapVirtualKey(key, 0), KeyboardState, WBuff, 0,0);
 Result  := WBuff;
 case UResult of
  0 : Result := '';
  1 : SetLength (Result, 1);
  2 :;
  else
   Result := '';
 end;
end;

它总是返回0,但是为什么呢?请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-01 09:58:08

您将ToUnicode()cchBuff参数设置为0,而不是实际的缓冲区大小,因此该函数无法存储它转换的任何字符。

试着这样做:

代码语言:javascript
复制
function VKeytoWideString (Key : Word) : WideString; 
var 
  WBuff         : array [0..255] of WideChar; 
  KeyboardState : TKeyboardState; 
  UResult       : Integer;
begin 
  Result := '';
  GetKeyBoardState (KeyboardState); 
  ZeroMemory(@WBuff[0], SizeOf(WBuff));
  UResult := ToUnicode(key, MapVirtualKey(key, 0), KeyboardState, WBuff, Length(WBuff), 0); 
  if UResult > 0 then
    SetString(Result, WBuff, UResult)
  else if UResult = -1 then
    Result := WBuff;
end; 
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10843429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档