使用EnumDisplayMonitors()做双屏幕显示双对话框界面问题,大佬们请进。

qwwmnn123 2018-12-25 04:28:17
今天想用vc6.0的mfc写一个基于对话框的程序,目的是实现两个对话框界面分别显示在两个显示器上(显示器接同一主机)。大致流程如下:
1)主对话框类名叫CDDialogDlg;新建一个新对话框同时新建一个类(类名CZIDG)与该对话框绑定。
2)在主对话框源文件DDialogDlg.cpp中添加以下代码:
int numScreen=0;
CRect rect[2];
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData);//声明回调函数

BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
static BOOL first = TRUE; //标志

//保存显示器信息
MONITORINFO monitorinfo;
monitorinfo.cbSize = sizeof(MONITORINFO);

//获得显示器信息,将信息保存到monitorinfo中
GetMonitorInfo(hMonitor, &monitorinfo);

//若检测到主屏
if(monitorinfo.dwFlags == MONITORINFOF_PRIMARY)
{
if(first) //第一次检测到主屏
{
first = FALSE;
numScreen = 1;

//将显示器的分辨率信息保存到rect
rect[0] = monitorinfo.rcMonitor;
return TRUE;

}
else //第二次检测到主屏,说明所有的监视器都已经检测了一遍,故可以停止检测了
{
first = TRUE; //标志复位
return FALSE;//结束检测
}
}

rect[numScreen] = monitorinfo.rcMonitor;
numScreen++;
return TRUE;
}
在主对话框初始化函数OnInitDialog()函数中添加:
EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0);
在主对话框上添加一个按钮,对应的按钮单击响应函数如下:
void CDDialogDlg::OnShuangxianBTN()
{
// TODO: Add your control notification handler code here
if (numScreen==2)
{
m_pzidg = new CZIDG(); //m_pzidg为在主对话框头文件中声明的指向CZIDG的指针。
m_pzidg->Create(IDD_ZI_DIALOG,this);//m_pzidg为在主对话框头文件中声明的指向CZIDG的指针。
m_pzidg->ShowWindow(SW_SHOW);
m_pzidg->MoveWindow(rect[1].left ,rect[1].top ,rect[1].Width (),rect[1].Height (),TRUE);
}


}

运行后,出现以下问题:
Compiling...
DDialogDlg.cpp
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(19) : error C2065: 'HMONITOR' : undeclared identifier
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(19) : error C2146: syntax error : missing ')' before identifier 'hMonitor'
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(19) : warning C4229: anachronism used : modifiers on data are ignored
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(19) : error C2059: syntax error : ')'
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(97) : error C2146: syntax error : missing ')' before identifier 'hMonitor'
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(97) : warning C4229: anachronism used : modifiers on data are ignored
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(97) : error C2086: 'MonitorEnumProc' : redefinition
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(97) : error C2059: syntax error : ')'
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(98) : error C2143: syntax error : missing ';' before '{'
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(98) : error C2447: missing function header (old-style formal list?)
F:\PG\test_vc6\DDialog\DDialogDlg.cpp(162) : error C2065: 'EnumDisplayMonitors' : undeclared identifier


是因为缺少头文件吗?还是因为该函数不是在VC6.0的mfc中使用,需要在VS中使用?请大佬们指点,谢谢!



...全文
1281 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zctymjx 2021-09-06
  • 打赏
  • 举报
回复

有遇到这个问题吗?怎么解决的?
error LNK2001: unresolved external symbol _xEnumDisplayMonitors@16

qwwmnn123 2018-12-25
  • 打赏
  • 举报
回复
可以解决谢谢楼上大佬。
zgl7903 2018-12-25
  • 打赏
  • 举报
回复
stdafx.h 中定义 #define WINVER 0x0500 试试看

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[坡道(ramp)] · 训练集:275 张 · 验证集:27 张 · 测试集:0 张 · 总计:302 张 该数据集聚焦于城市环境中各类建筑入口处的坡道设施,涵盖住宅、商铺、公共设施等多种场景,真实反映了无障碍通行设施在实际应用中的多样化形态。数据集中包含金属、橡胶、塑料等多种材质的坡道,以及不同尺寸、结构和安装方式的实例,充分体现了坡道在城市基础设施中的广泛部署与重要性。该数据集为城市智慧化管理、无障碍环境建设及公共安全监控提供了高质量的视觉基础支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 33 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6372** mAP50-95 | 0.3401 Precision | 0.6603 Recall | 0.6190 train/box_loss | 1.0569 train/cls_loss | 0.7307 val/box_loss | 1.6084 val/cls_loss | 1.9323 【训练过程分析】 33 轮训练后 mAP50 仅 0.6372,模型收敛不充分。Loss 曲线前期下降后进入平台期,mAP 提升缓慢。mAP50-95 为 0.3401,定位精度同样偏低。 【模型性能评估】 Precision 0.6603、Recall 0.6190,精度高于召回,存在一... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧