MFC怎么获得当前屏幕大小

MFC怎么获得当前屏幕大小,第1张

像素大小?

    int nScreenWidth, nScreenHeight;  

    nScreenWidth = GetSystemMetrics(SM_CXSCREEN);  

    nScreenHeight = GetSystemMetrics(SM_CYSCREEN);

物理尺寸无法简单获取,要么使用驱动级底层库,要么需要进行rain0级的驱动开发。

对于这个问题你必须首先知道:

1,你要知道系统自身是设置过窗口的显示的位置的,就在CreateWindow的时候,但是你最好还是不要改那个位置,因为那是Microsoft给我们提供的源代码,你把那个改了之后,那么以后你所有的窗口的显示都是你现在的设置了;

2,必须是窗口创建成功后的,你才能设置它的位置,就像是:当一个东西不存在的时候你是不能对它作任何要求的;

3,你要找到窗口刚刚创建成功时是在哪个地方,显示的时候是在什么地方,这个我可以告诉你,是在Instance()函数的里面完成的,但是,这只是把这个应用程序实例化了,这个里面只有一个DoModal(),基本上这个里面是改不了什么东西的,还有一个位置就是OnInitDialog()函数,它是来初始化这个Dialog的,自然它的显示位置和大小都是可以控制的,那么你在此处调用MoveWindow()是可以的。

至于还有一个函数是SetWindowPos(),这个我刚试过了,对与对话框的应用程序是不行的,这应该是单文档和多文档的应用程序中使用d出式窗口的时候可以使用。

在OnInitDialog()这个里面使用MoveWindow(1,1,100,100)就可以显示在(1,1)这个位置上显示一个宽100,高100的对话框了。。。。

你的思路不对

第一  直接把WriteLog里的值赋值给m_Log 然后刷新edit值就可以看见

第二  直接写个WriteLog函数 把内容赋值给m_Log 刷新edit值也可以

在初始化函数里你什么都没有  也不明白你说的关联是什么意思

把一个函数跟一个变量关联? 怎么个关联法?

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

你这个程序的正确做法:

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

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

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

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

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

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

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

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

55,15,是指控件的宽高

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

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

int nWidth=GetSystemMetrics(SM_CXSCREEN); int nHeight=GetSystemMetrics(SM_CYSCREEN); for(int i=0;i<nWidth;i++) { for(int j=0;j<nHeight;j++) { HDC hDC = ::GetDC(NULL); //获取屏幕DC //2、 获取当前鼠标位置像素值 CPoint pt; ptx=nWidth; pty=nHeight; COLORREF clr = ::GetPixel(hDC, ptx, pty); if() //你要做的判断 { } } }

以上就是关于MFC怎么获得当前屏幕大小全部的内容,包括:MFC怎么获得当前屏幕大小、MFC中怎样将设置d出窗口在屏幕的位置、如何用VC++2010编写一个获取屏幕分辨率的MFC 以下是我的编写过程,实在进行不下去了,求指导!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/10158883.html

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

发表评论

登录后才能评论

评论列表(0条)

保存