VS2010中对话框尺寸的有关问题

VS2010中对话框尺寸的问题
本帖最后由 fairchild_liu 于 2014-06-19 21:35:22 编辑
MFC的编辑窗口中显示的那个尺寸似乎不是像素的。。。
VS2010中对话框尺寸的有关问题
实际上的对话框像素是704*422的。。。。

我是想要实现这样的一个功能,在对话框上利用CDC绘图,根据用户鼠标点击的位置Point来判断用户点击了图像上的哪一块部分。所以这个就要求我能精确的把握图片的像素,然而这个尺寸却把我搞郁闷了。。。
想知道如何才能根据一张图片的实际像素大小,来对应调整对话框的大小(对话框需要比图片尺寸大一些),或者这个尺寸的单位是否能和像素单位互相转换,有没有什么函数或者公式呢?
求大虾相助!



------解决方案--------------------
对话框单位会根据字体和 DPI 的不同显示为不同的尺寸。如果你想精确的调整一个窗口的客户区为指定的尺寸,可借助 AdjustWindowRectEx 函数根据窗口的样式来计算它应有的大小。以下为纯 C 调用 API 示例:
// 所需客户区大小
RECT rc = { 0, 0, 704, 422 };
DWORD dwStyle = (DWORD)GetWindowLongPtr(hwnd, GWL_STYLE);
DWORD dwExStyle = (DWORD)GetWindowLongPtr(hwnd, GWL_EXSTYLE);
// 第三个参数为是否包含菜单
AdjustWindowRectEx(&rc, dwStyle, FALSE, dwExStyle);
OffsetRect(&rc, -rc.left, -rc.top);
int cxScreen = GetSystemMetrics(SM_CXSCREEN);
int cyScreen = GetSystemMetrics(SM_CYSCREEN);
int iPosX = (cxScreen - rc.right) / 2;
int iPosY = (cyScreen - rc.bottom) / 2;
// 调整窗口位置为屏幕居中
SetWindowPos(hwnd, NULL, iPosX, iPosY, rc.right, rc.bottom, SWP_NOZORDER);

------解决方案--------------------
“函数功能:该函数依据所需客户矩形大小,计算需要的窗口矩形的大小。计算出的窗口矩形随后可以传送给CreateWindowEx函数,用于创建一个客户区所需大小的窗口。”