Artigo: 179378 - Última revisão: terça-feira, 21 de Novembro de 2006 - Revisão: 1.3

Como procurar pastas a partir do actual

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Por predefinição, a API SHBrowseForFolder permite ao utilizador iniciar no ambiente de trabalho para procurar espaço de nomes a shell e escolha uma pasta. Muitas vezes, poderá preferir que a aplicação iniciar a caixa de diálogo Procurar numa pasta que o utilizador é provável que pretende, tal como o directório de trabalho actual.

Para definir selecção inicial da caixa de diálogo de procura, a estrutura BROWSEINFO tem de conter uma função de chamada de retorno. Quando a função de chamada de retorno é chamada com a mensagem BFFM_INITIALIZED, por sua vez pode enviar uma mensagem BFFM_SETSELECTION Definir selecção da caixa de diálogo para o caminho pretendido.

Mais Informação

Segue-se alguns códigos de exemplo que apresenta a caixa de diálogo Procurar com o actual directório seleccionado. Também apresenta o caminho da pasta actualmente seleccionada na janela de estado da caixa de diálogo.

Código de exemplo

#define STRICT
#include <windows.h>
#include <shlobj.h>

INT CALLBACK BrowseCallbackProc(HWND hwnd, 
                                UINT uMsg,
                                LPARAM lp, 
                                LPARAM pData) 
{
   TCHAR szDir[MAX_PATH];

   switch(uMsg) 
   {
   case BFFM_INITIALIZED: 
      if (GetCurrentDirectory(sizeof(szDir)/sizeof(TCHAR), szDir))
      {
         // WParam is TRUE since you are passing a path.
         // It would be FALSE if you were passing a pidl.
         SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)szDir);
      }
      break;

   case BFFM_SELCHANGED: 
      // Set the status window to the currently selected path.
      if (SHGetPathFromIDList((LPITEMIDLIST) lp ,szDir))
      {
         SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir);
      }
      break;
   }
   return 0;
}


int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszCmdLine,
                     int nCmdShow)
{
   BROWSEINFO bi;
   TCHAR szDir[MAX_PATH];
   LPITEMIDLIST pidl;
   LPMALLOC pMalloc;

   if (SUCCEEDED(SHGetMalloc(&pMalloc)))
   {
      ZeroMemory(&bi,sizeof(bi));
      bi.hwndOwner = NULL;
      bi.pszDisplayName = 0;
      bi.pidlRoot = 0;
      bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
      bi.lpfn = BrowseCallbackProc;

pidl = SHBrowseForFolder(&bi); 
if (pidl) 
{ 
    // 
    // Other code omited 
    // 
    pMalloc->lpVtbl->Free(pMalloc,pidl); 
} 
pMalloc->lpVtbl->Release(pMalloc);
      }
   }
   return 0;
}
				

A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Application Programming Interface
Palavras-chave: 
kbmt kbcode kbhowto KB179378 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 179378  (http://support.microsoft.com/kb/179378/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.