编辑控件不会获得焦点! win32 c++

Posted

技术标签:

【中文标题】编辑控件不会获得焦点! win32 c++【英文标题】:Edit controls won't get focus! win32 c++ 【发布时间】:2011-09-10 10:55:13 【问题描述】:

我的 Win32 应用程序中的编辑控件只是拒绝关注!。结果,我无法在其中输入文本。控件以前工作得很好,现在只是拒绝工作! 这是代码的链接: http://dl.dropbox.com/u/35856163/src.zip

【问题讨论】:

你说他们以前工作过,但现在不行。发生了什么变化?您的问题确实可以使用一些细节,甚至可能是代码 sn-ps。 您在标头中有太多代码,并且没有一个被标记为内联。我猜你是 Java 程序员…… @viraj:你需要在你的问题中展示一个最小的代码 sn-p。说真的,我们没有时间也没有耐心阅读和理解正在发生的事情,更不用说下载包含太多代码的 zip 文件了,我们只是来回答这个问题。尝试缩小问题的范围,看看是否可以将其隔离并制作一个最小的、可编译的问题代码。 【参考方案1】:

下次在这里发布代码,至少尝试编译它!尝试编译您的文件时出现 18 个错误。你的代码也很难阅读,所以我不能说在哪里发生了什么。您正在将字符与 wchars_t 混合,因此您可能会出现内存损坏。 char Buffer[Length() + 1]; 甚至不应该编译!你用的是什么编译器?对于动态分配,您必须使用指针和 new 关键字,不能使用数组下标作为动态大小。

无论如何,我可能知道问题出在哪里 - 您在 DispatchMessage 之前缺少 TranslateMessage。那会破坏整个消息的内容,您当然无法获得正确的消息。

【讨论】:

+1 只是为了花时间下载和编译那些乱七八糟的东西。 这些数组称为 VLA,是 C99 的一部分。我想海报正在使用 gnu 编译器。 还有一个方法可以去GetFocus() SetFocus(Handle); 那是我放弃的地方。 @David Heffernan 感谢您为我指出这一点,我不知道这样的事情甚至存在,因为 MSVC 立即给出错误:“未知大小”。我仍然认为在使用 c++ 时使用这种技术非常糟糕。 是的,问题在于没有调用 TranslateMessage。现在可以正常使用了。

以上是关于编辑控件不会获得焦点! win32 c++的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的编辑控件在没有使用 MFC 的 win32 c++ 应用程序中看起来很奇怪?

C++ Win32,可以编辑控件由所有者绘制吗?

有没有可能用win32程序获取浏览器中网页的文本框控件的内容和焦点状态

如何禁止tab键在对话框内的编辑控件和按钮之间切换焦点?

Win32 编辑控件滚动条在 Windows 10 中不起作用

如何创建一个 Win32 控件来包含其他 Win32 控件?