Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/27: Рейтинг темы: голосов - 27, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12

Передача пути к файлу в качестве параметра через консоль

26.09.2011, 17:43. Показов 6658. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Как в самой программе передать в качестве параметра путь к файлу?
Понятное дело, что в консоли: путь до файла и через пробел путь до указанного файла.Но как это указать этов программе?
Само задание вот:
Просмотрщик bmp-файлов. Принимает в командной строке имя файла, открывает окно и показывает картину, растягивая ее на все окно (не нарушая пропорций).

Саму загрузку я реализовал.Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <windows.h>
#include <tchar.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
const TCHAR winName[]       = _T("MainFrame");  
const TCHAR regWndErr[]     = _T("Ошибка регистрации окна");
const TCHAR createWndErr[]  = _T("Ошибка создания окна");
 
 
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,  LPSTR lpCmdLine, int nShowMode){
 
    
    MSG msg;
    WNDCLASS wc;
 
    wc.hInstance        = hInst;        
    wc.lpszClassName    = winName;      
    wc.lpfnWndProc      = WndProc;      
    wc.style            = CS_HREDRAW | CS_VREDRAW; 
    wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor          = LoadCursor(NULL, IDC_ARROW);
    wc.lpszMenuName     = NULL;
    wc.cbClsExtra       = sizeof(&wc);  
    wc.cbWndExtra       = 0;
    wc.hbrBackground    = (HBRUSH)(COLOR_WINDOW);
    
    if(!RegisterClass(&wc)) {
        MessageBox(NULL, regWndErr, regWndErr , MB_OK);return 0;
    }
    
    HWND hWnd;
 
    hWnd = CreateWindow(winName,
    _T("Каркас Wind приложения"),
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT,
    CW_USEDEFAULT, CW_USEDEFAULT,
    0, 0, hInst, 0
    ); 
    MessageBox (hWnd, GetCommandLine(), NULL, MB_OK);
 
    if (!hWnd) {MessageBox(NULL , createWndErr , createWndErr, MB_OK );return 0;}
    ShowWindow(hWnd, nShowMode);
 
    while(GetMessage(&msg, NULL, 0, 0)){ 
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}
 
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg , WPARAM wParam, LPARAM lParam){
PAINTSTRUCT ps;
HDC hdc; 
 
static HDC memBit;
static HBITMAP hBitmap;
static BITMAP bm;
 
static int caption ,border;
 
 
    switch(msg){
        case WM_CREATE: 
            caption = GetSystemMetrics(SM_CYCAPTION);
            border  = GetSystemMetrics(SM_CXFIXEDFRAME);
            
            hBitmap = (HBITMAP)LoadImage(NULL, 
                       _T("C:\\1.bmp"),
                       IMAGE_BITMAP,            
                       0, 0,                    
                       
                       
                       LR_LOADFROMFILE | LR_CREATEDIBSECTION);
            if (hBitmap == NULL){
                MessageBox(hWnd,_T("file isn't find"),_T("file loading..."), MB_OK);
                DestroyWindow(hWnd);
                return 1;
            }
            GetObject(hBitmap ,sizeof(bm), &bm); 
            hdc = GetDC(hWnd);                   
            memBit = CreateCompatibleDC(hdc);   
            SelectObject(memBit, hBitmap);      
            ReleaseDC(hWnd, hdc);
            break;
 
        case WM_SIZE:
            MoveWindow(hWnd, 0, 0, bm.bmWidth+2*border, bm.bmHeight + caption + border, TRUE);
            break;
        
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);    
            BitBlt(hdc, 0,0, bm.bmWidth, bm.bmHeight, memBit, 0, 0, SRCCOPY);
            EndPaint(hWnd, &ps);
            break;
        case WM_DESTROY: PostQuitMessage(0);break;
        default: return DefWindowProc(hWnd, msg, wParam, lParam);
    
    }
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2011, 17:43
Ответы с готовыми решениями:

Передача пути файла, содержащий пробелы в качестве параметра
Привет всем! Возникла интересная проблема, которую не могу нормально решить... В свойствах проекта моей программы установлено &quot;Создать...

Можно ли определить путь к файлу через переменную переданного в качестве параметра?
class Reader { public int Read(int x, StreamReader y) { y.?? ........... } } class Program {

Передача пути к файлу через -d в программу
День добрый. У меня есть программа на с++ в котрой я открываю файл по заранее в коде прописанному пути, но мне нужно что бы эту программу...

26
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
27.09.2011, 18:35
Студворк — интернет-сервис помощи студентам

Не по теме:

Безусловно!
И это не спор, а обмен информацией.)



Добавлено через 1 минуту

Не по теме:

Я вот про три недокументированных функции узнал.)

0
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
27.09.2011, 19:10  [ТС]
Ок, друзья, спасибо. Позже сяду и все ещё раз перечитаю, попробую.А то я тут все свои системы положил включая линукс.Решил очистить комп от нечистот.)Не закончил переустановку всего.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.09.2011, 21:45
ProstoAndrei91, всё же мой пример в 3-м посте о парсинге параметров касался мелкософта, в линухе не пробовал. Если можешь отпиши сюда, что с мим вариантом парсинга вышло, правда интересно кросплатформенность поглядеть, т.к. тут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
#ifndef _MAC
#define _wenviron * (*__p__wenviron()) */* pointer to wide environment table */
#endif */* ndef _MAC */
#endif /* _POSIX_ */
идут дефайны мака и POISX а там вдруг и линух схавает

Не по теме:

PS:

Цитата Сообщение от talis Посмотреть сообщение
Вы двое действительно думаете, что этот спор интересен кому-то кроме вас?..
- в споре рождается истина, это факт

0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 21:47

Не по теме:

В споре рождается ссора, и ничего кроме ссоры. Истина рождается в документации.



Судя по префиксу __p__ - это позиксовская функция. Так что должно работать
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.09.2011, 21:54
Цитата Сообщение от talis Посмотреть сообщение
Судя по префиксу __p__ - это позиксовская функция.
- этого не знал, с меня законный +1
0
28.09.2011, 04:23

Не по теме:

Цитата Сообщение от talis Посмотреть сообщение

Не по теме:

Вы двое действительно думаете, что этот спор интересен кому-то кроме вас?..

Но вы же читаете:D

0
28.09.2011, 12:54

Не по теме:

Угу. Подписку лень снимать.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2011, 12:54

Передача % в качестве параметра
Помогите плз. Создал хранимую процедуру с параметром. TableAdapter.FiilBy(dataset1, int parametr1); Как мне в качестве параметра...

7.7 Передача Массива В Качестве Параметра
Добрый день! Подскажите, как можно передать массив, созданный в VBS, в качестве параметра функции 1С?

Передача функции в качестве параметра
Как передать функцию с параметрами в transform? Т.е., например, мне надо из каждого числа вектора вычесть число k с помощью transform'а,...

Передача строки в качестве параметра
#include &lt;iostream&gt; #include &lt;string&gt; void test(const std::string&amp; str) { std::cout &lt;&lt; str; } int main() ...

Передача класса в качестве параметра
Здраствуйте, вообщем есть код class Main: public ExampleApplication { public: void createScene(void) { /* создаем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru