我正在创建一个简单的聊天程序,客户端可以将消息发送到服务器,显示收到的消息。出于某种原因,我无法输入文本框,即使它未设置为只读。没有我发布整个代码,任何人都可以看到简单的错误吗?这是我创建文本框的地方:
static HWND text;
switch(msg)
{
case WM_CREATE:
{
text = CreateWindow(TEXT("Edit"), TEXT("Enter text here..."),
WS_VISIBLE | WS_CHILD | WS_BORDER,
0, 0, 300, 25,
hwnd, (HMENU) ID_EDIT, NULL, NULL);
CreateWindow(TEXT("Button"), TEXT("Post"),
WS_VISIBLE | WS_CHILD,
310, 0, 70, 25,
hwnd, (HMENU) ID_POST, NULL, NULL);
CreateWindow(TEXT("Button"), TEXT("Connect"),
WS_VISIBLE | WS_CHILD,
0, 35, 70, 25,
hwnd, (HMENU) ID_CONNECT, NULL, NULL);
break;
}
答案 0 :(得分:8)
运用我的智力,我会说你在主函数中编写了自己的消息循环,并且你没有调用TranslateMessage()
。
函数TranslateMessage()
负责将关键消息转换为char消息(不,这不是自动完成的:-)。最终结果是您的EDIT窗口(所有窗口)都没有收到WM_CHAR
条消息。
所以你的消息循环至少应该是这样的:
MSG msg;
while (GetMessage(&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}