【问题标题】:Edit Box flickering编辑框闪烁
【发布时间】:2014-12-16 01:54:04
【问题描述】:

我正在尝试在我的 Win-32 应用程序中创建一个编辑框,但遇到了一些麻烦。它只会在我的鼠标同时移动、单击和拖动的情况下出现,并且会在可见性和不可见性之间闪烁

我像这样创建我的初始窗口:

m_hWnd = CreateWindow(m_wWindowName.c_str(), m_wWindowName.c_str(), 
        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, height, 0, 0, m_hInstance, this); 

然后我尝试在现有窗口中创建一个新的编辑框:

CreateWindowEx(WS_EX_CLIENTEDGE, 
        TEXT("Edit"), TEXT(""),
        WS_CHILD | WS_VISIBLE,
        10, 80,
        200, 20,
        m_hWnd, (HMENU)1, NULL, NULL);

编辑: 我正在通过执行以下操作在自己的类中创建我的初始窗口

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
                   PSTR cmdLine, int showCmd)
{
    CApplication Application;
    Application.Initialise(hInstance, MainWndProc, L"GUI Tool");

    return Application.Run();
}

初始化函数创建窗口,然后(仍在初始化函数中)我正在尝试创建编辑框。

有人可以就为什么会发生这种情况提供一些帮助吗?

谢谢

【问题讨论】:

  • 您能否提供一个最小的完整示例来重现此问题?
  • 这让我觉得你在代码的错误位置创建了窗口。
  • 我可以编辑帖子以了解我的代码是如何联系在一起的。
  • 另外,我已经使用我的框架两年了,没有遇到任何问题。它完成了大量的 2D 和 3D 项目——我从来没有做过没有对话框资源的编辑框
  • 尝试在父窗口上设置WS_CLIPCHILDREN 样式。

标签: c++ winapi window editbox


【解决方案1】:

听起来您正在WM_PAINT 处理程序中的控件顶部进行绘画(或者这是由DefWindowProc 完成的)。

最简单的解决方法是在父窗口上设置WS_CLIPCHILDREN样式,这样在绘画时会自动剪掉所有子窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多