21xrx.com
2024-12-22 22:53:40 Sunday
登录
文章检索 我的文章 写文章
如何使用C++创建模态窗口来调用外部EXE程序
2023-07-03 04:40:19 深夜i     --     --
C++ 模态窗口 调用外部EXE程序 创建 使用

C++是一种强大的编程语言,它能够让开发者创建出各种各样的应用程序。这篇文章将介绍如何使用C++创建模态窗口来调用外部EXE程序。

首先,我们需要了解模态窗口和非模态窗口的区别。模态窗口一般用于需要用户输入一些信息或进行某些操作的情况,而非模态窗口一般用于显示一些提示信息或者展示数据。

在C++中创建一个模态窗口需要使用到WinAPI中的一些函数,如CreateWindowEx、DialogBoxParam等。下面是一个简单的实例代码:

 c++

#include <Windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

  switch (message)

  {

    case WM_DESTROY:

      PostQuitMessage(0);

      break;

    default:

      return DefWindowProc(hWnd, message, wParam, lParam);

  }

  return 0;

}

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

  // 注册窗口类

  WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };

  wcex.lpfnWndProc = WndProc;

  wcex.hInstance = hInstance;

  wcex.lpszClassName = TEXT("MyWindowClass");

  RegisterClassEx(&wcex);

  // 创建窗口

  HWND hWnd = CreateWindowEx(0, TEXT("MyWindowClass"), TEXT("My Window"), WS_OVERLAPPEDWINDOW,

    CW_USEDEFAULT, CW_USEDEFAULT, 500, 400, NULL, NULL, hInstance, NULL);

  // 创建模态窗口

  int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, (DLGPROC)DialogProc, 0);

  // 显示窗口

  ShowWindow(hWnd, nCmdShow);

  // 消息循环

  MSG msg = { 0 };

  while (GetMessage(&msg, NULL, 0, 0))

  {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  return (int)msg.wParam;

}

以上代码展示了如何创建一个窗口并在其中嵌入一个模态窗口。其中DialogBoxParam函数用于创建模态窗口,第一个参数为应用程序实例句柄,第二个参数为对话框的资源ID,第三个参数为父窗口句柄,第四个参数为对话框的回调函数。

接下来,我们要在模态窗口中调用外部EXE程序。下面是一个示例代码:

 c++

#include <Windows.h>

#include <ShellAPI.h>

INT_PTR CALLBACK DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

  switch (message)

  {

    case WM_INITDIALOG:

      return TRUE;

    case WM_COMMAND:

      {

        if (LOWORD(wParam) == IDC_BUTTON1 && HIWORD(wParam) == BN_CLICKED)

        {

          // 调用外部EXE程序

          ShellExecute(NULL, TEXT("open"), TEXT("C:\\Windows\\System32\\notepad.exe"), NULL, NULL, SW_SHOWNORMAL);

        }

        if (LOWORD(wParam) == IDC_BUTTON2 && HIWORD(wParam) == BN_CLICKED)

        {

          EndDialog(hDlg, TRUE);

        }

      }

      break;

  }

  return (INT_PTR)FALSE;

}

以上代码用于在模态窗口中添加两个按钮,一个用于调用外部EXE程序,另一个用于关闭模态窗口。当用户点击“调用外部EXE程序”按钮时,程序会调用ShellExecute函数以启动一个指定的程序。

综上,我们可以使用上述代码来创建模态窗口并调用外部EXE程序。当然,这只是一个简单的示例,开发者可以根据自己的需求进行修改和扩展。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章