网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月13日漏签0天
ege吧 关注:1,277贴子:5,593
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 12回复贴,共1页
<<返回ege吧
>0< 加载中...

initgraph创建的客户区域大小不是精确的?

  • 只看楼主
  • 收藏

  • 回复
  • Lemoneee
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
今天编写了自己的EGE Insight - initgraph原型, 对EGE建立视窗的过程进行简化, 砍掉细枝末节, 实作出了自己的实验版本. 在准备研究EGE的渲染工作模型前又过了一遍initgraph源码, 发现了下面这个片段:
dw = GetSystemMetrics(SM_CXFRAME) * 2;
dh = GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION) * 2;
这是InitInstance中的一段代码, 该函数调用CreateWindowEx创建视窗并调用ShowWindow显示视窗 (似乎还判断了是否将新视窗作为子控制项加入, 如果是则追加WS_CHILDWINDOW视窗样式). 为了创建带有指定尺寸的客户区域的视窗, EGE甚至将边框与标题列的尺寸计算在内. dw是横向的补偿尺寸, 它包括了两倍的横向边框的尺寸; 但dh的计算方法显然有问题: 最粗糙的考虑下, 我们应当补偿一个标题列外加两倍纵向边框的尺寸, 因此合理的代码应该为
dh = GetSystemMetrics(SM_CYFRAME) * 2 + GetSystemMetrics(SM_CYCAPTION);
使用这样计算来的视窗尺寸创建了视窗后, 我使用尺子去测量了客户区域的实际尺寸, 得到的结果比预想中的稍大.
经过多次尝试, 我找到了一组这样的补偿值:
横向: window_width = client_width + 6
纵向: window_height = client_height + 28
而Windows 7下开启Aero运行GetSystemMetrics(SM_CXFRAME), GetSystemMetrics(SM_CYCAPTION)得到的结果为8, 22. 我无法得出如何从GetSystemMetrics(SM_CXFRAME), GetSystemMetrics(SM_CYCAPTION)得到正确的补偿值. 希望EGE作者能在此对这段代码予以说明.


  • EGE娘
  • 鸭梨山大
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是这样的,它先会创建一个略大一些的窗口,然后再修正到精确大小
先创建略大的,可以在分辨率较小的机器上,减少一开始就被任务栏遮挡一部分的机会


2025-11-13 18:58:43
广告
不感兴趣
开通SVIP免广告
  • User32
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
表示很早前无源码情况下在 Aero 和 Classic 切换前后用 GetClientRect 测量过的说~


  • Lemoneee
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前辈好


  • Lemoneee
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
刚刚看到了window_setviewport, 终于了解了.


  • EGE娘
  • 鸭梨山大
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是在看新的代码吗?加我QQ


  • Lemoneee
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
偶不用QQ肿么办


  • EGE娘
  • 鸭梨山大
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
那你用啥IM ?


2025-11-13 18:52:43
广告
不感兴趣
开通SVIP免广告
  • Lemoneee
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
IM这种高级玩意儿还木有用过


  • EGE娘
  • 鸭梨山大
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
code review 时要用。。


  • Lemoneee
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
乃们用什么IM? 偶看看能不能现注册一个.
另外偶水平渣渣, code review就坐在一边旁听吧


  • EGE娘
  • 鸭梨山大
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
qq/yy 吧,不过多数qq


  • User32
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
......您才是前辈


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 12回复贴,共1页
<<返回ege吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示