相关疑难解决方法(0)

Win32 MessageBox没有出现

我遇到了一个奇怪的问题.我正在VC++ 2008中创建一个Win32应用程序,使得一个类可以封装大部分工作,以便在调用时轻松重复MessageBox.消息框`已创建(我认为),但除非我按下Alt键,否则不会显示!

究竟发生了什么:

  1. 我运行程序

  2. 按Enter键

  3. 主窗口失去焦点

  4. 当我点击主窗口时发出哔声,好像有一个模态MessageBox

  5. 要么按Escape ...要么获得焦点要么按Alt键,然后按下Alt键出现MessageBox(即菜单会掉落)!!!!!!

PS它工作正常,但突然发生了这种情况.我没有发现任何差异 - 我甚至做了一个新项目!

这应该是主程序:

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine, int       nCmdShow)
{
    MSG msg;
    CWnd    cMainWindow(TEXT("DentoMan"), TEXT("Bejkoman")); // pass The class name and window name to the constructor

    cMainWindow.CreateDef(); //Create the Window
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}
Run Code Online (Sandbox Code Playgroud)

虽然这是类文件

CWnd::CWnd() {
};

CWnd::CWnd(LPTSTR lpszClassName, LPTSTR lpszWindowName) {
    CWnd::lpszClassName     = lpszClassName;
    CWnd::lpszWindowName    = lpszWindowName;
};

CWnd::~CWnd() {
};

// Create the …
Run Code Online (Sandbox Code Playgroud)

winapi messagebox

5
推荐指数
2
解决办法
5085
查看次数

MessageBox未显示

当试图显示一个简单的MessageBox时,它根本不显示.

码:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nCmdShow )
{
    try
    {
        Window wnd( { 50, 50 }, Graphics::ScreenWidth, Graphics::ScreenHeight, "Bat Engine", Graphics::FullScreen );
        throw std::exception( "test" );
    }
    catch( const std::exception& e )
    {
        MessageBox( NULL, e.what(), "Error", MB_ICONWARNING | MB_OK );
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

返回值MessageBox就是IDOK它的解释是:我点击确定按钮,即使事实并非如此.GetLastError也不会返回任何错误.

此外,只有在我初始化Window后抛出异常才会发生这种情况.Window类可以在这里找到:https://github.com/SlidyBat/BatEngine/blob/master/Engine/Window.cpp

在线查找此问题后,我找到了这个答案:https://stackoverflow.com/a/41171505/9094644

果然,如果我在显示消息框之前清除消息队列(就像这样),它就可以工作了.清除它时队列中的消息是WM_QUIT,WM_TIMER和ID为1847的消息(不确定那是什么).

现在我只是在显示消息框之前清除消息队列以确保它正常工作,但是很高兴找出我做错的原因.

谢谢.

c++ windows winapi

2
推荐指数
1
解决办法
206
查看次数

标签 统计

winapi ×2

c++ ×1

messagebox ×1

windows ×1