小编Ste*_*zel的帖子

Win32中的窗口边框宽度和高度 - 我如何获得它?

      ::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需要添加边框空间的尺寸.

有人必须在此之前完成此任务...感谢您的帮助:)

c++ winapi

27
推荐指数
4
解决办法
5万
查看次数

如何在win32 c ++中打印预览?

我有一个绘图功能,只需要一个HDC.但是我需要展示一个精确版本的打印版本.

所以目前,我使用带有打印机HDC的CreateCompatibleDC()和带有打印机HDC的CreateCompatibleBitmap().

我这样想DC会有打印机的确切宽度和高度.当我在这个HDC中选择字体时,文本将与打印机完全一样.

不幸的是,我不能让StretchBlt()将这个HDC的像素复制到控件的HDC,因为我猜它们是不同的HDC类型.

如果我从具有与打印机页面相同的w,h的HDC窗口创建"内存画布",那么这些字体会因为缩放屏幕而不是页面而显示出来.

我应该从窗口的DC和CreateCompatibleBitmap()从打印机的DC或其他东西创建CompatibleDC()吗?

如果有人可以解释这样做的正确方法.(并且仍然有像打印机那样看起来很完美的东西)......

好吧,我很感激!!

...史蒂夫

c++ windows winapi gdi print-preview

9
推荐指数
1
解决办法
3605
查看次数

Windows 10屏幕坐标偏移7

我在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)

c++ windows gdi windows-10

2
推荐指数
1
解决办法
1218
查看次数

标签 统计

c++ ×3

gdi ×2

winapi ×2

windows ×2

print-preview ×1

windows-10 ×1