::GetSystemMetrics (SM_CYBORDER)
...回来1,我知道标题栏高于一个像素:/
我也尝试过:
RECT r;
r.left = r.top = 0; r.right = r.bottom = 400;
::AdjustWindowRect (& r, WS_OVERLAPPED, FALSE);
_bdW = (uword)(r.right - r.left - 400);
_bdH = (uword)(r.bottom - r.top - 400);
但边界w,h回归为0.
在我的WM_SIZE处理程序中,我需要确保窗口的高度在"步骤"中变化,因此,例如,一个全新的文本行可以放在窗口中,底部没有"junky partial line space".
但是:: MoveWindow需要添加边框空间的尺寸.
有人必须在此之前完成此任务...感谢您的帮助:)
我有一个绘图功能,只需要一个HDC.但是我需要展示一个精确版本的打印版本.
所以目前,我使用带有打印机HDC的CreateCompatibleDC()和带有打印机HDC的CreateCompatibleBitmap().
我这样想DC会有打印机的确切宽度和高度.当我在这个HDC中选择字体时,文本将与打印机完全一样.
不幸的是,我不能让StretchBlt()将这个HDC的像素复制到控件的HDC,因为我猜它们是不同的HDC类型.
如果我从具有与打印机页面相同的w,h的HDC窗口创建"内存画布",那么这些字体会因为缩放屏幕而不是页面而显示出来.
我应该从窗口的DC和CreateCompatibleBitmap()从打印机的DC或其他东西创建CompatibleDC()吗?
如果有人可以解释这样做的正确方法.(并且仍然有像打印机那样看起来很完美的东西)......
好吧,我很感激!!
...史蒂夫
我在Windows 10上使用C ++进行编码-直接Win32 API。
我想在屏幕的右上方显示一个窗口。在执行此操作时,我注意到最大化窗口的屏幕坐标为left = -8,top = -8,right = 1936,bottom = 1088。
另外,当我将窗口的位置设置为right = 1920且top = 0时,右侧大约有8个像素的间隙。我尝试移动窗口以查看得到的屏幕坐标。
对于非最大化窗口的rect.left可以从-7到1912年。
所以东西滑了7个像素?WTF Microsoft?
我应该如何提出rec.right = 1913的值来将窗口对齐到屏幕右侧而没有悬空间隙?
但是1920年的rect.right留下了空白。所以1912年的rect.right将留下更多的空白...
我需要一种可以在Vista上运行的解决方案。在win10之前,rect.right应该像您期望的那样为1920。
Whaaaaat会在这里吗?我要开始扔刀了!
在代码方面,这正是GetWindowRect正在报告的内容...(对不起,我的调试功能很奇怪)
::GetWindowRect (_wndo, r);
DBG("ExtRc l=`d r=`d t=`d b=`d w=`d h=`d",
r->left, r->right, r->top, r->bottom, r->right-r->left, r->bottom-r->top);
Run Code Online (Sandbox Code Playgroud)