Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Вниз

CreateDialog -???? 


YUS   (2001-11-21 20:52) [0]

Мастера, подскажите, в чем ошибка.У меня проблема с ф-цией 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;



Suntechnic   (2001-11-21 21:01) [1]

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



YUS   (2001-11-22 07:11) [2]

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



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

Шаблон окна это ресурс, на базе которого создаётся диалоговое окно. Ресурс можно создать в специальном редакторе ресурсов или просто ручками. Ну например он может иметь вот такой вид:
/////////////////////////////////////////////////////////////////////////////
//
// 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 08:05) [4]

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



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

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



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

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




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.012 c
1-66267           hacker                2002-01-01 21:48  2002.01.21  
Обработка событий в дмнамически создаваемых компонентах


14-66338          Христос               2001-11-24 14:42  2002.01.21  
WinApi


1-66302           VlNek                 2002-01-04 18:00  2002.01.21  
Конвертирование bmp в jpeg


1-66232           StelZ                 2002-01-03 03:25  2002.01.21  
Отсечь заголовок


4-66410           Moscower              2001-11-16 16:13  2002.01.21  
Помогите найти ошибку