首页 > 代码库 > 【VC编程技巧】窗体?3.4利用bitmap改变对话框的背景。
【VC编程技巧】窗体?3.4利用bitmap改变对话框的背景。
效果图:
代码:
1.在对话框初始化函数OnInitDialog中加载bitmap,然后创建新的画刷。
// CBitmapDemoDlg メッセージ ハンドラー BOOL CBitmapDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // "バージョン情報..." メニューをシステム メニューに追加します。 // IDM_ABOUTBOX は、システム コマンドの範囲内になければなりません。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、 // Framework は、この設定を自動的に行います。 SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定 SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定 // TODO: 初期化をここに追加します。 CBitmap* pBitmap = new CBitmap; ASSERT(pBitmap); pBitmap->LoadBitmap(IDB_BKGROUND); //加载bitmap m_BKBrush.CreatePatternBrush(pBitmap); //创建画刷 delete pBitmap; return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。 }
2.添加windows消息WM_CTLCOLOR的响应函数。
HBRUSH CBitmapDemoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: ここで DC の属性を変更してください。 // TODO: 既定値を使用したくない場合は別のブラシを返します。 if (nCtlColor == CTLCOLOR_DLG ) //当前控件是对话框时,改变画刷 return (HBRUSH)m_BKBrush.GetSafeHandle(); return hbr; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。