我在编辑 EDIT 窗口时遇到问题(无论是通过写入还是向其发送文本)。
Here's my code .
几天前,我遇到了从新窗口中删除 MSG 处理循环的问题。
一切都会好起来的,但它引起了另一个问题。我无法编辑编辑窗口。
当该处理循环在新窗口中时,编辑工作,而不是它。
父窗口 - MainWindow
子窗口 - ChatWindow
关于 Winapi 的教程很少,所以有时我不得不使用我不完全理解的代码(比如 2 个 Wndproc 方法来处理窗口操作)
谢谢你的时间
请您参考如下方法:
好的,问题来了,这个
ChatWindow::ChatWindow()
{
...
window = CreateWindowEx( WS_EX_CLIENTEDGE,
NazwaKlasy,windowTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,DEFAULT_WIDTH ,
DEFAULT_HEIGHT, NULL, NULL, hIns, this );
...
还有这个
okna.push_back(ChatWindow(dwSel,(char*)chBuffer));
在
ChatWindow构造函数存储 this 指针(参见
CreateWindowEx 的最后一个参数)。但是当你保存
ChatWindow对象您在 okna vector 中保存一个拷贝。所以
ChatWindow的地址对象传递给
CreateWindowEx与
ChatWindow 的地址不同 vector 中的对象。
而不是
std::vector<ChatWindow> okna;你应该有一个指针 vector
std::vector<ChatWindow*> okna; .那应该可以解决问题。
您设计的基本问题是您的窗口对象不可复制,因为您告诉 Windows
this 是什么。指针是。您应该添加一个私有(private)复制构造函数和赋值运算符来阻止您错误地复制它们,就像这样。
class NewWindow
{
private:
NewWindow(const NewWindow&); // prevent copying
NewWindow& operator=(const NewWindow&); // prevent copying
};
哦,我赞同 Jerry 的说法,买一份 Petzold。


