Здравствуйте эксперты!!! У меня такой вопрос - как в ходе выполнения программы редактировать древовидный список(Tree Control) и Image List, т.е. добавлять/удалять/переименовать элементы. Самое главное - чтоб элементы создавались ни при инициализации диалога, а в ходе выполнения проги! (среда - Visual C++6.0) Заранее благодарен!
Доброе время суток, KudesNik! Открываем студию. Что мы тут видим? Прально, ничего. А почему? А потому, что надо создать диалог и кинуть туда ListControl и TreeControl. Сделали. После создания класса диалога и переменных для этих контролов (надеюсь ты знаешь как это делается), идем в класс диалога. Допустим тебе надо, чтобы по нажатию какой-то кнобы дерево и/или лист заполнялся какими-то значениями. Кинь кнопку в диалог и создай хэндлер на нажатие кнобы. В нем мы пишем: m_Tree.InsertItem(параметры). Про параметры прочти в MSDN - там все просто. Таже ситуевина и с ListControl. Те же методы, и, почти, те же параметры. Тоже читай MSDN или какой-нить книг по програзму на VC. Да, и скажи спасибо Мише Берману(mgf_@mail.ru). Иначе я бы не стал отвечать на такой вопрос. Ответ отправлен: 11.09.2002, 13:46 Отправитель: Jadd Отвечает Zloy
Здравствуйте, KudesNik! Для Tree Veiw'a: 1.заполняещь структуру TV_INSERTSTRUCT 2.шлёшь контролу сообщение TVM_INSERTITEM: wParam - 0 lParam - указатель на TV_INSERTSTRUCT С ImageListom не работал, но в хелпе увидел следующее: int ImageList_AddIcon( HIMAGELIST himl, // handle to the image list HICON hicon // handle to the icon or cursor );
Ответ отправлен: 10.09.2002, 19:34 Отправитель: Zloy
Вопрос № 224
Здравсствуйте эксперты . Помогите плз в таком вопросе ,ниже в приложении программа выводит числа в виде d(день) м(месяц) y(год), вот так 01.1.80 01.2.80 01.3.80 ,,,,, 31.3.80 Но мне надо что бы и месяц выглядел так -же , тоесть 01,02,12 а всё вместе что-бы выглядело так ... 01.01.80 02.01.80 ,,,,,, 31.12.81 это к примеру , если вопрос понятен , подскажите как дописАть это убожество до логического завершения.
Доброе время суток, piton! #include void main() { char path[]="test.txt"; FILE *f; f = fopen(path,"wa+"); for(int y=80;y<=99;++y) for(int m=1;m<=12;++m) for(int d=1;d<=31;++d) { if (d<=9) fputs("0",f); char s[1024]; sprintf(s,"%d.",d); fputs(s,f); if (m<=9) fputs("0",f); sprintf(s,"%d.%d.
", m, y); fputs(s,f); } fclose(f); } Теперь выводит так, как тебе нужно, ну а сделать, чтобы в феврале было не 31 день, ты и не просил. Ответ отправлен: 11.09.2002, 19:34 Отправитель: kvINT Отвечает vitya
Приветствую Вас, piton! попробуй так fprintf(fileOut, "%02d/%02d/%d, day, month, year); Ответ отправлен: 11.09.2002, 16:27 Отправитель: vitya Отвечает Dron
Здравствуйте, piton! По логике тебе надо вставить еще проверку на номер месяца, дабы отключить несуществующие дни... а при выводе зачем так извращаться? fprintf (s, "%02d.%02d.%02d
", d, m, y); Это все что нужно в цикле. (не считая проверок) Ответ отправлен: 11.09.2002, 16:30 Отправитель: Dron Отвечает Jadd
Добрый день, piton! А что тебе мешает то же, что ты сделал с переменной дня (d) сделать и для месяца. Т.е. создай какую-нибудь временную строку, куда ты будешь конкатенировать день/месяц/год, а потом записывать в вывод. Это - самый простой способ. Ответ отправлен: 11.09.2002, 16:32 Отправитель: Jadd Отвечает Kiss
Доброе время суток, piton! Малость приобразовав твою прогу я получил что требовалось! С уважением Kiss! P.S. #include void main() { char path[]="test.txt"; FILE *f; f = fopen(path,"wa+"); for(int y=80;y<=99;++y) for(int m=1;m<=12;++m) for(int d=1;d<=31;++d) { if (d<=9) fprintf(f,"0"); fprintf(f,"%d", d); if (m<=9) fprintf(f,"0"); fprintf(f,"%d", m); fprintf(f,"%d
", y); } fclose(f); } Ответ отправлен: 11.09.2002, 16:40 Отправитель: Kiss Отвечает Yuri Gordienko
Приветствую Вас, piton! Ну, если оставить твой алгоритм, то можно так void main() { char path[]="test.txt"; FILE *f; char ch[2]; ch[1]=char(0); f = fopen(path,"wa+"); for(int y=80;y<=99;++y) for(int m=1;m<=12;++m) for(int d=1;d<=31;++d) { if (d<=9) fputs("0",f); if(m<10) ch[0] = '0'; else ch[0] = char(0); sprintf(s,"%d%s%d%d", d,ch,m, y); fputs(s,f); } fclose(f); }
Ответ отправлен: 11.09.2002, 16:42 Отправитель: Yuri Gordienko Отвечает VicSimon
Приветствую Вас, piton! Нужно изменить вызов функции sprintf. Должно быть так: sprintf (s, "%02d.%02d.%02d", d, m, y) Ответ отправлен: 12.09.2002, 05:59 Отправитель: VicSimon
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.