Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизПередача фокуса Найти похожие ветки
← →
DVM © (2004-05-31 21:08) [40]
> Piter © (31.05.04 19:08) [38]
Кстати, у тебя есть в программе хоть одно не диалоговое окно. Т.е. созданное нормально и имеющее обычного вида оконную процедуру? Должно быть (пусть даже невидимое). Можно, конечно обойтись и без него, но с ним удобнее.
← →
Piter © (2004-05-31 21:47) [41]Файл с ресурсами я привел...
Код весь я привести не могу, программа не такая и маленькая, буду вырезать ненужные части:program NetSend;
uses
Windows,
Messages,
ns in "ns.pas";
{$R ns.res}
var
Instance, Handle: HWND;
EditSource, EditDestination, EditText, Button: HWND ;
msg: TMsg;
WindowClass: TWNDClass;
Width, Height: integer;
nHeight, nWidth: integer;
i:integer;
procedure ExitProgram;
begin
Halt;
end;
function DialogProc(hWnd: THandle; Msg: Integer; wParam, lParam : Integer): Bool; stdcall;
begin
beep(500,500);
end;
function WndProc(Hwn,msg,wpr,lpr:HWND):longint;stdcall;
begin
if msg=wm_destroy then ExitProgram;
result:=defwindowproc(hwn,msg,wpr,lpr);
end;
BEGIN
instance:=GetModuleHandle(nil);
Windowclass.style:=CS_HRedraw or CS_VRedraw;
WindowClass.lpfnWndProc := @WndProc;
WindowClass.hInstance :=instance;
Windowclass.hbrBackground:=COLOR_BACKGROUND;
WindowClass.lpszClassName:= "NetSend";
Windowclass.hCursor :=LoadCursor(0,IDC_ARROW);
RegisterClass(WindowClass);
Width:= 300;
Height := 180;
nWidth:=(GetSystemMetrics(SM_CXSCREEN) div 2)-(Width div 2);
nHeight:=(GetSystemMetrics(SM_CYSCREEN) div 2)-(Height div 2);
Handle:=CreateWindowEx(0,WindowClass.lpszClassName,PChar("NetSend"),WS_SYSMENU or WS_MINIMIZEBOX, nWidth,nHeight,Width,Height,0,0,WindowClass.hInstance,nil);
i:=DialogBoxParam(Instance,MAKEINTRESOURCE(1),Handle,@DialogProc,0);
while (GetMessage(msg,0,0,0)) do
begin
translatemessage(msg);
dispatchmessage(msg);
end;
END.
← →
nikkie © (2004-05-31 23:05) [42]>DVM
А если нужно, чтобы по определенному условию фокус установился на некотором поле редактирования? Тогда надо использовать SetFocus()+ GetDlgItem().
тогда причем здесь TAB и WM_KEYDOWN?
Кстати, у тебя есть в программе хоть одно не диалоговое окно. Т.е. созданное нормально и имеющее обычного вида оконную процедуру? Должно быть (пусть даже невидимое).
абсолютно не должно.
Можно, конечно обойтись и без него, но с ним удобнее.
чем же это удобнее?
>Piter
Код весь я привести не могу, программа не такая и маленькая, буду вырезать ненужные части:
можешь все сразу выкидывать. оставь вызов DialogBoxParam и DialogProc. в DialogProc поставь
Result := False;
все остальное для диалогового приложения не нужно.
← →
Piter © (2004-05-31 23:32) [43]nikkie (31.05.04 23:05) [42]
да код я уже выложи более часа назал до твоего поста :)
← →
nikkie © (2004-05-31 23:47) [44]>да код я уже выложи более часа назал до твоего поста :)
я твой пост видел. потрудись и ты мой прочитать.
← →
Piter © (2004-05-31 23:54) [45]nikkie (31.05.04 23:47) [44]
потрудись и ты мой прочитать
слушай, а я твой тоже прочитал... с чего ты решил, что я его не читал?
nikkie (31.05.04 23:05) [42]
оставь вызов DialogBoxParam
оставил
nikkie (31.05.04 23:05) [42]
и DialogProc
оставил
nikkie (31.05.04 23:05) [42]
в DialogProc поставь
Result := False;
а зачем? Все равно DialogProc НИ РАЗУ не вызывается.
DialogBoxParam возвращает -1
← →
nikkie © (2004-06-01 00:20) [46]program Project2;
uses Messages, SysUtils, Windows;
{$R ns.res}
function DialogProc(hWnd: THandle; Msg: Integer; wParam, lParam : Integer): Bool; stdcall;
begin
case Msg of
WM_COMMAND:
case LoWord(wParam) of
IDOK:
EndDialog(hWnd, 1);
IDCANCEL:
EndDialog(hWnd, 0);
end;
end;
Result := False;
end;
begin
DialogBoxParam(HInstance, MAKEINTRESOURCE(1), 0, @DialogProc, 0)
end.
← →
nikkie © (2004-06-01 00:21) [47]1 DIALOG DISCARDABLE 0, 0, 194, 79
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Believe me that is easy"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,136,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,136,24,50,14
END
← →
Piter © (2004-06-01 00:28) [48]nikkie (01.06.04 00:21) [47]
PUSHBUTTON &ogProc, 0)
ругается на это
← →
DVM © (2004-06-01 00:28) [49]Убери из файла ресурса название класса окна. Строка с указанием класса окна нужна только если для диалога будет использоваться своя настоящая оконная процедура.
← →
Piter © (2004-06-01 00:29) [50]nikkie (01.06.04 00:21) [47]
и вообще, к чему ты это привел?
DialogProc у меня все равно не вызывается пока...
а ресурс твой не открывается... свой ресурс я уже приводил...
← →
Piter © (2004-06-01 00:33) [51]DVM (01.06.04 00:28) [49]
блин... заработало :)
← →
Piter © (2004-06-01 00:35) [52]DVM (01.06.04 00:28) [49]
только заголовк формы кракозябрами
← →
nikkie © (2004-06-01 00:40) [53]>и вообще, к чему ты это привел?
все. я сдаюсь.
← →
DVM © (2004-06-01 00:42) [54]>только заголовк формы кракозябрами
выкинь из файла ресурсов все что после шрифта.
← →
Piter © (2004-06-01 01:02) [55]nikkie (01.06.04 00:40) [53]
все. я сдаюсь.
ну я понимаю, что считаешь меня тупым и не было бы по фигу, если бы это был не ты. Но так как это ты, то попытаюсь оправдаться:
ты привел код DialogProc - спасибо, конечно. Но на кой он мне нужен был, если он все равно не вызывается?
еще ты привел файл своих ресурсов, как я понял. Но я тебе уже сказал, что они у меня не открываются... в чем я не прав?
DVM (01.06.04 00:42) [54]
это правильный путь? Может, в RW надо что настроить? А то так каждый раз выкидывать...
Кстати, а какая у вас версия этого воркшопа? У меня 4.5, чуть ли не 1994 года, хотя это очень странно...
← →
nikkie © (2004-06-01 01:15) [56]ты привел код DialogProc - спасибо, конечно. Но на кой он мне нужен был, если он все равно не вызывается?
я привел не код функции, а полностью работоспособную программу - dpr и rc файлы. привел ее потому, что ты проигнорировал мои слова о том, что у тебя осталась еще уйма кода, ненужного для диалогового приложения.
Но я тебе уже сказал, что они у меня не открываются... в чем я не прав?
не надо пытаться ресурс левыми программами открывать. brcc32 ns.rc - из предыдущего разговора мне казалось, что ты умеешь ресурсы компилировать.
У меня 4.5, чуть ли не 1994 года
видимо 16-bit и сохраняет русский текст в дос-кодировке? не пробовал в текстовом редакторе rc открыть?
← →
DVM © (2004-06-01 01:37) [57]>Кстати, а какая у вас версия этого воркшопа?
BC++5.0
он там встроенный
и еще MS VC6 - этот получше будет.
А свой редактор выкинь - больно старый.
← →
DVM © (2004-06-01 02:14) [58]>nikkie
>тогда причем здесь TAB и WM_KEYDOWN?
как я уже сказал передача фокуса в диалоговом окне происходит функцией SetFocus(), которую вызываетдефолтовая настоящая оконная процедура диалога, скрытая в недрах Windows по приходу WM_KEYDOWN с клавишей TAB.
Т.е как ни крути - одно и то же.
>чем же это удобнее?
Обычная практика так делать. Тот же Петзольд так делает в книге.
← →
nikkie © (2004-06-01 02:48) [59]>скрытая в недрах Windows
ок. просто изначальная формулировка могла наводить на мысль, что SetFocus нужно будет вызывать руками.
>Обычная практика так делать
я так не делаю. пример диалогового приложения я привел выше - код простейший, зачем лишнее окно создавать непонятно.
← →
nikkie © (2004-06-01 03:21) [60]по поводу Петцольда - посмотри пример /chap12/ctlmacro.c
← →
Игорь Шевченко © (2004-06-01 11:47) [61]Книга Петцольда называется, как ни странно, "Программирование для Windows"
← →
Piter © (2004-06-01 18:30) [62]nikkie (01.06.04 01:15) [56]
не надо пытаться ресурс левыми программами открывать
Resource Workshop очень левая программа?
Так какая ее последняя версия?
Игорь Шевченко (01.06.04 11:47) [61]
Книга Петцольда называется, как ни странно, "Программирование для Windows"
примеры на VC?
← →
Gero © (2004-06-01 21:56) [63]
> Книга Петцольда называется, как ни странно, "Программирование
> для Windows"
Немного оффтопа.
Вот интересно, существуют ли в природе нормальные книги по программированию с примерами на Delphi?
← →
DVM © (2004-06-01 23:43) [64]Какая разница какой язык - все равно все программирование сводится к вызовам одних и тех же функций winapi.
← →
Gero © (2004-06-01 23:52) [65]
> DVM © (01.06.04 23:43)
Ты конечно прав, но можешь ли ты ответить на мой вопрос?
← →
DVM © (2004-06-02 00:08) [66]Чтобы исключительно WinApi и Delphi я не встречал. Специфика Delphi вероятно. Среда быстрой разработки однако.
← →
Gero © (2004-06-02 00:14) [67]
> Среда быстрой разработки однако.
Ага, батонов на форму накидал и делов-то.
← →
Игорь Шевченко © (2004-06-02 00:35) [68]
> Вот интересно, существуют ли в природе нормальные книги
> по программированию с примерами на Delphi?
Тейксейра и Пачеко.
Бакнелл.
#ifdef FLAME
Люди, вам лень книжку купить и заглянуть в нее ? Ладно, купить, но поискать по инету, скачать и ПРОЧИТАТЬ!
Получается какое-то несправедливое расслоение - кто-то книжки покупает(скачивает) читает, а кто-то считает, что теперь прочитавшие ему на блюдце должны выкладывать готовые рецепты, так как они ни с языком другим не могут примеры разобрать, ни еще чего. Почему за них должен делать добрый дядя ?
#endif
← →
Gero © (2004-06-02 00:49) [69]
Игорь Шевченко © (02.06.04 00:35)
> а кто-то считает, что теперь прочитавшие ему на блюдце должны
> выкладывать готовые рецепты, так как они ни с языком другим
> не могут примеры разобрать
Как я понял, мне это тоже адресуется.
А кто говорит, что "с языком другим не может примеры разобрать"?
Если я спросил, существуют ли в природе нормальные книги по программированию с примерами на Delphi, это значит что я на си не в состоянии разобрать пример или как??
Страницы: 1 2 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.032 c