Для LoadString очевидное, что нужно сделать, это напрямую вызвать функцию WinStu API API LoadStringW (), которая даст вам строку Unicode напрямую.Это может даже работать, если вы используете CStringW в виде CString, например, (не проверено!)
CStringW str;
str.LoadString(...);
Функции меню и окна создадут больше проблем.Он должен работать для непосредственного вызова Unicode-формы Win32 API GetMenuStringW ().Оконная функция GetWindowText () действительно неудобна: вы можете, конечно, вызвать Win32-функцию GetWindowTextW (), но то, что она будет возвращать, будет зависеть от того, имеет ли окно, в котором вы ее вызываете, оконную процедуру ANSI или Unicode.Если нижележащее окно является элементом управления Windows, то обычно можно получить доступ к соответствующей процедуре окна и вызвать ее напрямую, но это не красиво и не очень весело.
Любой шанс получить более подробную информацию о том, как выпытаясь использовать это?Стоит отметить, что вы перечислите эти функции, как будто все 3 ресурса доступа, но это не так: только LoadString () делает это.Два других работают непосредственно с меню или окном, которое существует в запущенном процессе, а не с ресурсами.
В качестве примера того, как можно обойти проблемы GetWindowTextW (), взгляните на UnicodeEdit класс из этого проекта .Это приложение ANSI, которое необходимо для работы в Windows 9X, но также должно иметь возможность получать текст Unicode из элемента управления редактирования, если это возможно.Хитрость заключается в том, что класс запоминает, была ли оконная процедура до создания подкласса Unicode или ANSI, а если Unicode, вызывает это непосредственно в своем GetWindowText ().В зависимости от того, что вам нужно, такой подход может помочь.