Win32_GDI_绘制文字路径透明窗口
效果图:
前面字体是个透明窗口
后面是桌面背景
代码实现:
void MyMainDialog::TextPathWindow(LPCTSTR lpShowText) { HDC hdc = GetDC(m_hWnd); // 创建字体,并选入当前DC中 HFONT hfont = CreateFont(TEXT("华文行楷"), -80,0,900); HGDIOBJ hOldFont = SelectObject(hdc, hfont); // 路径的开始 BeginPath(hdc); SetBkMode(hdc,TRANSPARENT); // 设置背景透明 TextOut(hdc,18, 18, m_szShowText,lstrlen(m_szShowText)); // 输出文本 EndPath(hdc); //路径的结束 HRGN hrgn; hrgn = PathToRegion(hdc); // 根据路径创建HRNG SetWindowRgn(m_hWnd, hrgn, TRUE); // 设置窗口的HRNG // 删除字体对象 DeleteObject(SelectObject(hdc, hOldFont)); } // 在WM_INITDIALOG消息中加入 LRESULT MyMainDialog::OnInitDialog(LPARAM lParam) { // 添加消息响应代码 SetTimer(m_hWnd, 9999, 500, nullptr); m_szShowText = new TCHAR[100]; lstrcpy(m_szShowText, TEXT("正在回到原点")); TextPathWindow(m_szShowText); return 0; } // 在WM_TIMER消息中添加 LRESULT MyMainDialog::OnTimer(WPARAM wParam) { // 添加消息响应代码 lstrcat(m_szShowText, TEXT(".")); if (lstrlen(m_szShowText) > 10) lstrcpy(m_szShowText, TEXT("正在回到原点")); TextPathWindow(m_szShowText); return 0; }