尝试在windows.h中使用CreateWindow单击按钮后返回char * / string

时间:2015-05-10 20:14:28

标签: c++ c windows window

使用windows.h我创建了以下窗口:

我认为没有必要写出WINAPI WinMain需要的明显事物。

textToWrite = CreateWindow("EDIT",
"",
WS_BORDER | WS_CHILD | WS_VISIBLE,
290, 70, 165, 20,
hwnd, NULL, NULL, NULL
);

analize = CreateWindow("BUTTON",
"Analize",
WS_VISIBLE | WS_CHILD | WS_BORDER,
465, 70, 60, 20,
hwnd, NULL, NULL, NULL
);

Result = CreateWindow("STATIC",
getResultFromWritenText(),
WS_BORDER | WS_CHILD | WS_VISIBLE,
290, 100, 235, 20,
hwnd, NULL, NULL, NULL
);

我希望在单击“Analize”按钮时,“Result”静态窗口会根据函数getResultFromWritenText()返回的内容返回一些内容。这是我不希望将相同的文本写为输出(textToWrite),而是一个新的字符串/ char *,用于分析用户编写的内容,知道getResultFromWritenText()函数会知道它并在文本字段中返回它(无论我想要它返回),而不是弹出窗口。

我该怎么做? 感谢。

2 个答案:

答案 0 :(得分:0)

WINAPI将null终止的c字符串作为参数。但是depending on compilation options for UNICODE,它使用charwchar_t

因此,如果您事先知道为UNICODE编译,那么您可以创建您的函数:

wstring getResultFromWritenText() { ... } 

如果您想保持灵活性,可以按如下方式定义:

typedef basic_string<TCHAR> tstring;   // equivalen to string or wstring depending on options

tstring getResultFromWritenText() { ... } 

完成此操作后,您可以使用该功能的结果:

Result = CreateWindow("STATIC",
    getResultFromWritenText().data(),
    WS_BORDER | WS_CHILD | WS_VISIBLE,
    290, 100, 235, 20,
    hwnd, NULL, NULL, NULL
    ); 

答案 1 :(得分:0)

我不知道我是否收到您的问题,但您无法从CreateWindow()返回此类文字。 如果要为按下某个按钮后创建的静态窗口设置不同的文本,请执行以下操作:

窗口过程中的

case WM_COMMAND:
{
    if(lParam == (LPARAM)analize) // Your button is pressed
    {
        //If your getResultFromWritenText() function really returns some text...
        SendMessage(Result, WM_SETTEXT, 0, (LPARAM)getResultFromWritenText()); // Set new text to your static
    }
}