Metoda IVsQueryEditQuerySave2.QueryEditFiles — (UInt32, Int32, String[], UInt32[], VSQEQS_FILE_ATTRIBUTE_DATA , UInt32, UInt32)
Wywoływana, gdy plik ma być edytowany.
Przestrzeń nazw: Microsoft.VisualStudio.Shell.Interop
Zestaw: Microsoft.VisualStudio.Shell.Interop (w Microsoft.VisualStudio.Shell.Interop.dll)
Składnia
int QueryEditFiles(
uint rgfQueryEdit,
int cFiles,
string[] rgpszMkDocuments,
uint[] rgrgf,
VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo,
out uint pfEditVerdict,
out uint prgfMoreInfo
)
int QueryEditFiles(
unsigned int rgfQueryEdit,
int cFiles,
array<String^>^ rgpszMkDocuments,
array<unsigned int>^ rgrgf,
array<VSQEQS_FILE_ATTRIBUTE_DATA>^ rgFileInfo,
[OutAttribute] unsigned int% pfEditVerdict,
[OutAttribute] unsigned int% prgfMoreInfo
)
abstract QueryEditFiles :
rgfQueryEdit:uint32 *
cFiles:int *
rgpszMkDocuments:string[] *
rgrgf:uint32[] *
rgFileInfo:VSQEQS_FILE_ATTRIBUTE_DATA[] *
pfEditVerdict:uint32 byref *
prgfMoreInfo:uint32 byref -> int
Function QueryEditFiles (
rgfQueryEdit As UInteger,
cFiles As Integer,
rgpszMkDocuments As String(),
rgrgf As UInteger(),
rgFileInfo As VSQEQS_FILE_ATTRIBUTE_DATA(),
<OutAttribute> ByRef pfEditVerdict As UInteger,
<OutAttribute> ByRef prgfMoreInfo As UInteger
) As Integer
Parametry
rgfQueryEdit
Type: System.UInt32[in] Zbiór wartości flag z tagVSQueryEditFlags wyliczenia. Domyślna to 0.
cFiles
Type: System.Int32[in] Liczba plików.
rgpszMkDocuments
Type: System.String[][in] Plik do przetworzenia. To jest taki sam rozmiar jak cFiles. Nie jest prawidłowy dla cFiles 0.
rgrgf
Type: System.UInt32[][in] Tablicę wartości flagi pobranych z tagVSQEQSFlags wyliczenia.NULL oznacza to, że są one wszystkich 0.
rgFileInfo
Type: Microsoft.VisualStudio.Shell.Interop.VSQEQS_FILE_ATTRIBUTE_DATA[][in] Wartości z VSQEQS_FILE_ATTRIBUTE_DATA struktury zawierającej informacje na temat atrybutów pliku. Może to być null; jest ignorowana, jeśli rgrgf jest null.
pfEditVerdict
Type: System.UInt32[out] Wartości z tagVSQueryEditResult wyliczenia wskazująca, czy można kontynuować edycji.
prgfMoreInfo
Type: System.UInt32[out] Wskaźnik do zestaw flag, których wartości są pobierane z tagVSQueryEditResultFlags wyliczenia.
Wartość zwracana
Type: System.Int32
Jeśli metoda zakończy się pomyślnie, zwraca S_OK. Jeśli nie, zwraca kod błędu.
Wartość zwracana w pfEditCanceled wskazuje, czy jest OK do edycji pliku, aby kontynuować.
Parametr prgfMoreInfo zwraca następujące wyniki:
Czy wszystkie pliki są wyewidencjonowane
Czy zmienić wszystkie pliki w realizacji transakcji
Czy wszystkie pliki są edytowane w pamięci
Czy w pamięci Edycja jest niedozwolona.
Czy jest wymagane wyewidencjonowanie hałas (w trybie dyskretnym tylko)
Czy wyewidencjonowanie została anulowana lub nie powiodła się
Uwagi
Podpis COM
Z ivsqueryeditquerysave2.idl
HRESULT QueryEditFiles(
[in] VSQueryEditFlags rgfQueryEdit,
[in] int cFiles,
[in, size_is(cFiles)] const LPCOLESTR rgpszMkDocuments[],
[in, size_is(cFiles)] const VSQEQSFlags rgrgf[],
[in, size_is(cFiles)] const VSQEQS_FILE_ATTRIBUTE_DATA rgFileInfo[],
[out] VSQueryEditResult *pfEditVerdict,
[out] VSQueryEditResultFlags *prgfMoreInfo
);
Edytory zdefiniowany jako wszystko, co można zmienić zawartość pliku projektu, należy wywołać tę metodę przed pierwszym Edycja w dokumencie, który jeszcze nie zostało zmienione. Wszystko, co umożliwia edytowanie zawartości pliku rozwiązania (.sln) może wywołać QueryEditSolutionFile, która będzie wywołać tę metodę.
Jeśli plik nie jest tylko do odczytu i nie pod kontrolą źródła, QER_EditOK jest zwracana.
Jeśli plik jest tylko do odczytu, jeśli nie jest pod kontrolą źródła i rgfQueryEdit nie zawiera QEF_AllowInMemoryEdits (lub w oknie dialogowym Opcje jest ustawiona na nie zezwalaj na edytowanie plików tylko do odczytu), następnie QER_NoEdit_UserCanceled jest w trybie cichym zwracane i edycja nie powinny być zatwierdzone do danych dokumentu w pamięci. Jeśli środowisko jest w trybie hałas, monituje użytkownika, że edycja została anulowana.
Jeśli plik jest tylko do odczytu, jeśli nie jest pod kontrolą źródła i rgfQueryEdit obejmuje QEF_AllowInMemoryEdits (lub w oknie dialogowym Opcje jest dozwolona w pamięci), następnie QER_EditOK jest w trybie cichym zwracany.
Jeśli plik jest tylko do odczytu, a w opcji kontroli źródła, użytkownik będzie mieć wybór czy chcesz wyewidencjonować plik. Jeśli plik został wyewidencjonowany, QER_EditOK jest zwracany; w przeciwnym razie QER_NoEdit_UserCanceled jest zwracana. Ta sprawa jest nieco bardziej skomplikowane środowiska nie obsługuje "wersja lokalna wyewidencjonowanie" opcja (i biorąc pod uwagę reloadability), jeśli użytkownik ma już najnowszą wersję pliku, a edytowanie w pamięci jest dozwolone (czyli QEF_AllowInMemoryEdits). W większości przypadków, zmiany w pamięci zaewidencjonowanych plików nie są możliwe.
Edytory, Reloadability i realizacji transakcji
Gdy zostanie wywołana QueryEditFiles, zawsze jest możliwym plik wyewidencjonowany, co z kolei może zmienić zawartość pliku w pamięci i na dysku.
Ze względu na potencjalne zmienionych zawartości, należy wywołać wszystkie pakiety VSPackages zmiany wprowadzone w pliku QueryEditFiles przy pierwszej próbie do zmiany zawartości pliku, zanim rzeczywiście zostały wprowadzone zmiany w pliku. Jeśli nie wywołuje VSPackage QueryEditFiles pierwszy, a wprowadzone zmiany w pliku w pamięci, te zmiany w pamięci, mogą zostać utracone w wyniku wyewidencjonowaniu pliku. To uznane za błąd w VSPackage.
Informacje dotyczące tego, czy plik został zmieniony, jest zwracany w *prgfMoreInfo zwracają wartość za pośrednictwem QER_Reloaded lub QER_Changed flagi.
Ważne |
---|
QER_Changed jest zwracany tylko wtedy, gdy QEF_DetectAnyChangedFile jest przekazywany flagi rgfQueryEdit argument QueryEditFiles wywołań. |
Jeśli plik znajduje się w tabeli dokumenty uruchomiona i QueryEditFiles Określa, że załadowania będzie wymagane, spróbuje ponownie załaduj zawartość pliku. Jeśli nie można go ponownie załadować dane, wyświetla okno komunikatu firmowych użytkownika, aby ręcznie zamknąć i ponownie otworzyć dokument. W przypadku wdrażania niestandardowy edytor, zobacz IVsPersistDocData dla informacji na temat obsługi ponownie ładuje z dokumentami.
Pliki projektu
Do każdego projektu, aby wywołać QueryEditFiles podczas zmiany jest około wprowadzane informacje, które jest zachowywany w pliku projektu oraz wywołanie QuerySaveFile lub QuerySaveFiles przed zapisaniem w pliku projektu.
Zobacz też
Interfejs IVsQueryEditQuerySave2
Przestrzeń nazw Microsoft.VisualStudio.Shell.Interop
Powrót do początku