Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизПередача фокуса Найти похожие ветки
← →
Piter © (2004-05-30 16:00) [0]Есть несколько Edit"ов на окне. Как реализовать передачу фокуса по [TAB] ?
P.S. И еще такой вопросик в оффтоп - какой стиль надо присвоить Edit"у, чтобы он стал трехмерным, как в VCL? А то у меня плоский, некрасиво выглядит...
← →
Гость с юга (2004-05-30 16:04) [1]1. TabOrder -> 0,1,2
2. Ctrl3D = True (Default)
← →
Piter © (2004-05-30 16:11) [2]Нда... спасибо большое
← →
Piter © (2004-05-30 16:11) [3]Рекомендую посмотреть на название конференции
← →
GuAV © (2004-05-30 16:43) [4]
> какой стиль надо присвоить Edit"у
WS_EX_CLIENTEDGE Specifies that a window has a border with a sunken edge.
← →
Piter © (2004-05-30 16:45) [5]GuAV (30.05.04 16:43) [4]
нет, не работает
← →
GuAV © (2004-05-31 00:28) [6]
> Piter © (30.05.04 16:45) [5]
> GuAV (30.05.04 16:43) [4]
>
> нет, не работает
Работает.
юзай CreateWindowEx и шли его первым параметром.
← →
Piter © (2004-05-31 00:32) [7]GuAV (31.05.04 00:28) [6]
нда... тормозить не запретишь :)
А как насчет
>Есть несколько Edit"ов на окне. Как реализовать передачу фокуса по [TAB] ?
← →
DVM © (2004-05-31 01:19) [8]
> Piter © (30.05.04 16:00)
> Есть несколько Edit"ов на окне. Как реализовать передачу
> фокуса по [TAB] ?
Окно и Edit-ы созданы из ресурса или CreateWindowEx?
← →
Piter © (2004-05-31 01:32) [9]CreateWindowEx
А что ты подразумеваешь под
>созданы из ресурса
?
← →
nikkie © (2004-05-31 01:35) [10]ресурс есть такой DIALOG
и функции соответствующие - DialogBox, DialogBoxParam.
← →
DVM © (2004-05-31 01:40) [11]
> Piter © (31.05.04 01:32) [9]
При программировании интерфейса на WinApi обычно не используют кучу вызовов CreateWindow() для создания диалоговых окон и контролов на них. Вместо этого шаблон окна диалога описывают в файле ресурсов и потом вызывая DialogBoxParam(), например, создают такое окно одим махом, дополнительно получая массу бонусов, например, передача фокуса и т.д.
Подробнее тут:
http://web.ict.nsc.ru/~cancel/delphi/vclfree.html/file3.html
В любом случае передача фокуса будет происходить с помощью SetFocus(). А нажатие TAB - это лишь сообщение WM_KEYDOWN.
← →
nikkie © (2004-05-31 01:53) [12]>DVM
>В любом случае передача фокуса будет происходить с помощью SetFocus(). А нажатие TAB - это лишь сообщение WM_KEYDOWN.
это зачем? по приведенной тобой же ссылке написано:Преимущество такого способа создания диалоговых окон заключается в том, что Windows берет на себя обеспечение интерфейса диалоговых окон, к которому привык пользователь — кнопки по умолчанию (срабатывающия, когда пользователь нажмет <Enter> или <Esc>); возможность переключения между дочерними элементами управления при помощи клавиши <Tab> и т.п.
← →
Piter © (2004-05-31 02:33) [13]Что-то не получается ни фига... ресурс создал, подключил.
Вызываю так:i:=DialogBoxParam(Instance,"DIALOG_1",Handle,@DialogProc,0);
После вызова i=-1
GetLastError дает "Не удается найти класс окна", если DialogBoxParam вообще устанавливает код ошибки...
← →
nikkie © (2004-05-31 02:35) [14]DialogBoxParam(Instance,MAKEINTRESOURCE(DIALOG_1),Handle,@DialogProc,0);
← →
Piter © (2004-05-31 02:40) [15]Piter (31.05.04 02:33) [13]
MAKEINTRESOURCE(DIALOG_1)
ну тогда уж наверное все такиMAKEINTRESOURCE("DIALOG_1")
Все равно не работает, тоже самое. Да и вообще MAKEINTRESOURCE это ведь просто приведение к PChar"у.
А Дельфи и так к PChar"у приводит...
← →
nikkie © (2004-05-31 02:49) [16]>ну тогда уж наверное все таки
нет. параметром MAKEINTRESOURCE должен быть ID диалога - целое число.
← →
Piter © (2004-05-31 03:40) [17]nikkie (31.05.04 02:49) [16]
параметром MAKEINTRESOURCE должен быть ID диалога
а как я узнаю ID диалога? DIALOG_1 естественно неизвестная переменная для дельфи...
← →
Piter © (2004-05-31 11:05) [18]вот блин...
← →
GuAV © (2004-05-31 12:23) [19]
> а как я узнаю ID диалога? DIALOG_1 естественно неизвестная
> переменная для дельфи...
В pедакотре ресурсов обзови его каким-то числом, например 1000, это и будет ID
← →
Игорь Шевченко © (2004-05-31 12:27) [20]Piter © (31.05.04 11:05)
Петцольда читать. Наизусть. Буду экзамен принимать.
← →
Piter © (2004-05-31 17:25) [21]Игорь Шевченко (31.05.04 12:27) [20]
а как полностью книжка называется?
← →
Piter © (2004-05-31 17:37) [22]GuAV (31.05.04 12:23) [19]
В pедакотре ресурсов обзови его каким-то числом, например 1000, это и будет ID
обозвал еденичкой. Вызываю:i:=DialogBoxParam(Instance,MAKEINTRESOURCE(1),Handle,@DialogProc,0);
не пашет :(
"Указанной имя ресурса не найдено в файле образа"
← →
DVM © (2004-05-31 18:00) [23]
> Piter © (31.05.04 17:37) [22]
i:=DialogBoxParam(Instance,PChar(1),Handle,@DialogProc,0);
← →
DVM © (2004-05-31 18:13) [24]
> nikkie © (31.05.04 01:53) [12]
> >DVM
> >В любом случае передача фокуса будет происходить с помощью
> SetFocus(). А нажатие TAB - это лишь сообщение WM_KEYDOWN.
>
> это зачем? по приведенной тобой же ссылке написано:
А если нужно, чтобы по определенному условию фокус установился на некотором поле редактирования? Тогда надо использовать SetFocus()+ GetDlgItem().
← →
Piter © (2004-05-31 18:31) [25]DVM (31.05.04 18:00) [23]
ну так MAKEINTRESOURCE это и есть приведение к PChar"у!
← →
DVM © (2004-05-31 18:48) [26]
> Piter © (31.05.04 18:31) [25]
В чем делал ресурс?
Ты ресурс скомпилировал?
К проекту подцепил?
Все должно работать вообще то.
← →
Gero © (2004-05-31 18:50) [27]Иногда с ресурсами бывает подобная фигня, попробуй закрыть проект и открыть заново.
← →
Piter © (2004-05-31 18:51) [28]DVM (31.05.04 18:48) [26]
В чем делал ресурс?
Resource Workshop
DVM (31.05.04 18:48) [26]
Ты ресурс скомпилировал?
да, с помощью brcc32
DVM (31.05.04 18:48) [26]
К проекту подцепил?
да
DVM (31.05.04 18:48) [26]
Все должно работать вообще то.
ан не работает
← →
Piter © (2004-05-31 18:52) [29]Gero (31.05.04 18:50) [27]
Иногда с ресурсами бывает подобная фигня, попробуй закрыть проект и открыть заново
да я чего только не делал
← →
DVM © (2004-05-31 18:54) [30]
> Piter © (31.05.04 18:52) [29]
Нескомпилированный RC файл покажи.
← →
Piter © (2004-05-31 18:56) [31]Код программы такой:
program NetSend;
uses
Windows,
Messages,
ns in "ns.pas";
{$R ns.res}
...
Вызов функции:i:=DialogBoxParam(Instance,MAKEINTRESOURCE(1),Handle,@DialogProc,0);
Кстати, теперь ошибку пишет "Не удается найти класс окна". Уже не ругается, что не может найти в образе ресурс
← →
Piter © (2004-05-31 18:57) [32]DVM (31.05.04 18:54) [30]
Нескомпилированный RC файл покажи/****************************************************************************
ns.rc
produced by Borland Resource Workshop
*****************************************************************************/
1 DIALOG 69, 52, 161, 127
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
CLASS "MyClass"
CAPTION "Мое окно"
FONT 8, "MS Sans Serif"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
}
← →
DVM © (2004-05-31 18:57) [33]
> Piter © (31.05.04 18:52) [29]
Погляди по той ссылке, что я приводил, там можно скачать демо-примеры. Там и с окном из ресурса есть.
← →
GuAV © (2004-05-31 18:58) [34]
> i:=DialogBoxParam(Instance,PChar(1),Handle,@DialogProc,0);
аж интересно стало - сам опробовал. работает.
build сделай, попробуй .res отдельный, а не project1.res
← →
GuAV © (2004-05-31 19:01) [35]
> RC файл
зачем? создавай res-файл в res ws
{$R mydialog.res}
← →
Piter © (2004-05-31 19:05) [36]GuAV (31.05.04 19:01) [35]
а дельфи тогда ругается, что файл ресурсов 16 битный...
← →
Piter © (2004-05-31 19:05) [37]так в чем у меня ошибка? В ДНК что ли ? :)))
← →
Piter © (2004-05-31 19:08) [38]GuAV (31.05.04 18:58) [34]
попробуй .res отдельный, а не project1.res
конечно, отдельный!!! Кто же ресурсы в главном ресурсном файле создает...
← →
DVM © (2004-05-31 21:02) [39]
> Piter © (31.05.04 19:08) [38]
давай весь код и файла ресурсов и код программы включая циклы сообщений и оконные процедуры.
← →
DVM © (2004-05-31 21:08) [40]
> Piter © (31.05.04 19:08) [38]
Кстати, у тебя есть в программе хоть одно не диалоговое окно. Т.е. созданное нормально и имеющее обычного вида оконную процедуру? Должно быть (пусть даже невидимое). Можно, конечно обойтись и без него, но с ним удобнее.
Страницы: 1 2 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.035 c