/*创建左面的操作面板*/
m_lPanel.Create(IDD_DIALOG_LEFT, this);
m_lPanel.ShowWindow(SW_SHOW);
m_lPanel.GetWindowRect(wndRC);
nWidth = wndRC.Width();
/*计算左面板的区域,把左面板放到这个区域中*/
LpnlRC.left = 0;
LpnlRC.top = 0;
LpnlRC.bottom = nHeight;
//LpnlRC.bottom = 500;
LpnlRC.right = nWidth;
m_lPanel.MoveWindow(LpnlRC);
/*创建棋盘面板*/
m_ChessBoardPanel.Create(IDD_DIALOG_CHESS_BOARD, this);
m_ChessBoardPanel.ShowWindow(SW_SHOW);
/*计算棋盘的区域,把棋盘放到这个区域中,仍然使用变量pnlRC*/
MpnlRC.left = LpnlRC.right;/*中面板紧邻左面板*/
MpnlRC.top = 0;
MpnlRC.bottom = nHeight;
MpnlRC.right = cltRC.Width() - 50;/*临时处理*/
m_ChessBoardPanel.MoveWindow(MpnlRC);
return TRUE;
}
BOOL CChessBoard::OnInitDialog()
{
CDialog::OnInitDialog();
/*加载棋盘位图*/
OnPaint();//去掉这句,自动执行这个函数
return TRUE;
}
棋盘对话框的.parent=主对话框的.this;就是把主对话框的窗口作为棋盘对话框的父窗口
在主窗体的重绘里,触发一下子窗体的绘制试试呢?
_lPanel是不是控件panel的变量,如果是,有两种可能:
1.位图被panel控件盖住了,你可以先屏蔽这个控件试试
2.m_ChessBoardPanel模盘面板的坐标不对或不合适,你单步执行看看坐标值,有可能进行坐标转换,就是客户区坐标和屏幕坐标的转换:ClientToScreen和ScreenToClient