0

この関数を使用して、RCDATA リソースから UTF-8 でエンコードされたデータを読み取ります。

function ReadResourceW(ResourceName : WideString): WideString; // for UTF-8 and RCDATA
 var
  ServerModule: HMODULE;
  ResourceLocation: HRSRC;
  ResourceSize: dword;
  ResourceHandle: THandle;
  ResourcePointer: pointer;
  PBufferString : AnsiString;
 begin
  ServerModule := LoadLibraryW(NIL);
  try
   ResourceLocation := FindResourceW(ServerModule,PWideChar(ResourceName),PWideChar(10)); // For RCDATA
   ResourceSize := SizeofResource(ServerModule, ResourceLocation);
   ResourceHandle := LoadResource(ServerModule, ResourceLocation);
   ResourcePointer := LockResource(ResourceHandle);
   if ResourcePointer <> nil then begin
    SetLength (PBufferString, ResourceSize);
    CopyMemory(@PBufferString[1], ResourcePointer, ResourceSize);
    Delete (PBufferString,1, 3); // Delete the EF_BB_BF
    result := UTF8Decode(PBufferString);
    FreeResource(ResourceHandle);
    end;
   finally
    FreeLibrary(ServerModule);
   end;
 end;

その後、MessageBoxW を使用して UNICODE 文字を表示します。一部の文字 (スマイリーフェイス、ハートなど) では、メッセージ ボックスに四角しか表示されません。さらに、Delphi7 用の TNTComponents があり、すべての Unicode 文字が「|」として表示されます。メモや編集で。メッセージボックスまたはメモ/編集/などのすべてのユニコード文字を「ペイント」できる方法はありますか?

ご協力ありがとうございました。

4

0 に答える 0