MFC工程中怎么得到相对窗口的坐标

MFC工程中怎么得到相对窗口的坐标,第1张

用记事本打开工程目录下的rc文件

搜索你的控件ID,里面有记录

以编辑框为例,搜索IDC_EDIT1找到如下文字

EDITTEXT IDC_EDIT1,64,24,55,15,ES_AUTOHSCROLL

里面64,24是指控件左上角相对窗口左上角的座标,

55,15,是指控件的宽高

修改这里的数字,改成你想要的值,然后重新打开工程就行了

至于究竟要修改成多少,可以目测,也可以下载个电脑尺(JRuler)量一量

朋友,得到图层的空间参考需要在ILayer和IGeoDataset接口之间进行转换:首先使用ILayer接口得到图层ILayer layer=mapLayer[i]; 然后转换到IGeoDataset接口,访问IGeoDataset接口的SpatialReferenceName属性即可。

你这个程序是捕捉0到9的按键状态,按下再松开时才会记录,想要识别所有按键,把for循环范围扩大。

比如for(charch=32;ch<=127;ch++)这样就包含了特殊符号及大小写字母还有数字。

但是,这个代码是有问题的!

一、你这个代码需在键位已经按下后启动才能识别,否则启动时没有按下对应键位,程序就结束了。要嵌套死循环,让其一直检测。

二、直接扩大ASCII区间,像上面的那样32~127,识别字母区间会被防毒软件直接判断为病毒!!。

三、GetAsyncKeyState不是C语言库函数,是window的函数,换其它 *** 作系统就失效。

GetAsyncKeyState返回值最高位为1则说明对应ch的键被按下,所以这里用&0x8000来判断最高位。

四、想要捕获其它软件界面内容还有很多方法,比如:

1、通过windowAPI函数FindWindow来获取窗口句柄。

2、遍历窗口下控件句柄,找到输入框句柄。

3、通过窗口句柄找到进程id(GetWindowThreadProcessId函数),再通过id获取进程句柄(OpenProcess函数)。

4、向目标进程申请内存(VirtualAllocEx),再通过PostMessage函数异步发送消息获取目标控件内的内容(具体消息要结合控件类型,另外注意PostMessage是异步执行)。

具体自行查阅资料,一言两语说不清,上面步骤需先搞懂window消息机制。

注意:以上方法依然只限window系统,且有数据保护的控件无法获取。

五、或简单暴力的方法,直接写个定时截图,只要硬盘够不停桌面截图。

但不论写什么程序,和装摄像头一样,终究都会被发现。!!!!!!!!!!!!!

GetCursorPos获取的是屏幕坐标,GetClientRect是窗口坐标,两个坐标系不匹配,PtInRect结果当然错误。

你这个程序的正确做法:

PtInRect判断应该放在函数首部,如果这个判断返值为FALSE,那么后面的坐标计算根本没有必要,效率提升不说,还避免了坐标系映射之类的可能产生的影响。

在OnMouseMove里面,GetCursorPos没用并且会降低效率。判断坐标应该使用函数参数来进行即可。

遇到坐标系不同的情况,可以使用ScreenToClient/ClientToScreen函数对,将坐标转换为相同的坐标系,再进行运算和判断。

以上就是关于MFC工程中怎么得到相对窗口的坐标全部的内容,包括:MFC工程中怎么得到相对窗口的坐标、如何用ArcEngine编程得到当前图层的坐标系、C语言问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9652363.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存