オーナードローグループボックスについて – 固定ページ 2 – プログラミング – Home

オーナードローグループボックスについて
 
通知
すべてクリア

[解決済] オーナードローグループボックスについて

固定ページ 2 / 2

Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

> この現象は移動後に限り起きるわけではなく、
> 初期表示の状態で、移動をまったくしていないときも再現します。

おかしいですね。
私は以下のコードで試しましたが、少なくとも初期配置の状態では
うまく表示されましたよ。

class CMyGroupBox : public CButton
{
public:
CMyGroupBox();
BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID);

//{{AFX_VIRTUAL(CMyGroupBox)
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL

public:
virtual ~CMyGroupBox();

protected:
//{{AFX_MSG(CMyGroupBox)
afx_msg UINT OnGetDlgCode();
afx_msg UINT OnNcHitTest(CPoint point);
//}}AFX_MSG

DECLARE_MESSAGE_MAP()
};

CMyGroupBox::CMyGroupBox()
{
}

CMyGroupBox::~CMyGroupBox()
{
}

BEGIN_MESSAGE_MAP(CMyGroupBox, CButton)
//{{AFX_MSG_MAP(CMyGroupBox)
ON_WM_GETDLGCODE()
ON_WM_NCHITTEST()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CMyGroupBox::Create(LPCTSTR lpszCaption, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID)
{
// 強制的にオーナー描画
dwStyle &= ~0x0F;
dwStyle |= BS_OWNERDRAW;
// タブストップ属性をOFF
dwStyle &= ~WS_TABSTOP;
return CButton::Create(lpszCaption, dwStyle, rect, pParentWnd, nID);
}

void CMyGroupBox::PreSubclassWindow()
{
CButton::PreSubclassWindow();

// オーナー描画ボタンでなければならない
ASSERT((GetStyle() & 0x0F) == BS_OWNERDRAW);
}

void CMyGroupBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.DrawEdge(&lpDrawItemStruct->rcItem, EDGE_ETCHED, BF_RECT);
dc.Detach();
}

UINT CMyGroupBox::OnGetDlgCode()
{
return DLGC_STATIC;
}

UINT CMyGroupBox::OnNcHitTest(CPoint point)
{
return HTTRANSPARENT;
}


返信引用
廿楽
 廿楽
(@廿楽)
ゲスト
結合: 17年前
投稿: 6
Topic starter  

>おかしいですね。
>私は以下のコードで試しましたが、少なくとも初期配置の状態では
>うまく表示されましたよ。

ためさせていただいたところ、確かにうまく表示されていました。
で、ソースを参考にさせていただいて実際に使用しているソースを
詳しく調べてみました。

その結果、実際に使用しているソースではCWnd::CreateEx()を使用して
グループボックスを作成していたのですが、その拡張スタイルに
WS_EX_TRANSPARENTが含まれていたため、このような現象がおきていた
ということが確認できました。

拡張スタイルからWS_EX_TRANSPARENTをはずすことで正しいZオーダーで
表示されるようになりました。

お騒がせして申し訳ありませんでした。
回答してくださった囚人様、Kerry様、たいちう様、PATIO様
ありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました