编辑EDIT窗口时出现问题(通过写入或发送文本)。 Here's my code
几天前,我遇到了哪个解决方案正在从新窗口中删除MSG处理循环的问题。 一切都会好的,但它引起了另一个问题。我无法编辑编辑窗口。 当处理循环在新窗口中时编辑工作,否则不工作。
父窗口 - MainWindow
子窗口 - ChatWindow
关于Winapi的教程很少,所以有时我必须使用我不完全理解的代码(比如2个Wndproc方法来处理窗口动作)
感谢你的时间
答案 0 :(得分:0)
好的,这就是问题,这个
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向量中保存副本。因此,传递给ChatWindow
的{{1}}对象的地址与向量中CreateWindowEx
对象的地址不同。
而不是ChatWindow
你应该有一个指针向量std::vector<ChatWindow> okna;
。这应该可以解决问题。
您的设计的基本问题是您的窗口对象不可复制,因为您告诉Windows std::vector<ChatWindow*> okna;
指针是什么。您应该添加一个私有拷贝构造函数和赋值运算符,以阻止您错误地复制它们,就像这样。
this
哦,我继续说杰瑞说的,得到一份Petzold。