Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Conforme mencionado em Controles Rebar e Faixas, cada banda pode conter apenas uma janela filho (ou controle). Isso poderá ser uma limitação se você quiser ter mais de uma janela filho por banda. Uma solução alternativa conveniente é criar um recurso de barra de diálogo com vários controles e, em seguida, adicionar uma banda de barra de barras (contendo a barra de diálogo) ao controle de barra de barras.
Normalmente, se você quisesse que a banda da barra de diálogo parecesse transparente, definiria o estilo estendido WS_EX_TRANSPARENT para o objeto da barra de diálogo. No entanto, como WS_EX_TRANSPARENT tem alguns problemas com a pintura correta da tela de fundo de uma barra de diálogo, você precisará fazer um trabalho extra para alcançar o efeito desejado.
O procedimento a seguir detalha as etapas necessárias para obter transparência sem usar o estilo estendido WS_EX_TRANSPARENT.
Para implementar uma barra de diálogo transparente em uma faixa rebar
Usando a caixa de diálogo Adicionar Classe, adicione uma nova classe (por exemplo,
CMyDlgBar) que implementa o objeto da barra de diálogo.Adicione um manipulador para a mensagem WM_ERASEBKGND.
No novo manipulador, modifique o código existente para corresponder ao seguinte exemplo:
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 (BOOL)lResult; }Adicione um manipulador para a mensagem WM_MOVE.
No novo manipulador, modifique o código existente para corresponder ao seguinte exemplo:
void CMyDlgBar::OnMove(int x, int y) { UNREFERENCED_PARAMETER(x); UNREFERENCED_PARAMETER(y); Invalidate(); }
Os novos manipuladores simulam a transparência da barra de diálogo encaminhando a mensagem WM_ERASEBKGND para a janela pai e forçando uma nova pintura sempre que o objeto da barra de diálogo é movido.