?? ljxwnd.cpp
字號:
//**************************************************************
//
//
//**************************************************************
// LjxWnd.cpp : implementation file
//
#include "stdafx.h"
#include "LjxWnd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//#define IDB_SPLASHWND 104
#include "..\\resource.h"
/////////////////////////////////////////////////////////////////////////////
// CLjxWnd
CLjxWnd::CLjxWnd()
{
m_bitmap.LoadBitmap(IDB_SPLASHWND);//拷貝資源位圖
m_bitmap.GetBitmap(&bm);//得到位圖結構中的大小信息
}
CLjxWnd::~CLjxWnd()
{
}
BEGIN_MESSAGE_MAP(CLjxWnd, CWnd)
//{{AFX_MSG_MAP(CLjxWnd)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLjxWnd message handlers
void CLjxWnd::CreatLjxWnd()
{
//建立大小與位圖大小相同的窗口
CreateEx(0,
AfxRegisterWndClass(0,AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
"animatesplash",
WS_POPUP,
0,0,bm.bmWidth,bm.bmHeight,
NULL,
NULL,
NULL );
}
void CLjxWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
MemDC.CreateCompatibleDC(NULL);//建立一個和dc兼容的內存DC放置位圖
old_bitmap=MemDC.SelectObject(&m_bitmap);//將創建的位圖選入內存DC
int i,j,stepx,stepy,dispnum,x,y;
int ljx[20][20]; //數組記錄已顯示過的數據組
for ( i=0; i<20; i++ )
for ( j=0; j<20; j++ )
ljx[i][j]=0;
stepx=bm.bmWidth/20;
stepy=bm.bmHeight/20;
srand( (unsigned)time( NULL ) );
dispnum=0;
//記錄已顯示過的數據組的個數
while(1)
{ x=rand() % 20;
y=rand() % 20;
if ( ljx[x][y] ) //如果為1,則已經顯示了,跳出循環。
continue;
ljx[x][y]=1; //顯示,設置為1
dc.StretchBlt(
x*stepx, y*stepy,
//目標設備邏輯橫、縱坐標
stepx,stepy,
//顯示位圖的像素寬、高度
&MemDC,
//位圖內存設備對象
x*stepx, y*stepy,
//位圖的起始橫、縱坐標
stepx,stepy,
//位圖的像素寬、高度
SRCCOPY);
dispnum++;
if ( dispnum >=400 )
break;
Sleep(10);
}
MemDC.SelectObject(old_bitmap);
// Do not call CWnd::OnPaint() for painting messages
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -