// MyGameFrame.cpp : implementation file
//#include "stdafx.h"
#include "mygame.h"
#include "MyGameFrame.h"
#include "resource.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// MyGameFrameIMPLEMENT_DYNCREATE(MyGameFrame, CFrameWnd)MyGameFrame::MyGameFrame():bitmapnum(0)
{
// MessageBox("constructor before create"); //////////////////////////////////////////////////////////////////////////////////
RECT rect;
// Create(NULL,"绘图窗口");
Create(NULL,"hello",WS_BORDER|WS_OVERLAPPED|WS_MINIMIZEBOX|WS_CAPTION|WS_SYSMENU);//WS_THICKFRAME|
CClientDC dc(this);
int width=dc.GetDeviceCaps(HORZRES);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int height=dc.GetDeviceCaps(VERTRES);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!! GetWindowRect(&rect);

width=(width-(rect.right-rect.left))/2;
height=(height-(rect.bottom-rect.top))/2; MoveWindow(width,height,(rect.right-rect.left),(rect.bottom-rect.top),true);///////////////////////////////////////////////////////////////////////////////////
GetClientRect(&rect);
mdc=new CDC;
bitmap=new CBitmap;
mdc->CreateCompatibleDC(&dc);
bitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"\pic040.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);
//是不是不支持中文文件名和文件路径

mdc->SelectObject(bitmap); mdc2=new CDC;
bitmap2=new CBitmap;
mdc2->CreateCompatibleDC(&dc);
// mdc2->CreateCompatibleDC(mdc);//????????????????????????????????????????????// bitmap2->LoadBitmap("c:\\hill.bmp");//????????????????????? bitmap2->m_hObject=(HBITMAP)::LoadImage(NULL,"\hill.bmp",IMAGE_BITMAP,200,200,LR_LOADFROMFILE);
mdc2->SelectObject(bitmap2);
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON2); activebitmap=new CBitmap[7];
for(int i=0;i<=6;i++)
{
CString name;
name.Format("\horse\\7-%d.bmp",i+1);
(activebitmap+i)->m_hObject=(HBITMAP)::LoadImage(NULL,name,IMAGE_BITMAP,200,200,LR_LOADFROMFILE);
}
// MessageBox("constructor after create");
}MyGameFrame::~MyGameFrame()
{
delete mdc;
delete bitmap;
delete mdc2;
delete bitmap2;
delete[]activebitmap;}
BEGIN_MESSAGE_MAP(MyGameFrame, CFrameWnd)
//{{AFX_MSG_MAP(MyGameFrame)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_RBUTTONDOWN()
ON_WM_TIMER()
//}}AFX_MSG_MAP
// ON_LBN_SELCHANGE(ID_LIST,OnPaint)
ON_COMMAND(1,OnRButtonDown)
END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////
// MyGameFrame message handlersvoid MyGameFrame::OnPaint() 
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
RECT rect;
GetClientRect(&rect);
dc.BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY);
SetIcon(m_hIcon,true);//什么是大图标小图标???????
SetIcon(m_hIcon,false);
}int MyGameFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

//////////////////////////////////////////////////////////////////////////////// listbox=new CListBox;
listbox->CreateEx(WS_EX_CLIENTEDGE,"listbox",NULL,LBS_STANDARD|WS_VISIBLE|WS_CHILD,
CRect(10,50,180,300),this,ID_LIST); CString item[]={
"BLACKNESS","DSTINVERT","MERGECOPY","MERGEPAINT","NOTSRCCOPY","NOTSRCERASE",
"PATCOPY","PATINVERT","PATPAINT","SRCAND","SRCCOPY","SRCERASE","SRCINVERT",
"SRCPAINT","WHITENESS"
};
DWORD raster[]= {
BLACKNESS,DSTINVERT,MERGECOPY,MERGEPAINT,NOTSRCCOPY,NOTSRCERASE,
PATCOPY,PATINVERT,PATPAINT,SRCAND,SRCCOPY,SRCERASE,SRCINVERT,
SRCPAINT,WHITENESS
};

int index;

for(int i=0;i<=14;i++)
{
index=listbox->AddString(item[i]);
listbox->SetItemData(index,raster[i]);
} listbox->SelectString(10,"SRCCOPY");
CString s; SetTimer(1,100,NULL);
return 0;
}
void MyGameFrame::OnRButtonDown(UINT nFlags, CPoint point) 
{
CMenu menu;
menu.CreatePopupMenu(); CString item[]={
"BLACKNESS","DSTINVERT","MERGECOPY","MERGEPAINT","NOTSRCCOPY","NOTSRCERASE",
"PATCOPY","PATINVERT","PATPAINT","SRCAND","SRCCOPY","SRCERASE","SRCINVERT",
"SRCPAINT","WHITENESS"
};
DWORD raster[]= {
BLACKNESS,DSTINVERT,MERGECOPY,MERGEPAINT,NOTSRCCOPY,NOTSRCERASE,
PATCOPY,PATINVERT,PATPAINT,SRCAND,SRCCOPY,SRCERASE,SRCINVERT,
SRCPAINT,WHITENESS
};

int index;

for(int i=0;i<=14;i++)
{
menu.AppendMenu(MF_BYCOMMAND,i,item[i]);
} CPoint rc;
GetCursorPos(&rc);
menu.TrackPopupMenu(TPM_RIGHTBUTTON,rc.x,rc.y,this); CFrameWnd::OnRButtonDown(nFlags, point);
}void MyGameFrame::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
CDC*mdc3=new CDC;

CClientDC dc(this);
mdc3->CreateCompatibleDC(&dc);
bitmapnum++;
if(bitmapnum==7) bitmapnum=0;
//bitmapnum是我定义的MyGameFramede的一个属性
mdc3->SelectObject(activebitmap+bitmapnum);
// dc.BitBlt(200,100,230,200,mdc3,0,0,SRCCOPY);
dc.BitBlt(200,100,230,200,mdc3,1,0,SRCAND);
dc.BitBlt(200,100,230,200,mdc3,0,0,SRCPAINT);
//为什么不能循环???????????????????????????????????????????????????????

CFrameWnd::OnTimer(nIDEvent);
}