我在编辑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 中保存一个副本。因此,传递给ChatWindowCreateWindowEx对象的地址与 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
};

哦,我同意杰里所说的,得到了​​彼得佐德的副本。

10-08 08:59