掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
manifest使用XPスタイルでのReBar描画不具合を修正するには? (ID:59831)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VC6で、manifestファイルを使用したXPスタイルSDIアプリケーションを作成しています。 ダイアログバー(CDaialogBar)をCReBarに追加して表示してみたのですが、 ReBar上部に横線が描画されてしまいます。 おそらく、ダイアログバーの境界線のようなものだとは思うのですが、 消去方法が分かりません… また、フレームをドラッグしてリサイズすると、ReBarの描画がおかしくなってしまいます(残像が残る感じ)。 ご有識者の方、回避方法を教えてください。 関連するソースは以下のとおりです。 ■MainFrm.cpp int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { 省略… //------------------------------------------------------------------------- // ダイアログバーの作成 if (!m_wndDlgBar.Create(this, IDD_DIALOGBAR, WS_VISIBLE | CBRS_TOP, AFX_IDW_TOOLBAR)) { TRACE0("Failed to create toolbar\n"); return -1; // ?i?¬?E?,”s } //------------------------------------------------------------------------- // リバーの作成 if (!m_wndReBar.Create(this) || !m_wndReBar.AddBar(&m_wndDlgBar)) { TRACE0("Failed to create rebar\n"); return -1; // 作成に失敗 } // リバーを固定する CReBarCtrl& rbc = m_wndReBar.GetReBarCtrl(); REBARBANDINFO rbbi; rbbi.cbSize = sizeof(rbbi); rbbi.fMask = RBBIM_STYLE; int nCount = rbc.GetBandCount(); for (int i = 0; i < nCount; i++) { rbc.GetBandInfo(i, &rbbi); rbbi.fStyle ^= RBBS_NOGRIPPER | RBBS_GRIPPERALWAYS; rbc.SetBandInfo(i, &rbbi); } 省略… } ■MyDlgBar(ダイアログバーを透過にする) BOOL CMyDlgBar::OnEraseBkgnd( CDC* pDC ) { CWnd* pParent = GetParent(); ASSERT_VALID(pParent); CPoint pt(0, 0); MapWindowPoints(pParent, &pt, 1); pt = pDC->OffsetWindowOrg(pt.x, pt.y); LRESULT lResult = pParent->SendMessage(WM_ERASEBKGND, (WPARAM)pDC->m_hDC, 0L); pDC->SetWindowOrg(pt.x, pt.y); return lResult; } void CMyDlgBar::OnMove(int x, int y) { CDialogBar::OnMove(x, y); // TODO: この位置にメッセージ ハンドラ用のコードを追加してください Invalidate(); }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.