Exemplo do DIBLOOK: Ilustra o uso de DIBs e paletas de cores

O exemplo DIBLOOK ilustra o uso de bitmaps independentes de dispositivo (DIB) e o uso relacionado de paletas de cores.

DIBLOOK também ilustra um documento que tem um formato de arquivo definidas externamente (no caso, o formato de arquivo DIB).Isso é em contraste para um formato de arquivo definido internamente, que outra forma está implícito quando a estrutura chama automaticamenteSerialize função para armazenar o Sumário do documento no disco. Ainda mais DIBLOOK ilustra o uso da área de transferência, CFilee role modos de exibição.

Observação de segurança:

Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina.

Para obter exemplos e instruções para instalá-los:

  • Sobre o Visual Studio Ajuda menu, clicar Exemplos.

    Para obter mais informações, consulte Localizando arquivos de exemplo.

  • A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.

  • Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.

Criando e executando o exemplo

Para criar e executar a amostra DIBLOOK

  1. Abra a solução DibLook.sln.

  2. Sobre o Compilação menu, clicar Compilação.

  3. No menu Debug, clique em Start Without Debugging.

DIBLOOK é um aplicativo de interface (MDI) vários do documento que lhe permite exibir bitmaps vários ao mesmo time.Use em em aberto arquivo para em em aberto um arquivo de bitmap independente de dispositivo (.dib) existente ou um arquivo dependente do dispositivo bitmap (.bmp).sistema autônomo alternativa, você pode criar um novo documento de bitmap copiando um bitmap de outro aplicativo, sistema autônomo o Paint, usando a área de transferência, da seguinte maneira:

  • No Outros aplicativo, copie um bitmap para a área de transferência.

  • Use o DIBLOOK New comando sobre o Arquivo menu para criar um novo documento de bitmap.

  • Use o Colar comando a edição menu para copiar o bitmap da área de transferência para o novo documento.

Embora você não pode edição a imagem no DIBLOOK, você pode salvar o bitmap para outro arquivo usando o Salvar sistema autônomo comando a Arquivo menu.O bitmap é salvo no formato de bitmap independente de dispositivo, mesmo se seu formato original foi dependem do dispositivo.

Externamente definido pelo formato de documento

DIBLOOK lê e armazena os bitmaps no formato de bitmap independente de dispositivo padrão do Windows.Enquanto estiver na memória, o bitmap é gerenciado pelo Windows usando um opaco HDIB alça.O formato interno do bitmap é visível para o aplicativo.Assim, documento do DIBLOOK não se armazena os bits de bitmap ou a tabela de cores.Em vez disso, CDibDoc contém um identificador para o DIB (HDIB m_hDIB). DIBLOOK é um aplicativo cujo formato de documento é externamente definido (normalmente alguns arquivos padrão formato padrão sistema autônomo DIB), ao contrário de um aplicativo cujo formato de documento é implicitamente definido de acordo com a sequência na qual ele serializa sistema autônomo itens de documento a CDocument::Serialize substituir.

DIBLOOK não substitui CDocument::Serialize.Em vez disso, DIBLOOK substitui CDocument::OnOpenDocument and OnSaveDocument. Ambas as substituições usam o pszPathName, passado pela estrutura, para em em aberto um CFile objeto e para ler ou salvar o DIB. O código real para ler e salvar o arquivo DIB é fornecido no Myfile.cpp; esse código é reutilizável por qualquer aplicativo que precisa ler e salvar arquivos DIB.

Usando DIBs e paletas de cores

DIBLOOK ilustra como exibir DIB em uma janela e como preparar a paleta de cores para a janela exibindo o DIB.

Após DIBLOOK lê o DIB de um arquivo, ele prepara um CPalette objeto baseado na tabela de cores de DIB e armazena a paleta sistema autônomo m_palhDIB no CDibDoc objeto.Quando DIBLOOK exibe o DIB no seu CDibView::OnDraw, ele chama um Windows :: PaintDIB rotina implementada no arquivo de Dibapi.cpp do DIBLOOK.PaintDIB por sua vez chama a função de Windows :: SetDIBitsToDevice or :: StretchDIBits, usando a tabela de cores de DIB sistema autônomo a paleta de cores.As rotinas de exibindo DIB Dibapi.cpp são reutilizáveis por qualquer aplicativo que exibe DIBs.

DIBLOOK seleciona uma paleta de cores é ideal para a janela ativo no momento.DIBLOOK seleciona uma paleta de cores correspondentes da tabela de cores de DIB exibida na janela do filho MDI ativo no momento.Quando um aplicativo está prestes a receber o foco de entrada (deslocando longe do outro aplicativo), sua janela de nível superior recebe o WM_QUERYNEWPALETTE mensagem. CMainFrame janela manipula esta mensagem enviando uma mensagem definida pelo aplicativo, WM_DOREALIZE, a cada uma das janelas de descendente.A lista de janelas descendente inclui todos os modos de exibição dos possíveis vários documentos abertos.Por sua vez, cada modo de exibição seleciona em seu contexto de exibição sistema autônomo uma paleta de primeiro plano ou plano de fundo, de acordo com o modo de exibição de um ativo ou não.

Se outro aplicativo alterar a paleta do sistema, DIBLOOK recebe o WM_PALETTECHANGED mensagem. Nesse caso, a CMainFrame janela novamente envia a mensagem definida pelo aplicativo, WM_DOREALIZE, a cada modo de exibição.Cada modo de exibição seleciona sua paleta para o contexto de exibição sistema autônomo uma paleta de plano de fundo, no entanto, produzindo a paleta de primeiro plano para o Outros aplicativo.

Quando o foco é deslocado dentro do aplicativo de um modo de exibição para outro, DIBLOOK seleciona e realiza a paleta para o ativo no momento exibir (consulte CDibView::OnActivateView).Quando a nova paleta percebeu, o Windows envia o WM_PALETTECHANGED mensagem a todas as janelas de nível superior aplicativo, incluindo aqueles DIBLOOK. DIBLOOK manipula a mensagem por perceber uma paleta de plano de fundo sistema autônomo tabelas de cores associadas a outros DIBs nos outros modos de exibição.

Palavras-chave

Este exemplo demonstra as seguintes palavras-chave:

AfxGetApp; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CDC::RealizePalette; CDC::SelectPalette; CDialog::DoModal; CDocument::DeleteContents; CDocument::OnNewDocument; CDocument::OnOpenDocument; CDocument::OnSaveDocument; CDocument::ReportSaveLoadException; CDocument::SetModifiedFlag; CDocument::SetPathName; CDocument::UpdateAllViews; CFile::Abort; CFile::fechar; CFile::GetLength; CFile::em aberto; CFile::Read; CFile::ReadHuge; CFile::gravar; CFile::WriteHuge; CFrameWnd::GetActiveView; CFrameWnd::LoadFrame; CMDIFrameWnd::MDIGetActive; CObject::AssertValid; CObject::despejo; CPalette::CreatePalette; CScrollView::SetScrollSizes; CStatusBar::criar; CStatusBar::SetIndicators; CString::LoadString; CToolBar::criar; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::DoPreparePrinting; CView::GetDocument; CView::OnActivateView; CView::OnDraw; CView::OnInitialUpdate; CView::OnPreparePrinting; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::DoDataExchange; CWnd::OnCreate; CWnd::OnPaletteChanged; CWnd::OnQueryNewPalette; CWnd::OpenClipboard; CWnd::SendMessage; CWnd::SendMessageToDescendants; CWnd::ShowWindow; CWnd::UpdateWindow; CloseClipboard; DragAcceptFiles; EmptyClipboard; GetClipboardData; GetDeviceCaps; GlobalAlloc; GlobalFree; GlobalLock; GlobalSize; GlobalUnlock; IsClipboardFormatAvailable; MessageBox; SelectPalette; SetClipboardData; SetDIBitsToDevice; SetStretchBltMode; StretchDIBits; memcpy

Observação:

Alguns exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada.

Consulte também

Outros recursos

Exemplos do MFC