C++ Win32编辑打印不正确的字符
我正在使用Win32 edit来显示调试信息,我已经将该编辑以及我的基本GUI的其余部分放在一个类中。但是,当我将任何内容输出到“编辑”时,它会显示“编辑”。我认为错误在于我的C++ Win32编辑打印不正确的字符,c++,windows,api,winapi,C++,Windows,Api,Winapi,我正在使用Win32 edit来显示调试信息,我已经将该编辑以及我的基本GUI的其余部分放在一个类中。但是,当我将任何内容输出到“编辑”时,它会显示“编辑”。我认为错误在于我的MyGUI::append(LPCSTR)方法,尽管它在过去一直工作得很好。如有任何意见/想法/解决方案,将不胜感激。如果我需要发布与我的GUI类相关的所有代码,请让我知道 我的类位于名称空间接口,以及独立的WindowProcedure函数,我在向WNDCLASSEX对象注册应用程序时调用该函数 win32编辑不是在Wi
MyGUI::append(LPCSTR)
方法,尽管它在过去一直工作得很好。如有任何意见/想法/解决方案,将不胜感激。如果我需要发布与我的GUI类相关的所有代码,请让我知道
我的类位于名称空间接口
,以及独立的WindowProcedure
函数,我在向WNDCLASSEX
对象注册应用程序时调用该函数
win32编辑不是在WindowProcedure
中的WM_CREATE
句柄中创建的(可能应该是这样),因为我无法将函数放在GUI类中
创建编辑的方法:
HWND createEdit( HINSTANCE hInst, HWND hwnd, int appBott, int appTop ){
return CreateWindowEx( WS_EX_APPWINDOW,
TEXT("EDIT"), TEXT(""),
WS_BORDER | WS_CHILD | WS_VISIBLE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | ES_MULTILINE| WS_VSCROLL | WS_HSCROLL,
10, 10, appBott-25, appTop-50,
hwnd,
(HMENU) 102,
hInst,
NULL );
}
在“guiCreate()”方法中用作:
HWND hEdit=createEdit(hInst、hWin、appWidth、appHeight)
在编辑中显示文本的方法:
void Interface::MyGUI::append( LPCSTR text ){
if( created && !stopAll ){
int TextLen = SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0);
SendMessageW(hEdit, EM_SETSEL, (WPARAM)TextLen, (LPARAM)TextLen);
SendMessageW(hEdit, EM_REPLACESEL, FALSE, (LPARAM) text);
}
}
在主程序中用作:
MyGUI form(); //initialize form
form.append( (LPCSTR)"Example text\n" );
输入文本:“示例文本。\n”
显示的文本:'??????????????你的目标似乎是ANSI。在这种情况下,不要调用
sendmaessew
、调用sendmaessea
甚至sendmaessea
,并将其扩展到sendmaessea
您可以调用SendMessageW
,但传递ANSI编码的文本。当您调用SendMessageW
时,您承诺发送UTF-16编码文本
然而,我认为你应该停止瞄准ANSI。改为以Unicode为目标。停止使用
TEXT()。停止使用字符串类型。那个(LPCSTR)
演员在自找麻烦。当您这样进行强制转换时,您会告诉编译器您比它更了解。通常情况并非如此。@Search不高兴这有帮助。你能够接受答案,即使代表率低,FWIW。