【问题标题】:Problem with switching application and focus切换应用程序和焦点的问题
【发布时间】:2011-08-12 11:24:00
【问题描述】:

对不起,我的英语很差。

我正在用 c 编写一个 winapi 程序,但我遇到了问题。该程序有一个主窗口和 NO DIALOG 子窗口(控件)。控件直接附加到主窗口。当我将应用程序切换到另一个应用程序并再次返回时,焦点将设置到主窗口,而不是切换前拥有焦点的控件。

我的消息循环是:

while ((rGetMessage = GetMessage(&msg, NULL, 0, 0)) != 0 && rGetMessage != -1)
{
    if(!IsDialogMessage(hwnd_principal, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

我的错误是什么?

我使用 IsDialogMessage 函数来处理各种键(如控件中的 TAB 键)。

【问题讨论】:

  • 如果没有对话框,为什么要调用 IsDialogMessage?从提供的信息中无法猜测。

标签: winapi


【解决方案1】:

当您切换回您的应用程序时,默认情况下,Windows 会将键盘焦点设置为其主窗口,无论哪个窗口在停用时具有焦点。如果您想做一些不同的事情,您需要处理WM_ACTIVATE 并使用SetFocus() 将焦点恢复到控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-07
    • 2016-01-09
    • 2012-11-02
    • 2022-01-22
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多