![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Snake_B |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
"Вопросы по WinApi..."
Ковыряюсь во всяких справочниках... чего то ни фига не получается... Если кто может подскажите, как сделать или где поглядеть пример... 1. CreateWindow ( 'STATIC', text', WS_CHILD or WS_VISIBLE, 30, 8, 500, 80, handleWnd, 0, hInstance, nil ); * как задать ему цвет * сделать вертикальный скролл * изменить шрифт (размер, цвет и сам шрифт) 2. Загрузить и показать рисунок (bmp и jpg)... 3. Изменить цвет border color... 4. обработка нажатия кнопки... лучше всего пример... ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Если ты указал один из стандартных классов, то цвет можно изменить только в обработчике WM_PAINT. Если же ты сам регистрируешь класс окна, то там и можешь задать нужную кисть для фона. Вполне естественно, что все окна одного класса выводятся одним цветом.
Вертикальный скролл - добавить WS_VSCROLL в стиль окна. Для того, чтобы писать каким-либо шрифтом, надо создать нужный фонт. Другие способы мне не известны, хотя, возможно, они и есть. Рисунок проще всего размесить в том же WM_PAINT. По нажатию кнопки приходит сообщение WM_COMMAND, в параметре WP которого номер нажатой кнопки. Как хочешь, так и обрабатываешь. Основной источник справки для меня файл Win32.hlp, поставляемый обычно с виндовыми компиляторами. Более подробную информацию можно получить в MSDN. Еще есть интересная программка http://forum.sources.ru/index.php?showtopic=182219. Она, правда, в явно незаконченном виде, но кое-какие примеры с ее помощью можно посмотреть. |
Snake_B |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
А можно всё таки как-нибудь на примере?
Теоретически как бы всё понятно (до того как вопрос задал, догадывался), а на практике сделать не получается...
ну и загрузка/отображение рисунка... исходник бы какой... по проще... :-) |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Идея не самая удачная - учиться на том, что в принципе не разрешено: MSDN: Static Control Styles - как видишь, ничего связанного с прокруткой STATIC напрямую не поддерживает. Пользуйся лучше EDIT-ом...
|
Snake_B |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Идея не самая удачная - учиться на том, что в принципе не разрешено: MSDN: Static Control Styles - как видишь, ничего связанного с прокруткой STATIC напрямую не поддерживает. Пользуйся лучше EDIT-ом... а в edit'е можно сделать перенос строк? и как... ну и с остальными так и не разобрался... :-[ |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата а в edit'е можно сделать перенос строк? и как... Легко... Но давай начнем с того, что тебе надо подкорректировать всю программу:program WinApiTest;Посмотри, что я изменил, и что из этого получилось... А потом посмотрим, что делать дальше... ![]() |
Snake_B |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Легко... Но давай начнем с того, что тебе надо подкорректировать всю программу: ... Посмотри, что я изменил, и что из этого получилось... А потом посмотрим, что делать дальше... ![]()
Спасибо, многое вроде понял :-) но вопросики остались :-[ Поле Edit... мне нужно туда выводить текст, скролл если текст влазить не будет, но этот текст должно быть нельзя редактировать. es_readonly- почти то что нужно, но меняется цвет, а нужен всё таки белый... как изменить цвет или как по другому сделать можно, это 1. 2. Ну всё также, загрузка/показ рисунка... ни где так примера и не нашел... 3. Можно ли вызвать стандартный progress bar.... там я в исходнике в принципе набросал из STATIC'а... но стандартным симпотичнее было бы... Вроде кроме этого вопросов возникнуть не должно :-) p.s. там если в исходнике чего лишнего... я его не целиком выкладываю... кое-что удаляю... все равно там всё тоже самое... но огрызки остаются... |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
1.
Цитата Можно ли вызвать стандартный progress bar Можно: // Создаем прогрессбар Вот так посылаем прогресс-бару сообщения: ... Необходимые константы: Const 2. Цитата Ну всё также, загрузка/показ рисунка... ни где так примера и не нашел... Вот тебе пример:var Насчет неизменяемого EDIT-а сейчас гляну... Добавлено через 9 мин. P.S. А, ну так не надо делать ES_READONLY, достаточно написать ничего не делающую оконную функцию: var |
Snake_B |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Можно: // Создаем прогрессбар Вот так посылаем прогресс-бару сообщения: ... Необходимые константы: Const Всё вроде понятно... но вот прогресс бар не хотит работать... не знаю чему :-) p.s. с jpeg'ом тоже разобрался... стандартно... но размер exe сразу за 250 кб перевалил.. |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата прогресс бар не хотит работать... не знаю чему :-) Хочешь - вот проект полностью - у меня все работает (Delphi 2007 + WinXP SP2), компилируй, запускай (только свою картинку проставь, у меня уж очень большая, чтоб ее вывешивать)... Прикрепленные файлы ![]() |
Snake_B |
![]()
Сообщение
#11
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хочешь - вот проект полностью - у меня все работает (Delphi 2007 + WinXP SP2), компилируй, запускай (только свою картинку проставь, у меня уж очень большая, чтоб ее вывешивать)... тоже ни чего... странно... и ещё вопросик... как правильно с формами работать.. т.е. создаю форму, надо удалить и создать другую... оно то работает, то программа закрывается.. не могу толком разобратся... ну или как изменить размеры формы.. |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата тоже ни чего... странно... Что значит "Ничего"? Программа запустилась? Окно отрисовала? Картинку вывела? На кнопку нажал? Что произошло? Закрылось? Сразу, или с задержкой? Версия Windows и Delphi какая?Это все я должен спрашивать, или ты мог сам догадаться рассказать? Невозможно локализовать ошибку, когда ты молчишь, как партизан: "не работает и все"... Ну, не работает, значит делай, чтоб работало... Программа в конце концов нужна тебе... У меня все отрабатывает. Цитата оно то работает, то программа закрывается.. не могу толком разобратся... Что "ОНО"? Это я тоже должен догадаться, как ты реализовал, и что у тебя там происходит? |
Snake_B |
![]()
Сообщение
#13
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Что значит "Ничего"? Программа запустилась? Окно отрисовала? Картинку вывела? На кнопку нажал? Что произошло? Закрылось? Сразу, или с задержкой? Версия Windows и Delphi какая? Это все я должен спрашивать, или ты мог сам догадаться рассказать? Невозможно локализовать ошибку, когда ты молчишь, как партизан: "не работает и все"... Ну, не работает, значит делай, чтоб работало... Программа в конце концов нужна тебе... У меня все отрабатывает. Что "ОНО"? Это я тоже должен догадаться, как ты реализовал, и что у тебя там происходит? действительно... :-[ 1. Окно отрисовало, картинка есть, кнопку нажал.. окно закрылось, с задержкой... но прогресс бар не отрисовало.... всё остальное есть, его нету... визуально... delphi 2005 + win xp sp2 2. После первой формы надо создать вторую (это я сделал), а первую надо удалить, делаю "destroywindow(handleWindow);" программа закрывается полостью. Добавлял форму вторую, вроде работало, уничтажалась первая, программа работала дальше... потом вынес создание форм в процедуры закрывается при уничтожении любой из форм (и первой и второй)... может исходник положить? Сообщение отредактировано: Snake_B - 8.05.2008 0:43 |
andriano |
![]()
Сообщение
#14
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
А ты уверен что тебе нужно их именно уничтожать?
Скрыть (сделать, что б не рисовались) недостаточно? |
Snake_B |
![]()
Сообщение
#15
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
А ты уверен что тебе нужно их именно уничтожать? Скрыть (сделать, что б не рисовались) недостаточно? Да в принципе лучше всего использовать одно, только менять его размеры... function SetWindowPos(Wnd, WndInsertAfter: HWnd; X, Y, cx, cy: может быть так... только у меня не получается :-) |
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
Цитата окно закрылось, с задержкой... но прогресс бар не отрисовало.... Хочешь, я присоединю исходник, проверишь его, больше ничего сказать не могу, проверял на 4-х машинах, везде все в порядке...Цитата может быть так... только у меня не получается Вот так - получается:SetWindowPos(handleWnd, 0, 0, 0, 700, 600, SWP_NOMOVE or SWP_NOZORDER); |
Snake_B |
![]()
Сообщение
#17
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хочешь, я присоединю исходник, проверишь его, больше ничего сказать не могу, проверял на 4-х машинах, везде все в порядке... Вот так - получается: SetWindowPos(handleWnd, 0, 0, 0, 700, 600, SWP_NOMOVE or SWP_NOZORDER); Спасибо... А по прогресс бару... ну и ладно... без него сделаю.. не критично... В основном пока всё... но мне кажется будет ещё пару тройку вопросов по позже :-) |
andriano |
![]()
Сообщение
#18
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
А по прогресс бару... ну и ладно... без него сделаю.. не критично... Что-то мне не понравилось в стандартной прогрессбар, сделал свою. Прикрепленные файлы ![]() |
Snake_B |
![]()
Сообщение
#19
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вообще-то все, что нужно, можно сделать ручками. Что-то мне не понравилось в стандартной прогрессбар, сделал свою. не знаю... чего то не сильно получается... можно все файлы выложить? как в "TESTFNT2.exe"... а то у меня подозрение... что и этот не работает... или у меня руки кривые... и к Вольво тоже вопросик... пример с progressbar... exe-шник можно выложить? ну или на мыло... это по прогресс бару... и новый вопросик.. есть у меня там ListBox... indexLB:= SendMessage(ListB1, LB_GETCURSEL, 0, 0); вот так достаю номер выделенной строки... а как мне достать содержание этой строки? |
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Цитата а как мне достать содержание этой строки? var Вот EXE-шник: ![]() (только там теперь по нажатию на кнопку отрабатывает ProgressBar и размер формы меняется, закрывать форму придется "крестиком")... |
![]() ![]() |
![]() |
Текстовая версия | 12.07.2025 16:29 |