要使messagebox弹出后不获取窗口焦点,可以使用Win32 API中的MessageBox函数,并设置参数为MB_SYSTEMMODAL。
示例代码如下:
#includeint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 创建一个窗口 HWND hWnd = CreateWindowEx(0, "STATIC", "Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInstance, NULL); // 弹出消息框,不获取窗口焦点 MessageBox(hWnd, "Hello World", "Message", MB_SYSTEMMODAL); // 显示窗口 ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
在上面的示例代码中,通过设置MessageBox函数的第四个参数为MB_SYSTEMMODAL,即可实现消息框弹出后不获取窗口焦点。