开辟内存位图有一定的限制,太大了就不行。
以下是我开辟内存位图的操作,但是大小还不够,我想开2500*3000的,请大侠指点。int nMemX;
int nMemY;
CDC* pDC;
pDC=GetDC();
nMemX=pDC->GetDeviceCaps(HORZRES);
nMemY=pDC->GetDeviceCaps(VERTRES);
if((nMemX<1024)||(nMemY<768))
{
AfxMessageBox("分辨率不能小于1024*768!",MB_OK|MB_ICONEXCLAMATION);
return -1;
}
m_memDC.CreateCompatibleDC(pDC);
m_memBitmap.CreateCompatibleBitmap(pDC,nMemX+10,nMemY+20);
m_memDC.SelectObject(&m_memBitmap);
ReleaseDC(pDC);
以下是我开辟内存位图的操作,但是大小还不够,我想开2500*3000的,请大侠指点。int nMemX;
int nMemY;
CDC* pDC;
pDC=GetDC();
nMemX=pDC->GetDeviceCaps(HORZRES);
nMemY=pDC->GetDeviceCaps(VERTRES);
if((nMemX<1024)||(nMemY<768))
{
AfxMessageBox("分辨率不能小于1024*768!",MB_OK|MB_ICONEXCLAMATION);
return -1;
}
m_memDC.CreateCompatibleDC(pDC);
m_memBitmap.CreateCompatibleBitmap(pDC,nMemX+10,nMemY+20);
m_memDC.SelectObject(&m_memBitmap);
ReleaseDC(pDC);
解决方案 »
- 注册DLL
- MDI CLISTVIEW 右建菜单的问题
- 请教:printscreen热键在系统中处理路线。
- 关于通过局域网登录 oracle8的问题
- 如何获取用CFileDialog创建的对话框中输入的文件名,响应其按钮操作?
- 我有一个键盘钩子,如果它截到特定的键盘消息(如ctrl+A被按下),我能不能做到这个键盘消息不发到目前正Active的窗口???
- 请demetry进来拿分
- VC如何调用写好的ATL组件
- 紧急求助、非常罕见的问题、会VC的朋友都请进、帮忙UP也送分!
- 是不是程序员一定要会直接用代码编程,(WINDOWS APP)
- 请教---关于菜单无法正确显示的问题!!!
- 一个有点困惑的问题:
struct memMap
{
LPVOID lpDataHead ;
HFILE fileHandle ;
HANDLE memMapHandle ;
CString filePathName;
int maxBufSize ;
} ;
struct memMap memBuf;
void CReadDataDoc::AllocMemBuffer()
{
OFSTRUCT of ;
// create a common disk file
memBuf.fileHandle = OpenFile(memBuf.filePathName ,
&of,
OF_CREATE | OF_READWRITE | OF_SHARE_DENY_WRITE) ;
// check whether the file is valible
if(memBuf.fileHandle == (HFILE)-1)
{
CString MsgBuf ;
MsgBuf.Format("Create memory mapping failed !") ;
MessageBox(AfxGetMainWnd()->m_hWnd,
MsgBuf,
"Memory Map Failed",
MB_OK) ;
AfxGetMainWnd()->CloseWindow () ;
} // create memory map related to disk file
memBuf.memMapHandle = CreateFileMapping(
(HANDLE)memBuf.fileHandle,
NULL,
PAGE_READWRITE,
0,memBuf.maxBufSize,
"CG_MEMBUF") ; // create the view object to return a file pointer
memBuf.lpDataHead = MapViewOfFile(
memBuf.memMapHandle,
FILE_MAP_READ | FILE_MAP_WRITE,
0,0,
memBuf.maxBufSize);
memset(memBuf.lpDataHead,0,memBuf.maxBufSize) ;
}void CReadDataDoc::FreeMemBuffer()
{
if(memBuf.fileHandle != (HFILE) -1)
{
CloseHandle((HANDLE)memBuf.fileHandle ) ;
CloseHandle(memBuf.memMapHandle) ;
}
memBuf.fileHandle = (HFILE)-1 ;
}你试一试吧。