我在编辑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
对象的地址与 vector 中ChatWindow
对象的地址不同。而不是
std::vector<ChatWindow> okna;
,您应该有一个指针std::vector<ChatWindow*> okna;
的 vector 。那应该解决问题。设计的基本问题是,窗口对象不可复制,因为您正在告诉Windows
this
指针是什么。您应该添加一个私有(private)副本构造函数和赋值运算符,以防止您错误地复制它们,就像这样。class NewWindow
{
private:
NewWindow(const NewWindow&); // prevent copying
NewWindow& operator=(const NewWindow&); // prevent copying
};
哦,我同意杰里所说的,得到了彼得佐德的副本。