一个MQL4常量问题

 
怎么正确使用 TERMINAL_SCREEN_DPI 常量?求懂的大神详细解说下。谢谢!
 

高清4K屏分辨率的问题,要转换下分辨率,把你的问题写在这里,其他人也能学习到。

 
Ziheng Zhuang:

高清4K屏分辨率的问题,要转换下分辨率,把你的问题写在这里,其他人也能学习到。

比如创建的标签、EDIT框、按钮和矩形框等,在程序中写入的数字分别为(起点坐标和大小)标签:10,10,50,20 EDIT框:52,10,50,20 按钮:10,30,50,20 矩形框:8,8,120,100 很显然,这个标签和EDIT框是在一行上,且是从标签框结束后的2像素开始绘制。这在我的电脑上显示正常,但放朋友的另一电脑上时,标签的显示就可能不完整了,也就是EIDIT框的起点坐标可能会覆盖标签。想问的是:如何利用这个DPI来实现简单快速换算,不用在程序里一个一个的修改相应的起点坐标?

另外:如果这个标签、EDIT框等的宽度、高度想在#define 中预定义,比如 #define LABEL_WIDTH (48)      #define LABEL_HEIGHT  (18) 等,那这个48宽和18的高又怎么通过DPI的这个常量来换算呢?——谢谢

 

举例:假设你要创建一个Edit......

   //高清/4K屏,需要计算一个转换比例SCALE
   double SCALE=TerminalInfoInteger(TERMINAL_SCREEN_DPI)/96.0;
   int x = 52,y = 10, w= 50,h = 20;
   
   x = int(x*SCALE);
   y = int(y*SCALE);
   w = int(w*SCALE);
   h = int(h*SCALE);
   CreateEdit(x,y,w,h);
 

MQL4参考里的这个,它的比例因子用的为啥是整数呢?

 

为什么你看着这个参考文档,还是不会编写呢?文档写的是云里雾里,看完文档你还是不知道怎么用这个DPI。

计算机编程中,整数相除结果只能是整数,小数部分抛弃了,比如 15/10 = 1 而不是1.5,只有15.0/10 或者15/10.0才是1.5

 
哈哈,表示看来是i因为我没有高清屏,所以似乎没遇到类似问题
 
没有高清屏,这个函数估计很长时间用不到