Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Win32编辑打印不正确的字符_C++_Windows_Api_Winapi - Fatal编程技术网

C++ Win32编辑打印不正确的字符

C++ Win32编辑打印不正确的字符,c++,windows,api,winapi,C++,Windows,Api,Winapi,我正在使用Win32 edit来显示调试信息,我已经将该编辑以及我的基本GUI的其余部分放在一个类中。但是,当我将任何内容输出到“编辑”时,它会显示“编辑”。我认为错误在于我的MyGUI::append(LPCSTR)方法,尽管它在过去一直工作得很好。如有任何意见/想法/解决方案,将不胜感激。如果我需要发布与我的GUI类相关的所有代码,请让我知道 我的类位于名称空间接口,以及独立的WindowProcedure函数,我在向WNDCLASSEX对象注册应用程序时调用该函数 win32编辑不是在Wi

我正在使用Win32 edit来显示调试信息,我已经将该编辑以及我的基本GUI的其余部分放在一个类中。但是,当我将任何内容输出到“编辑”时,它会显示“编辑”。我认为错误在于我的
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。