如何获得静态控件的边框宽度? 做一个显示图片的项目,鼠标点中的像素颜色与经鼠标坐标换算后从位图中求出的像素颜色总是不一致,之间存在一个固定的位置偏移量,后来发现可能是装图片的静态控件有边框宽度,我在坐标换算时没有考虑这个问题。假设有一个ID为IDC_STATIC的控件,现在我想知道如何获得静态控件的边框宽度? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 遍历所有静态控件,然后getwindowtext()取得他的文字,然后与你要取得的字体做比较。是的话,然后就getclientrect就可以获取了 你现在是怎么做的GetClientRect就应该是没有边框的 你把默认的IDC_STATIC 改成别的ID号。然后GetClientRect就应该可以了 GetClientRect可以得到边框的宽度吗?我是指的那个边框的宽,不是整个控件的尺寸啊? 其实我要做的事很简单,当鼠标点击控件中的图片时得到一个鼠标的位置,再根据这个位置找到位图中相应的像素点,把这个像素点的值求出来,现在发现一个问题,比如我鼠标的横坐标算出是n,读取的却是位图中横坐标是n+3(或者是n+2,我没有仔细检验,总之是每次都偏移了2-3个像素点)这个点的像素灰度。CPoint Point_1; GetCursorPos(&Point_1);CRect rct1;GetDlgItem(IDC_STATIC1)->GetWindowRect(&rct1);//IDC_STATIC1就是我画了图的静态控件long temp_distance=Point_1.x-rct1.left;//temp_distance存的是位图中的横坐标位置。我发现temp_distance的值总是有一个2-3像素的误差。写成long temp_distance=Point_1.x-rct1.left-3;好像就对了,我怀疑这个3就是IDC_STATIC1边框的宽度。 换句话说,我想求的是一个静态控件的BorderWidth CRect CControlBar::GetBorders(); CRect的上下左右分别是上下左右边框的宽度 SetBorders(CRect * rc)设置宽度MainFrame的边框宽度可以间接得到, 先GetWindowRect(&rc1); 再GetClientRect(&rc2); 再ClientToScreen(&rc2); 然后width = rc2.left - rc1.left;GetSystemMetrics(xxxx) 当xxxx=SM_CYFRAME,获得边框宽度 VC6.0 和 VS2008有 软件使用的帮助文档没? 在开放平台的趋势下,感觉桌面软件有再次辉煌的趋势,大家以为呢? 鼠标钩子,跳了15个对话框,怪哉怪哉?! 改CCombox的高度 在对话框中如何改变一个按钮的颜色(散分) 窗口不够大? 在线程中使用定时器,高手帮忙看看 贺岁贴【OpenGL问题 100分】做过的朋友,斑竹,高手都进来!!怎样把一张整个的遥感图贴到DEM上!! 怎么把一个文件放入剪贴板? tapi 在WIN2000下的使用问题 我想让窗口的最大,最小宽度随着高度改变用OnGetMinMaxInfo能做到吗? DIB位图坐标系的疑问
GetClientRect就应该是没有边框的
GetCursorPos(&Point_1);
CRect rct1;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rct1);//IDC_STATIC1就是我画了图的静态控件
long temp_distance=Point_1.x-rct1.left;//temp_distance存的是位图中的横坐标位置。我发现temp_distance的值总是有一个2-3像素的误差。写成long temp_distance=Point_1.x-rct1.left-3;好像就对了,我怀疑这个3就是IDC_STATIC1边框的宽度。
CRect的上下左右分别是上下左右边框的宽度
SetBorders(CRect * rc)设置宽度MainFrame的边框宽度可以间接得到,
先GetWindowRect(&rc1);
再GetClientRect(&rc2);
再ClientToScreen(&rc2);
然后width = rc2.left - rc1.left;GetSystemMetrics(xxxx)
当xxxx=SM_CYFRAME,获得边框宽度