最近遇到项目,需要在单台电脑上运行两次同一个.exe文件(基于对话框),但两个进程需要在不同的屏幕上显示。在网上查找了一些资料,要么付费,要么代码中有一定问题。综合各个资料后,整理出可以直接使用的代码。既是为了做笔记,也是将经验分享给大家。
实现该功能的API为 EnumDisplayDevices()和EnumDisplaySettings()。对于这两个函数中的各个参数,网上已经有很详细的解释,在这里不在赘述,直接上代码。
//使用到的头文件和使用命名空间
#include <iostream>
#include <vector>
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"Winmm.lib")
using namespace std;
//在类的.h文件中,定义成员变量
vector<DISPLAY_DEVICE> m_vDisplayDevice;
vector<DEVMODE> m_vDevmode;
int m_nDisplayScreen;//要显示的显示器序号
//.cpp文件,可以直接写在InitDialog()函数中,也可以编写成函数,在进程初始化时调用。
m_vDisplayDevice.clear();
m_vDevmode.clear();
int devId = 0;
bool ret = false;
bool isPrimary = false;
//list all DisplayDevices (Monitors)
do
{
D