0

抱歉,标题有点模糊。

基本上,我正在用 C++ 制作一个聊天程序并使用 windows.h API。我的大部分程序都在工作,只是一些小事情不能正常工作。我有一个框,用户可以在其中输入他们想说的话,在该框中,它以斜体字显示“在此处输入文本”。我想设置它,以便当用户单击该框时,这些单词消失并且用户可以自由输入。正如现在设置的那样,如果他们在框内单击它会转到“这里”一词的末尾,他们必须手动删除这些词。

有没有一种简单的方法可以做到这一点?可能在创建框或文本时?还是我必须添加自己的逻辑才能完成此操作?

附件是我在其中创建框和设置字体的代码:

盒子:

hwSendEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "Enter Text Here", 
WS_CHILD|WS_VISIBLE, 2, 215, 790, 22, hwMain, 0, hInst, 0);

字体:

chFont = CreateFont(12, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Tahoma");
SendMessage(hwSendEdit, WM_SETFONT, reinterpret_cast<WPARAM>(chFont), 0);

感谢您提供任何帮助。

4

1 回答 1

1

您需要响应WM_ACTIVATE控件的消息。它有一个参数wParam告诉您控件是被激活还是被停用。如果它正在被激活,请检查窗口文本以查看它是否等于您的提示字符串;如果是这样,请将字体恢复正常并用于SetWindowText清除文本。如果它被停用,请使用GetWindowText查看文本是否为空,如果是,请将字体设置回斜体并替换您的提示字符串。

于 2012-04-19T17:36:53.230 回答