文書番号: 401943
最終更新日: 2003/11/10
class CMyDlg : public CDialog { private: HICON hIcon; // アイコンのハンドル public: CMyDlg(CWnd* pParent = NULL); // コンストラクタ protected: afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() }; // メッセージマップ BEGIN_MESSAGE_MAP(CMyDlg, CDialog) ON_WM_PAINT() ON_WM_ERASEBKGND() ON_WM_QUERYDRAGICON() END_MESSAGE_MAP() // コンストラクタ CMyDlg::CMyDlg(CWnd* pParent ) : CDialog(CMyDlg::IDD, pParent) { // アイコンハンドルの取得 hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); } // アイコンの描画 void CMyDlg::OnPaint() { int OldMapMode; // マッピングモードの保持 CPaintDC dc(this); // ダイアログがアイコン状態でなければ何もしない OldMapMode = dc.GetMapMode(); dc.SetMapMode(MM_TEXT); if(!IsIconic()) return; // アイコンの背景を明示的に描画させる SendMessage(WM_ICONERASEBKGND, (UINT)(dc.m_hDC)); // アイコンの描画 dc.DrawIcon(0, 0, hIcon); dc.SetMapMode(OldMapMode); } // バックグラウンドの処理 BOOL CMyDlg::OnEraseBkgnd(CDC* pDC) { // アイコン状態の時は0以外の値を返す if( IsIconic() ) return TRUE; else return CDialog::OnEraseBkgnd(pDC); } // アイコンがドラッグされた時の処理 HCURSOR CMyDlg::OnQueryDragIcon() { return hIcon; // アイコンハンドルを返す }
Keywords: KBHOWTO VC10 KB401943
Technology: kbAudDeveloper kbVCsearch