我创建了一个基于dlg的MFC五子棋程序,系统自动创建了一个对话框和相应的代码。我创建了一个对话框(操作对话框),用来包扩相应的操作(比如对局开始、结束等)。我又创建了一个棋盘对话框,其style设为child类型,主要想用来显示棋盘,所以在其OnPaint方法中加载了一个棋盘bmp文件。程序编译后,操作对话框可以显示出来,但棋盘位图不能显示出来,不知道为什么?难道是被父窗口给覆盖了?
有哪位朋友帮忙解惑???
棋盘对话框的相关代码如下:
C/C++ code
BOOL CChessBoard::OnInitDialog()
{
CDialog::OnInitDialog();
/*加载棋盘位图*/
OnPaint();
return TRUE;
}
void CChessBoard::OnPaint()
{
CPaintDC dc(this);
//加载棋盘位图
CBitmap bmp;
bmp.LoadBitmap(IDB_CHESS_BOARD);
int nBmpWidth,nBmpHeight;
//获取位图信息
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
nBmpWidth = bmpInfo.bmWidth;
nBmpHeight = bmpInfo.bmHeight;
//将位图绘制在整个窗口区域
CRect cltRC;
GetClientRect(cltRC);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
memDC.SelectObject(&bmp);
dc.StretchBlt(0,0,cltRC.Width(),cltRC.Height(),&memDC,0,0,nBmpWidth,nBmpHeight,SRCCOPY);
memDC.DeleteDC();
bmp.DeleteObject();
}
主程序对话框的相关代码:
C/C++ code
BOOL CMy_five_chessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CRect LpnlRC;/*左面板rect*/
CRect MpnlRC;/*中面板rect*/