在ClassWizard里面转到MemberVariables,选上编辑框的ID后,点击右边Add Variables,输入名称就可以指定变量。以后调用该变量就行了。。
获得编辑框的代码如下:
UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。
代码 大概就是这样 有几个关键函数仔细一下,要是要完整代码呢留言
CDC memDC;
CBitmap memBitmap,pOldBitmap;
CWindowDC dc(GetDesktopWindow());
memDCCreateCompatibleDC(&dc);
int nWidth,nHeight;
/ nWidth=GetSystemMetrics(SM_CXSCREEN);
nHeight=GetSystemMetrics(SM_CYSCREEN);/
CRect rect;
GetDesktopWindow()->GetWindowRect(rect);
ClientToScreen(&rect);
nWidth=rectWidth();
nHeight=rectHeight();
memBitmapCreateCompatibleBitmap(&dc,nWidth,nHeight);
pOldBitmap=memDCSelectObject(&memBitmap);
// memDCStretchBlt(0,0,rectWidth(),rectHeight(),&dc,0,0,rectWidth(),rectHeight(),SRCCOPY);
memDCBitBlt(0,0,nWidth,nHeight,&dc,0,0,SRCCOPY);
BITMAPFILEHEADER BMFhead;
BITMAPINFOHEADER BMIhead;
BMFheadbfReserved1=0;
BMFheadbfReserved2=0;
BMFheadbfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BMFheadbfSize=BMFheadbfOffBits+nWidthnHeight4;
BMFheadbfType=0x4d42;
BMIheadbiBitCount=32;
BMIheadbiClrImportant=0;
BMIheadbiClrUsed=0;
BMIheadbiSizeImage=0;
BMIheadbiXPelsPerMeter=0;
BMIheadbiYPelsPerMeter=0;
BMIheadbiCompression=BI_RGB;
BMIheadbiHeight=nHeight;
BMIheadbiPlanes=1;
BMIheadbiSize=sizeof(BITMAPINFOHEADER);
BMIheadbiWidth=nWidth;
DWORD dwSize=nWidthnHeight4;
BYTE pData=new BYTE[dwSize];
GetDIBits(memDCm_hDC,(HBITMAP)memBitmapm_hObject,0,nHeight,pData,(LPBITMAPINFO)&BMIhead,DIB_RGB_COLORS);
CFile file;
fileOpen("testbmp",CFile::modeCreate | CFile::modeWrite);
fileWrite(&BMFhead,sizeof(BITMAPFILEHEADER));
fileWrite(&BMIhead,sizeof(BITMAPINFOHEADER));
fileWrite(pData,dwSize);
fileClose();
memDCSelectObject(pOldBitmap);
MessageBox("绘图完毕");
GetParent()->ShowWindow(SW_SHOW);
有现成的ScreenToClient函数,你可以百度搜一下。
例:
void CTest25Dlg::OnButton1()
{
CRect r(0,0,100,100);
CPoint pt(0,0);
ScreenToClient(&r);
ScreenToClient(&pt);
}
执行下面的两行后,r,pt的值变成了相对对话框左上角的值
用了while(1)当然卡死了,建议任何情况下都不要用直接while(1),否则会占慢一个CPU核心,如果实在需要while(1),那么务必在里面加上一句Sleep让它休息“一会儿”,这个休息时间对人来说可能看不出区别,但是对电脑来说则是大大降低了负载。
建议在内部while(1)加Sleep(10);也就是10毫秒执行一次
MSDN上有一个方法,可以取得这些信息。具体如下:
这是MFC中的调用方式:
HDC hdc=GetDC(NULL); //获得屏幕设备描述表句柄
int ScrWidth=GetDeviceCaps(hdc,HORZRES); //获取屏幕水平分辨率
int ScrHeight=GetDeviceCaps(hdc,VERTRES); //获取屏幕垂直分辨率
ReleaseDC(NULL,hdc); //释放屏幕设备描述表
接下来就不用我说了吧,取得,设置,变化时再取得在设置。
先给编辑框指定变量,调用变量就可以调用编辑框里面的内容了。
在ClassWizard里面转到MemberVariables,选上编辑框的ID后,点击右边Add Variables,输入名称就可以指定变量。以后调用该变量就行了。。
获得编辑框的代码如下:
UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。
mfc不同电脑大小不同屏幕大小不一样,分辨率一样。根据查询相关公开信息,mfc程序界面由多个子窗口组成,屏幕大小不一样,分辨率一样显示不全,先是在屏幕长度较小,宽度较大的电脑上制作的对话框。只需要获取当前屏幕的分辨率,再将程序的宽和高设置为其分辨率的倍数即可。但是这里需要注意的是,需要写一个resize函数使得控件大小随客户区大小改变。
以上就是关于MFC 编辑框中获取选中文字的信息!!全部的内容,包括:MFC 编辑框中获取选中文字的信息!!、如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式、MFC中,我能过GetCursorPos()来获取鼠标当前的屏幕坐标,但是我想获取当前窗口的坐标。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)