我在对话框的OnPaint()里面添加了以下代码,希望能在指定地方输出“test“几个字,可是并没有输出,不知道我哪里写错了,请大家指点下
CPaintDC dc(this); // 用于绘制的设备上下文
CRect r(55,55,200,200);
CString sItem = "test";
CDC fontDC;
fontDC.CreateCompatibleDC(&dc);
CFont fontSel;
CFont* pOldFont;
fontSel.CreateFont(16,0,0,0,FW_NORMAL,
false,false,false,
GB2312_CHARSET,
OUT_STROKE_PRECIS,
CLIP_STROKE_PRECIS,
PROOF_QUALITY,
VARIABLE_PITCH |FF_SWISS,
_T("楷体"));
pOldFont = fontDC.SelectObject(&fontSel);
fontDC.SetTextColor(RGB(255,0,0));
fontDC.TextOut(r.left + 2, r.top + 1, sItem);
fontDC.SelectObject(pOldFont);
dc.BitBlt(r.left, r.top, r.Width(), r.Height(),
&fontDC,
r.left, r.top, SRCCOPY); fontDC.DeleteDC();
CPaintDC dc(this); // 用于绘制的设备上下文
CRect r(55,55,200,200);
CString sItem = "test";
CDC fontDC;
fontDC.CreateCompatibleDC(&dc);
CFont fontSel;
CFont* pOldFont;
fontSel.CreateFont(16,0,0,0,FW_NORMAL,
false,false,false,
GB2312_CHARSET,
OUT_STROKE_PRECIS,
CLIP_STROKE_PRECIS,
PROOF_QUALITY,
VARIABLE_PITCH |FF_SWISS,
_T("楷体"));
pOldFont = fontDC.SelectObject(&fontSel);
fontDC.SetTextColor(RGB(255,0,0));
fontDC.TextOut(r.left + 2, r.top + 1, sItem);
fontDC.SelectObject(pOldFont);
dc.BitBlt(r.left, r.top, r.Width(), r.Height(),
&fontDC,
r.left, r.top, SRCCOPY); fontDC.DeleteDC();
解决方案 »
- 请教高手:mfc环境 winsock2 连接80端口 假连接和不发包问题
- 遇到already defined in 键盘记录.obj 错误
- 怎样在DLL被加载的时候显示一个窗口?
- VC中一个对话筐程序中,放置一个富文本控件"RichEdit"怎么就运行不起来了?
- 请教系统引导信息
- 写文件的时候程序或者机器崩溃,怎样防止数据被毁?
- 无模式对话框的问题,救救小弟!
- 有没有兄弟们想来南京做软件的呢?
- 多个子线程之间的消息相互传递总会出现问题,求高人指点
- 自定义消息的wParam和lParam的值都一样吗
- 为什么MSN只能启动一个实例?
- Blocking模式下,如何判断SOCKET连接是否断开?(在线等)
CBitmap bm;
bm.CreateCompatibleBitmap(&dc, width, height);
fontDC.SelectObject(&bm);
fontDC.CreateCompatibleDC(&dc);
// add
CRect rc;
GetClientRect(&rc);
CBitmap bm;
bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
fontDC.SelectObject(&bm);
// end
还是没有在对话框输出“test”哦
CDialog::OnPaint();
CPaintDC dc(this); // 用于绘制的设备上下文
CRect r(55,55,200,200);
CString sItem = "test";
CDC fontDC;
fontDC.CreateCompatibleDC(&dc);
// add
CRect rc;
GetClientRect(&rc);
CBitmap bm;
bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
fontDC.SelectObject(&bm);
// end
CFont fontSel;
CFont* pOldFont;
fontSel.CreateFont(16,0,0,0,FW_NORMAL,false,false,false,
GB2312_CHARSET,
OUT_STROKE_PRECIS,
CLIP_STROKE_PRECIS,
PROOF_QUALITY,
VARIABLE_PITCH |FF_SWISS,
_T("楷体"));
pOldFont = fontDC.SelectObject(&fontSel);
fontDC.SetTextColor(RGB(255,0,0));
fontDC.TextOut(r.left + 2, r.top + 1, sItem);
fontDC.SelectObject(pOldFont);
dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC,
r.left, r.top, SRCCOPY);
fontDC.DeleteDC();
或者将代码加到下面else里面的CDialog::OnPaint();前面(总之不要先执行CDialog::OnPaint();)
if (IsIconic())
{
CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
////////// add here CDialog::OnPaint();
}
r.left, r.top, SRCCOPY);
//////////////////////////////////////////////////////////////这句错了,应改为dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC,
0, 0, SRCCOPY);
CRect r(55,55,200,200);
CString sItem = "test";
CDC fontDC;
fontDC.CreateCompatibleDC(&dc);
// add
CRect rc;
GetClientRect(&rc);
CBitmap bm;
bm.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
fontDC.SelectObject(&bm);
// end
CFont fontSel;
CFont* pOldFont;
fontSel.CreateFont(16,0,0,0,FW_NORMAL,false,false,false,
GB2312_CHARSET,
OUT_STROKE_PRECIS,
CLIP_STROKE_PRECIS,
PROOF_QUALITY,
VARIABLE_PITCH |FF_SWISS,
_T("楷体"));
pOldFont = fontDC.SelectObject(&fontSel);
fontDC.SetTextColor(RGB(255,0,0));
fontDC.TextOut(r.left + 2, r.top + 1, sItem);
fontDC.SelectObject(pOldFont);
dc.BitBlt(r.left, r.top, r.Width(), r.Height(), &fontDC,
r.left, r.top, SRCCOPY);
fontDC.DeleteDC();
特别是pfans(pfans)
真的很感激
结帖