Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CreateDialog -???? [D5, Win95/98]


YUS ©   (2001-11-21 20:52:00) 

Мастера, подскажите, в чем ошибка.У меня проблема с ф-цией CreateDialog. При создании окна "dddd"- выдает ошибку.
Может неверно задано имя окна?????
function GetMsdProc(Code: Integer; wParam, lParam:Longint):Longint; stdcall;
begin
if nOk = 0 then begininc(nOk);
CreateDialog(hInstance,"dddd",null,@Disp);//?????????
end;
function SetHook(hMain:THandle):boolean; export;
var IDTrad : cardinal;
begin
hServ:=hMain;
IdTrad:=GetWindowThreadProcessId(hStol,0); //находим его ID
If HookID = 0 then begin
IdPot:= GetCurrentThreadId();
HookID:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsdProc,hInstDll,IDTrad);
if HookID<>0 then begin // Если хук установлен т0
PostThreadMessage(IdTrad,WM_NULL,0,0);
Result:=true;end else Result:=false;end;end;


Evgeny   (2001-11-22 14:53:00) [1]

А тебе полный ответ и дали. Указанный выше пример положи в файл с расширением .RC. Обработай файлом BRCC32.EXE. Подключи в свою программу полученный RES файл. ( {$R твой_файл.res} ) Ну и вызывай свой диалог.
Для простоты имя диалога (IDD_MAINDIALOG) можешь заменить на число - ну к примеру 10 (или в дополнительном PAS файле опиши это имя как числовую константу - к примеру опять же 10). Ну и дальше вызывай:
CreateDialog(hInstance, 10, null, @Disp)


YUS   (2001-11-22 08:41:00) [2]

А под Delphi примерчика неукого нет?


YUS   (2001-11-22 08:05:00) [3]

Suntechnic,
БОЛЬШОЕ СПАСИБО !!!!!!!!!!!!!!


Suntechnic   (2001-11-22 07:52:00) [4]

Шаблон окна это ресурс, на базе которого создаётся диалоговое окно. Ресурс можно создать в специальном редакторе ресурсов или просто ручками. Ну например он может иметь вот такой вид:
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_MAINDIALOG DIALOGEX 0, 0, 193, 74
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOPMOST
CAPTION "Open Password"
FONT 8, "Helv", 0, 0, 0x0
BEGIN
PUSHBUTTON "Close",IDCANCEL,134,38,52,15
LTEXT "Password:",IDC_STATIC,7,7,107,10
CONTROL "Spy Mode On",IDC_GOBTN,"Button",BS_AUTOCHECKBOX |
BS_PUSHLIKE | WS_TABSTOP,7,38,52,15
CONTROL 101,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,7,68,
179,3
RTEXT "",IDC_COPYRIGHT,58,56,128,10,SS_NOTIFY
EDITTEXT IDC_PASSEDIT,7,17,179,15,ES_AUTOHSCROLL | ES_READONLY
END

Здесь IDD_MAINDIALOG это и есть тот самый идентификатор ресурса, только он ещё имеет численный эквивалент который здесь не показан...

...честно говоря когда мне надо писать на API и использовать ресурсы диалогового окна я беру VC++ и не морочу себе голову, там есть прекрасный редактор ресурсов... а уж чего в Делфях для этих целей есть сказать не могу...


YUS   (2001-11-22 07:11:00) [5]

Из хелпов перевел как название окна,вижу ошибся.Объясните ламеру, что есть шеблон окна.


Suntechnic   (2001-11-21 21:01:00) [6]

А что есть "dddd" в твоём случае? Вообще-то вторым параметром передаётся имя шаблона, на основании которого окно создаётся. Тут два варианта:
1) Либо ты такими "постыдными" именами шаблоны обхываешь :)
2) Либо не разобрался как на API диалоговые окна создаются...
В любом случае дело во втором параметре...


Наверх

Титульная страница Поиск, карта сайта Написать письмо