Вход в Зоопарк ручных компьютеров
gps мониторинг, транспортная логистика, gps слежение
Опять взываю к программерам
"Карманная" версия Базара

 
Начать новую тему   Ответить на тему    Список Базаров Форумы Handy.ru -> Программирование для КПК
Предыдущая тема :: Следующая тема  
Автор Сообщение
Harry Star

Маститый писатель


Зарегистрирован: 19.06.2001
Сообщения: 185
Откуда: Нижний Новгород

СообщениеДобавлено: Чт Июл 05, 2001 5:42    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

Народ, поскажите, как ловить параметры у вызываемой программы? Помню я, у функции main() есть всякие параметры. 2 точнее. Через них наверно? Прогу я создавал без архитектуры View\Document типа "Нелло Ворд". Во. При таком раскладе как эти параметры майна выцепить?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
VctOs

Гуру


Зарегистрирован: 18.06.2001
Сообщения: 367

СообщениеДобавлено: Чт Июл 05, 2001 6:31    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

цитата:
Прислал Harry Star:
Народ, поскажите, как ловить параметры у вызываемой программы? Помню я, у функции main() есть всякие параметры. 2 точнее. Через них наверно? Прогу я создавал без архитектуры View\Document типа "Нелло Ворд". Во. При таком раскладе как эти параметры майна выцепить?


Надеюсь, речь идет все-таки о WinMain.

Ответы на этот и многие другие вопросы по программированию для Windows есть в переведенной на русский язык знаменитой и непревзойденной книге Петцольда
"Программирование для Windows 95". Пользуясь случаем также рекомендую почитать (хотя бы пролистать) классиков: Кернигана, Ричи и Ко, а также, если будет интерес к cpp - Страустропа.
Только без обид - эти книжки должны быть всегда под рукой, в них реально написано что и как нужно делать что-бы написать более менее работающую программу.
После освоения азов при сохранении тяги к программированию фундаментальную теорию этого дела имеет смысл почерпнуть у Кнута в его изобилующем примерами уже не могу вспомнить на чьем микрокоде "Искусстве программирования". Но Боже упаси читать Кнута первым - тяга к программированию в этом случае гарантировано отбивается минимум на полгода.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Harry Star

Маститый писатель


Зарегистрирован: 19.06.2001
Сообщения: 185
Откуда: Нижний Новгород

СообщениеДобавлено: Чт Июл 05, 2001 18:40    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

Забавно. Несмотря на подпись, я все же занимаюсь программированием около 12 лет и многие книги из указаных вами читал. Охота к программированию не отбивается. Просто последние 3 года это не основная моя специальность, поэтому у меня напряги с памятью, как и что сделать. Основная работа вышибает все. Тем паче тут был перерывчик на полгода. Книг, увы, под рукой нет, поэтому и спросил, уж не обессудьте.

Ну так что, кто подскажет?

------------------
Начинающий программер

[Это сообщение подредактировал Harry Star (дата 06-07-2001).]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
CrazyLord

Маститый писатель


Зарегистрирован: 18.06.2001
Сообщения: 100

СообщениеДобавлено: Чт Июл 05, 2001 19:55    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

Не проще ли в хелп заглянуть, чем спрашивать на форуме

Argument Definitions
The arguments in the prototype

int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
or

int wmain( int argc[ , wchar_t *argv[ ] [, wchar_t *envp[ ] ] ] );
allow convenient command-line parsing of arguments and, optionally, access to environment variables. The argument definitions are as follows:

argc
An integer that contains the count of arguments that follow in argv. The argc parameter is always greater than or equal to 1.
argv
An array of null-terminated strings representing command-line arguments entered by the user of the program. By convention, argv[0] is the command with which the program is invoked, argv[1] is the first command-line argument, and so on, until argv[argc], which is always NULL. See Customizing Command Line Processing for information on suppressing command-line processing.
The first command-line argument is always argv[1] and the last one is argv[argc 1].

Microsoft Specific
envp
The envp array, which is a common extension in many UNIX systems, is used in Microsoft C++. It is an array of strings representing the variables set in the user s environment. This array is terminated by a NULL entry. It can be declared as an array of pointers to char (char *envp[ ]) or as a pointer to pointers to char (char **envp). If your program uses wmain instead of main, use the wchar_t data type instead of char. The environment block passed to main and wmain is a frozen copy of the current environment. If you subsequently change the environment via a call to putenv or _wputenv, the current environment (as returned by getenv/_wgetenv and the _environ/ _wenviron variable) will change, but the block pointed to by envp will not change. See Customizing Command Line Processing for information on suppressing environment processing. This argument is ANSI compatible in C, but not in C++.
END Microsoft Specific
The following example shows how to use the argc, argv, and envp arguments to main:

#include <iostream.h>
#include <string.h>

void main( int argc, char *argv[], char *envp[] )
{
int iNumberLines = 0; // Default is no line numbers.

// If more than .EXE filename supplied, and if the
// /n command-line option is specified, the listing
// of environment variables is line-numbered.

if( argc == 2 && stricmp( argv[1], "/n" ) == 0 )
iNumberLines = 1;

// Walk through list of strings until a NULL is encountered.
for( int i = 0; envp[i] != NULL; ++i )
{
if( iNumberLines )
cout << i << ": " << envp[i] << "\n";
}
}


------------------
IRC: EFNet #pdaru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Harry Star

Маститый писатель


Зарегистрирован: 19.06.2001
Сообщения: 185
Откуда: Нижний Новгород

СообщениеДобавлено: Чт Июл 05, 2001 20:24    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

Сорри, но не проще. Си++ у меня стоит дома, инет на работе. Здесь у меня только файлы проекта, а хелпа нет. И чтоб хоть как-то использовать рабочее время для другой работы, я и спрашиваю здесь.

Спасибо за ответ. Уже что-то дельное.
Вроде припоминаю. Доберусь до дома, наверно разберусь.

------------------
Начинающий программер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
VctOs

Гуру


Зарегистрирован: 18.06.2001
Сообщения: 367

СообщениеДобавлено: Чт Июл 05, 2001 20:25    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

Уважаемый коллега, прошу простить мой неуместно-поучающий тон предыдущего письма. Ввиду своей ограниченности я не смог сразу узнать великого маэстро .
По делу:
1. Параметров вызова у процедуры main не два, а три:
main(int argc, char *argv[], char *envp[]) Почитать Кернигана и Ричи я посоветовал т.к. Вы пишите: "Помню я, у функции main() есть всякие параметры. 2 точнее.".
2. В Win API эта процедура используется только в консольных приложениях.
3. Точка входа Windows программы - процедура
WinMain. Ниже ее описание (разумеется, оно присутствует в help'e наряду с описаниями остальных функций Win API и многих других API):
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd );
4. lpCmdLine - то, что вы ищите.
5. Программировать, пытаясь удерживать в памяти спецификации API, на мой взгляд неразумно. Тем более, не занимаясь программированием последние три года, и отвлекаясь по полгода на основную работу.
6. В конференциях действительно можно получить ответы на все вопросы, но на многие вопросы ответы можно горазда быстрее получить из книжки под рукой, поэтому я все-таки советую Вам дойти до магазина.
7. Насчет того, что я имел в виду когда говорил об отбивании тяги к программированию, Вы меня поймете после того, как откроете старика Кнута. Тем не менее, IMHO, без Кнута в программировании как без Хоровица и Хилла в электронике - в принципе, жить можно, но все-таки лучше почитать.
-----------------
В порядке личного комментария (прошу без обид). Я могу допустить, что можно программировать, не зная английского, но на мой взгляд, за 12 лет программирования о существовании WinMain не узнать просто невозможно. В любом букваре по разработке ПО для Windows (я по прежнему рекомендую Петцольда как базис) эта процедура разжевывается в первой главе. Уточните pls, какие "многие" из перечисленных мною четырех книг Вы все-таки прочли и на каких языках / для каких OS Вы программировали последние двенадцать лет, иначе действительно создается впечатление, что это Ваша первая программа.


[Это сообщение подредактировал VctOs (дата 06-07-2001).]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
VctOs

Гуру


Зарегистрирован: 18.06.2001
Сообщения: 367

СообщениеДобавлено: Чт Июл 05, 2001 20:51    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

цитата:
Прислал Harry Star:
Здесь у меня только файлы проекта, а хелпа нет. И чтоб хоть как-то использовать рабочее время для другой работы, я и спрашиваю здесь.


Снимаю шляпу. Ваша идея, коллега, по-настоящему гениальна! Зачем держать help, если есть конференция. HANDY.RU - универсальная поисковая система, которая всегда под рукой! (2PR - слоган дарю) Открыть msdn с копиями хелпов влом (на handy закладка поди есть, а msdn ручками набировать да и искать еще потом), а задать вопрос на специализированной конференции просто в голову не приходит. Потребовалось описание BeginPaint, не ждать же из-за этого конца рабочего дня, тем более Инет под рукой, и в энтом самом инете есть замечательная handy.ru, и к тому-же BeginPaint входит в WCE API.
Ну что же, не стесняйтесь спрашивайте, поможем чем сможем. Нужно же хоть как-то использовать рабочее время для другой работы! Тем более, что сам великий Вольф одобрил.
----------------
WinMain
This function is called by the system as the initial entry point for WindowsCE-based applications.

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd );
Parameters
hInstance
[in] Handle to the current instance of the application.
hPrevInstance
[in] Handle to the previous instance of the application. For a Win32-based application, this parameter is always NULL.
If you need to detect whether another instance already exists, create a uniquely named mutex using the CreateMutex function. CreateMutex will succeed even if the mutex already exists, but the GetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first.

lpCmdLine
[in] Pointer to a null-terminated string that specifies the command line for the application, excluding the program name.
nShowCmd
[in] Specifies how the window is to be shown. This parameter can be one of the following values: Value Description
SW_HIDE Hides the window and activates another window.
SW_SHOW Activates a window and displays it in its current size and position.
SW_SHOWNA Displays a window in its current state. The active window remains active.
SW_SHOWNOACTIVATE Displays a window in its most recent size and position. The active window remains active.
SW_SHOWNORMAL Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position (same as SW_RESTORE).


Return Values
The exit value contained in that message s wParam parameter indicates success, and that the function terminates when it receives a WM_QUIT message. Zero indicates that the function terminates before entering the message loop.

Remarks
Your WinMain should initialize the application, display its main window, and enter a message retrieval-and-dispatch loop that is the top-level control structure for the remainder of the application s execution. Terminate the message loop when it receives a WM_QUIT message. At that point, your WinMain should exit the application, returning the value passed in the WM_QUIT message s wParam parameter. If WM_QUIT was received as a result of calling PostQuitMessage, the value of wParam is the value of the PostQuitMessage function s nExitCode parameter.

Note This information applies to the version of the operating system as provided by Microsoft. Actual implementation is determined by the original equipment manufacturer (OEM) and some devices may not support this function.



[Это сообщение подредактировал VctOs (дата 06-07-2001).]
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
WOLF

Супер Гуру


Зарегистрирован: 18.06.2001
Сообщения: 4221
Откуда: Москва

СообщениеДобавлено: Чт Июл 05, 2001 21:24    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

цитата:
Прислал VctOs:
Тем более, что сам великий Вольф одобрил

Во-первых, я не великий. Работа здесь у меня такая - за порядком следить.
А во-вторых, я, ЛИЧНО, одобряю саму идею общения программистов в нашей общей конференции. А идею склок и наездов я не выдвигал, не одобряю и буду пресекать. И еще раз попрошу с личными разборками - в почту, в ИРК, в АСЮ, в ж..., куда хотите! ТОЛЬКО НЕ ЗДЕСЬ!

"Ребята, давайте жить ДРУЖНО! " (c) Кот Леопольд

------------------
Aleksey AKA WOLF
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
VctOs

Гуру


Зарегистрирован: 18.06.2001
Сообщения: 367

СообщениеДобавлено: Пт Июл 06, 2001 1:07    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

цитата:
Прислал WOLF:

Во-первых, я не великий.


За великого прошу извинить. Не подумал, что это слово может быть обидным. Как вам нравится такой тезис: если постараться, в любой фразе легко найти склоку, пошлость и издевку. В свое время на эту тему была популярная в среде молодежи игра - с определенной интонацией читать фрагменты типа материалов пленумов цк или устава караульной службы. Так мы зачастую коротали время на парах самоподготовки. Наиболее одаренные в этом заставляли аудиторию покатываться от смеха через два-три предложения.
Правила и политику модерирования поддерживаю на 100%. Порядок действительно нужен. Если что написал не так прошу тереть не задумываясь - коллега меня понял, остальным, как я и писал ранее, это вряд ли будет полезно.
Насчет склок, то если это о
HANDY.RU - универсальная поисковая система, которая всегда под рукой!
- это не совсем шутка, по крайней мере в этой фразе есть существенная доля серьезного смысла. А писал я это в том числе как определенный комплимент в адрес handy/конференции/модератора и никакого обратного/обидного смысла в слова не вкладывал.
2Harry: коллега, я надеюсь Вы не в обиде на мой ограниченный военный юмор и тон, а также на предложение почитать R&K. Вначале хотел посоветовать учебник арифметики, но решил, что по гражданке это будет слишком обидно, да и самого ученика под рукой не оказалось, побоялся ошибиться - вдруг теперь два == три .
Насчет фамилии я немного соврал - в русской транскрипции Petzold перевели как Петзолд, именно по этому слову его следует искать. Читать его вовсе не обязательно, но под рукой он должен быть.
Кстати, я правильно понимаю, две предыдущие Ваши программы были написаны на базе MFC?

Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Harry Star

Маститый писатель


Зарегистрирован: 19.06.2001
Сообщения: 185
Откуда: Нижний Новгород

СообщениеДобавлено: Пт Июл 06, 2001 1:45    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

Одна, да MFC. Это была прога по учету моих трат. Чтото типа Money. Я ей даже пользовался месяца 4, пока не наскучило.
А вторая, как и третья, в разработке. Обе под Кассиопею (ну под Айпак тоже наверно можно будет портануть). Обещаю вам в числе первых выслать бета-демо версию. У вас (давай на ты, я умаялся), у тебя какая ПДА? Если Каська, то точно в числе первых.

ЗЫ: О том, что за прога пока умолчу. Делаю ее в качестве практики, в смысле изучения программирования вообще и под ПДА в частности. Релиз намечен на конец лета.

Дальше плакат: А ТЫ СОГЛАСЕН БЫТЬ БЕТА ТЕСТЕРОМ?

------------------
Начинающий программер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Harry Star

Маститый писатель


Зарегистрирован: 19.06.2001
Сообщения: 185
Откуда: Нижний Новгород

СообщениеДобавлено: Пт Июл 06, 2001 10:31    Заголовок сообщения: Опять взываю к программерам Ответить с цитатой

2 Вулф: Сейчас я отвечу и все, ок?
2 VctOS:
Каюсь, каюсь. Просто почти все 12 лет я писал под ДОС. Поэтому и припомнил майн. А под винды это, признаюсь, 3-я программа.
Из книжек читал Кернигана и Страустропа. Правда не целиком. Немного читал Кнута. Плюс, как я уже говорил - программирование это не основная работа была раньше. Теперь я вообще не программист. И я совсем не спорю, что знания у меня не велики и 12 лет мне на пользу не пошли. Поэтому я и спрашивал.

Шутка про ханди как универсальное средство мне очень понравилась! Описанная вами WinMain - как раз то, что мне нужно. Спасибо огромное. Это более чем исчерпывающий ответ.

ЗЫ: Обязательно поищу первую рекомендованную вами книгу.

------------------
Начинающий программер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список Базаров Форумы Handy.ru -> Программирование для КПК Часовой пояс: GMT - 10
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме



Форумы Handy.ru 


Powered by phpBB © 2001 phpBB Group