CPaintDC dc(m_hWnd); // 需要先画背景
CBitmap memBitmap;
CDC memDC;
memDC.CreateCompatibleDC((HDC)dc);
memBitmap.CreateCompatibleBitmap((HDC)dc, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
memDC.SelectBitmap((HBITMAP)memBitmap);
CDC bkDC;
bkDC.CreateCompatibleDC((HDC)memDC);
bkDC.SelectBitmap((HBITMAP)m_Bitmap);
memDC.BitBlt(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), (HDC)bkDC, 0, 0, SRCCOPY);
CCISBitmap *pBitmap;
for(int i = 0; i < 9; i++)
{
if(i == (iColum*3 + iRow))
{
pBitmap =pSelBitmap;
}
else
{
pBitmap = pUnSelBitamp;
}
pBitmap->DrawTransparent(&memDC, IconPos[i].left, IconPos[i].top, RGB(72, 135, 226), i, ICON_WH);
} dc.BitBlt(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), (HDC)memDC, 0, 0, SRCCOPY);
memDC.SelectBitmap((HBITMAP)NULL);
//::DeleteDC(memDC); //前面没有全屏,这里补
DWORD dwState = (SHFS_HIDETASKBAR|SHFS_HIDESTARTICON|SHFS_HIDESIPBUTTON);
SHFullScreen(m_hWnd, dwState);
CRect rc;
SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
SetWindowPos(m_hWnd,0,0,rc.Width(),rc.Height(),SWP_SHOWWINDOW); return 0;目前OnPaint()函数是这么实现的,图标什么的都能实现,可是前面没有全屏,后面向上移动了一下,结果看着总是有停顿。怎么解决呢?能开始就全屏吗?不要后面补了。系统是wm5的。开始的时候屏幕最上面的状态条没有覆盖。
CBitmap memBitmap;
CDC memDC;
memDC.CreateCompatibleDC((HDC)dc);
memBitmap.CreateCompatibleBitmap((HDC)dc, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
memDC.SelectBitmap((HBITMAP)memBitmap);
CDC bkDC;
bkDC.CreateCompatibleDC((HDC)memDC);
bkDC.SelectBitmap((HBITMAP)m_Bitmap);
memDC.BitBlt(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), (HDC)bkDC, 0, 0, SRCCOPY);
CCISBitmap *pBitmap;
for(int i = 0; i < 9; i++)
{
if(i == (iColum*3 + iRow))
{
pBitmap =pSelBitmap;
}
else
{
pBitmap = pUnSelBitamp;
}
pBitmap->DrawTransparent(&memDC, IconPos[i].left, IconPos[i].top, RGB(72, 135, 226), i, ICON_WH);
} dc.BitBlt(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), (HDC)memDC, 0, 0, SRCCOPY);
memDC.SelectBitmap((HBITMAP)NULL);
//::DeleteDC(memDC); //前面没有全屏,这里补
DWORD dwState = (SHFS_HIDETASKBAR|SHFS_HIDESTARTICON|SHFS_HIDESIPBUTTON);
SHFullScreen(m_hWnd, dwState);
CRect rc;
SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
SetWindowPos(m_hWnd,0,0,rc.Width(),rc.Height(),SWP_SHOWWINDOW); return 0;目前OnPaint()函数是这么实现的,图标什么的都能实现,可是前面没有全屏,后面向上移动了一下,结果看着总是有停顿。怎么解决呢?能开始就全屏吗?不要后面补了。系统是wm5的。开始的时候屏幕最上面的状态条没有覆盖。
解决方案 »
- Clistbox问题
- 请教,vs2010 win32 dll project ,生成了dll却没有相应的lib,如何解决
- 这样hook那里出错了吗?
- 用directx 8好还是directx 9好?
- 一个连接数据库的问题
- 怎样得到一个CString类型的长度?谢谢!
- 如何在CtreeCtrl中实现遍历啊?
- 这段程序是想显示一个属性表的但是不知道运行出错 在呢人 很急 一直搞不出来 感觉很无助 谢谢帮忙
- vector
- softice的bpx hmemcpy不能使用的问题。
- 继续问 关于CArchive()构造函数第二个参数 bNoFlushOnDelete属性
- VC 如何把word文档转为带格式的html文件
SHFullScreen(m_hWnd, dwState);
CRect rc;
SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
SetWindowPos(m_hWnd,0,0,rc.Width(),rc.Height(),SWP_SHOWWINDOW);代码放在别的函数中响应
有没有什么办法不用这段代码,直接dc.BitBlt(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), (HDC)memDC, 0, 0, SRCCOPY);
就能全屏?
DWORD dwState = (SHFS_HIDETASKBAR|SHFS_HIDESTARTICON|SHFS_HIDESIPBUTTON);
SHFullScreen(m_hWnd, dwState);
CRect rc;
SetRect(&rc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
SetWindowPos(m_hWnd,0,0,rc.Width(),rc.Height(),SWP_SHOWWINDOW); 移动到LRESULT OnEraseBkgnd(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)函数里面,然后就现象就可以忍受了。
BOOL CXXFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.x=0;
cs.y=0;
cs.cx = ::GetSystemMetrics(SM_CXSCREEN);
cs.cy = ::GetSystemMetrics(SM_CYSCREEN); return TRUE;
}
RECT windowrect;
windowrect.left=(long)0;
windowrect.top=(long)0;
windowrect.right=(long)GetSystemMetrics(SM_CXSCREEN);
windowrect.bottom=(long)GetSystemMetrics(SM_CYSCREEN);
dwExstyle=WS_EX_APPWINDOW;
dwStyle=WS_POPUP;AdjustWindowRectEx(&windowrect,dwStyle,false,dwExstyle);
if(!(hwnd=CreateWindowEx(dwExstyle,
L"OpenGL",
L"OpenGL",
WS_CLIPSIBLINGS|WS_CLIPCHILDREN|dwStyle,
windowrect.left,
windowrect.top,
windowrect.right-windowrect.left,
windowrect.bottom-windowrect.top,
NULL,
NULL,
hinstance,
NULL)))
{
MessageBox(NULL,L"无法创建窗口",L"OpenGL",MB_OK|MB_ICONSTOP);
return false;
}