| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Проблемы с загрузкой файла |
| Автор: Proletariy 24.9.2009, 10:24 |
| Добрый всем день. Собственно вопрос в чем. Создал SDI программу. Создал для нее инсталяцию. В реестр прописал строки, для того, чтобы Винда определяла принадлежность файлов создаваемых моей программой. HKEY_CLASSES_ROOT 1) .xxx -> XXX-File 2) XXX-File\DefaultIcon\-> Путь\myicon.ico XXX-File\shell\Open\command\ -> Путь\myprogramm.exe "%1" После инсталяции Винда видит принадлежность файлов с расширением *.xxx. Собственно вопрос в чем. При открытии файлов через программу - вопросов нет- все четко открывается. Но если пытаюсь открыть файл без запущенной программы (например двойным кликом мыши по файлу с расширением *.xxx), просто запускается моя программа не принимая значения сохраненные в файле и имя файла. Т.е. запускается просто программа. Что делать, как быть, посоветуйте. |
| Автор: Andrey44 24.9.2009, 11:41 |
| Копай в сторону CWinApp::ParseCommandLine |
| Автор: Proletariy 24.9.2009, 11:54 |
| Andrey44 Thanks |
| Автор: Proletariy 24.9.2009, 14:48 | ||
| Andrey44 подскажи пжл. Не могу понять как получить информацию, открываем ли мы файл, либо просто стартуем приложение:
if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen) не срабатывает на запуск программы через открытие файла???? |
| Автор: Andrey44 25.9.2009, 09:49 |
| Отнаследоваться от класса CCommandLineInfo и перекрыть метод ParseParam(): virtual void ParseParam( LPCTSTR lpszParam, BOOL bFlag, BOOL bLast ); The framework calls this function to parse/interpret individual parameters from the command line. CWinApp::ParseCommandLine calls ParseParam once for each parameter or flag on the command line, passing the argument to lpszParam. If the first character of the parameter is a ‘-’ or a ‘/’, then it is removed and bFlag is set to TRUE. When parsing the final parameter, bLast is set to TRUE. После этого воспользоваться в InitInstance() методом CWinApp::ParseCommandLine(), куда передать ссылку на созданный экземпляр потомка CCommandLineInfo. Кроме GetCommandLine() тот же результат можно получить, взяв AfxGetApp()->m_lpCmdLine или theApp->m_lpCmdLine А еще хорошая функция CommandLineToArgvW() |