什么会导致语言栏在Win32应用程序中消失?

用户4484

当我运行Win32应用程序时,Windows语言栏(在所有其他应用程序中可见)在大约5秒钟后消失。如果我退出应用程序或使用alt-tab转到其他应用程序,它会重新出现。如果我按Alt键重新进入应用程序,则五秒钟后它会再次消失。切换键也不起作用。

好像系统以某种方式得出结论,我的应用程序不“支持”语言栏。

要启用语言栏,我需要做些什么吗?还是我不应该做的事情会导致它消失?

该应用程序有一个自定义窗口(我在其中绘制DirectX图形)。我已经通过了论证看着CreateWindowRegisterClass以及窗口的消息,我把手(而不是传递到DefWindowProc),但似乎没有任何直接关系到语言栏。

我只在Windows 7上测试过。

[更新]

这是一个简单的例子。当我编译并运行此命令时,语言栏会在五秒钟后消失:

#include <windows.h>

LRESULT CALLBACK wndproc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam)
{
    return DefWindowProcW(hwnd, umsg, wparam, lparam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSW wc;
    wc.style = CS_DBLCLKS;
    wc.lpfnWndProc = wndproc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = GetModuleHandle(nullptr);
    wc.hIcon = 0;
    wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
    wc.hbrBackground = 0;
    wc.lpszMenuName = 0;
    wc.lpszClassName = L"main_window";

    ATOM atom = RegisterClassW(&wc);

    DWORD win_style = WS_OVERLAPPEDWINDOW;

    RECT winrect;
    winrect.top = 100; winrect.bottom = 200; winrect.left = 100; winrect.right = 200;
    AdjustWindowRect(&winrect, win_style, false);

    HWND _hwnd = CreateWindowW(L"main_window", L"Application", win_style,
        winrect.left, winrect.top, winrect.right-winrect.left, winrect.bottom - winrect.top,
        0, 0, GetModuleHandle(0), 0);

    SetFocus(_hwnd);
    ShowWindow(_hwnd, SW_SHOW);
    UpdateWindow(_hwnd);

    MSG msg;
    while (true) {
        PeekMessage(&msg, _hwnd, 0, 0, PM_REMOVE);
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}
路易斯

该代码段正在过滤消息:它将仅处理发送到刚创建的窗口的消息,而不处理发送到程序需要或使用的其他消息的消息。http://blogs.msdn.com/b/oldnewthing/archive/2005/02/09/369804.aspx上查看Raymond Chen的“过滤窗口消息的危险”

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运行用NASM编写的Win32应用程序会导致“此应用程序无法在您的PC上运行”错误

在Win32应用程序中连续运行代码

C#应用程序中的Win32异常

Win32 Paint应用程序

加入线程的按钮导致win32 / winAPI应用程序冻结

如何为 Win32 应用程序设置任务栏图标?

Win32应用程序中Visual Studio中的LNK2019错误?

VS 2010中Win32应用程序中的文件夹复制

Python ctypes DLL是“无效的Win32应用程序”

Visual Studio:“不是 Win32 应用程序”错误

LaunchFullTrustProcessForCurrentAppAsync 杀死 win32 应用程序

Win32在应用程序内使用资源字体

在Win32应用程序中使用Windows窗体

Win32 控制台应用程序

在Windows的Docker中运行普通的Win32应用程序

Win32应用程序中的WinHttpReadData无法正常工作

应用程序无法在Windows 2003中以Win32模式运行

如何在Win32 Office 2013应用程序中禁用粗蓝框?

如何在Win32应用程序中检测Windows 10亮/暗模式?

Win32应用程序中的窗口无法正常关闭

如何解决错误193:%1不是dev c ++中的Win32应用程序?

Azure Web应用程序中未找到Win32 DLL错误

可以将键盘输入绑定到Win32中的单个应用程序吗?

应用程序无法在Windows 2000中以WIN32模式运行

使用Win32 C ++和钩子从应用程序中的按钮获取文本

在 UWP 中启动后台 win32 控制台应用程序

.Net Framework 4.6安装导致错误“%1不是有效的win32应用程序”

是什么导致应用程序窗口“消失”?

使用CreateProcess从Win32 C ++应用程序启动Java应用程序时出错