上一篇: VS2022 的 MFC 安装之 Hello World ---- IT笔记之1
MFC 画图,除了可以画各种几何图形,还可以画文本,废话少说,我们用 VS2022 ,使用 MFC 画一个带阴影的文本,输出显示“Hello,worid!”
#pragma once
#include
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow : public CFrameWnd
{
public:
CMainWindow();
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
#include "DrawText.h"
CMyApp myapp;
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
CMainWindow::CMainWindow()
{
Create(NULL, _T("Hello World"));
}
void CMainWindow::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CFont font;
font.CreatePointFont(720, _T("微软雅黑"));
dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
CString str = _T("Hello, World!");
rect.OffsetRect(2, 2);
dc.SetTextColor(RGB(0, 0, 0));
dc.DrawText(str, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
rect.OffsetRect(-2, -2);
dc.SetTextColor(RGB(255, 255, 0));
dc.DrawText(str, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
void CMainWindow::OnPaint()
{
CRect rect;
GetClientRect(&rect);
CPaintDC dc(this);
dc.SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
dc.SetBkMode(TRANSPARENT);
for (int i = 0; i < 3600; i += 150)
{
LOGFONT lf;
::ZeroMemory(&lf, sizeof(lf));
lf.lfHeight = 160;
lf.lfWeight = FW_BOLD;
lf.lfEscapement = i;
lf.lfOrientation = i;
::lstrcpy(lf.lfFaceName, _T("微软雅黑"));
CFont font;
font.CreatePointFontIndirect(&lf);
CFont* pOldFont = dc.SelectObject(&font);
dc.TextOutW(0, 0, CString(_T(" Hello,World!"))); //前面保留足够多的空格是为了保证不内卷,如果你把空格删了,肯定内卷
dc.SelectObject(pOldFont);
}
}