傳統靜態關於視窗單調,欲實現電影字幕般的動態文字顯示效果。
App.InitInstance 移除選單、標題、邊框,MoveWindow 覆蓋全螢幕,隱藏工作列 (FindWindow("Shell_TrayWnd"))。MainFrame::OnClose 恢復工作列。View::OnPaint 雙緩衝繪製背景 BMP,OnEraseBkgnd 回傳 TRUE 防止閃爍。Popup/NoBorder 對話框,放置 CStatic 佔滿客戶區。View 中 Create、MoveWindow (預留邊框)、ShowWindow。ZgMemDC、ZgDraw、TitleShow、AutoFont 等類別,修改字體適配系統風格。對話框初始化時逐行加入動態顯示內容。PreTranslateMessage 過濾 VK_RETURN/VK_ESCAPE 返回 TRUE。' App.InitInstance
m_pMainWnd->SetMenu(NULL);
m_pMainWnd->ModifyStyle(WS_THICKFRAME|WS_CAPTION, 0);
m_pMainWnd->MoveWindow(CRect(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN)), TRUE);
FindWindow("Shell_TrayWnd",NULL)->ShowWindow(SW_HIDE);
' View::OnPaint 雙緩衝貼背景
HBITMAP hbm = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BACKBMP));
HDC hMem = CreateCompatibleDC(NULL);
SelectObject(hMem, hbm);
StretchBlt(dc.m_hDC, 0,0,1024,768, hMem, 0,0,1024,768, SRCCOPY);
DeleteDC(hMem); DeleteObject(hbm);
' 對話框建立與字幕載入
m_pAboutDlg = new CShowAboutDlg();
m_pAboutDlg->Create(IDD_ABOUT);
m_pAboutDlg->MoveWindow(CRect(18,18,CX-13,CY-16), TRUE);
m_pAboutDlg->m_AboutCtrl.MoveWindow(rect, TRUE);
m_pAboutDlg->ShowWindow(SW_SHOW);
' m_pAboutDlg->m_AboutCtrl.AddText(...動態字幕內容...)
編譯執行即可看到全螢幕背景配合動態字幕播放的關於視窗。