Хреновое решение -- красить внутри WM_TIMER.
Правильно было бы перенести создание кисточек и switch (timer) в WM_PAINT, а в WM_TIMER оставить игры с timer++ и добавить InvalidateRect охватывающий все квадраты твоего светофора.
Диле́мма (греч. δί-λημμα двойная лемма) — полемический довод с двумя противоположными положениями, исключающими друг друга и не допускающими возможность третьего. Ошибочно считать дилемму проблемой.
Павел Каптур: SimpleApp и ./SimpleApp это два разных способа запуска, которые запустят приложение из двух возможно разных мест. Выберите тот способ, который вам подходит, в конце концов вы ни слова не написали о том, где находится SimpleApp и как вы хотите его запустить.
> я передаю имя программы в функцию как "SimpleApp"
программа должна быть запускаема из текущего каталога по этому имени. т.е. SimpleApp должна находиться в PATH, поскольку это не полный/относительный путь.
> я не вызываю никаких wait(), да и обязательны ли они?
для запуска приложения они необязательны.
> как параметр запуска, я передаю NULL
да, это ошибка. надо что-нибудь вроде
> Когда же вы запускаете скрипт, система запускает интерпретатор, от имени пользователя, передавая ему параметром скрипт на исполнение. Юрий Чудновский: да, но это происходит внутри ядра ОС. Ядро читает первую строчку скрипта и извлекает оттуда имя интерпретатора. Ядро в состоянии увидеть наличие бита suid у скрипта и запустить интерпретатор так, будто этот бит установлен у интерпретатора.
Евгений Вольф: я не видел ни одного линукса в котором бы он работал. И, насколько я понимаю, единственный прямой способ заставить его работать -- установить suid-бит у соответствующего шелла, чего, конечно, никто в здравом уме делать не станет.
Алексей Ярков: перечитал сообщение об ошибке. Проблема-то не в том, что шелл -- не баш, а в том, что len у вас пустой. А len пустой, потому что разные строчки одной команды запускаются в разных экземплярах шелла.
Maqsat Batyrqul: ок. чтобы работало так нужно заменить char *temp на char temp[2] = {0, 0}. Тогда *temp = s[i] скопирует только один символ в строку temp, а вторым символом там будет символ с кодом 0, т.е. конец строки. Понятнее было бы temp[0] = s[i].
Maqsat Batyrqul: Потому что по коду непонятно, что вы пытаетесь сделать. Моя интерпретация: вы пытаетесь пройти по введённой строке начиная с последнего символа и заполнить массив a числовыми значениями текущего видимого хвоста строки. Т.е. для строки "123" массив a будет {3, 23, 123}. И, кстати, pos не инициализирован в коде...
> *temp = s[i];
Это явная ошибка. Непонятно что именно вы пытаетесь сделать, возможно здесь должно быть temp = s + i;
Тогда вообще эту строчку можно выкинуть и написать a[pos] = atoi(s + i);
> на сколько мне известно наследование , это передача характеристик(методов) от класса родителя к классу потомку.
Deka007: это технические детали реализации. Концептуально наследование выражает отношение "общее" - "частное".
> в смысле В является А???
в том смысле, что B можно использовать везде, где допустимо использовать A, и пользователь работающий с A не заметит разницы, когда вместо A ему дадут B, поскольку B -- это частный случай A.