gpt4 book ai didi

c++ - 编辑 EDIT 导致程序崩溃

转载 作者:行者123 更新时间:2023-12-03 17:40:03 26 4
gpt4 key购买 nike

我在编辑 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的地址对象传递给 CreateWindowExChatWindow 的地址不同 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。

关于c++ - 编辑 EDIT 导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com