Форум: "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.026 c
14-66355          Simonaln              2001-11-26 16:31  2002.01.21  
ПО для тестировния


3-66198           ol                    2001-12-18 10:01  2002.01.21  
переменные в sql в mssql??


4-66411           Tatyana               2001-11-12 16:49  2002.01.21  
Как встроить свою кнопку (со своими действиями) в ToolBar Internet Explorer


3-66192           Don`t know!           2001-12-18 10:11  2002.01.21  
Как Bitmap-из Image1 записать в blob-поле Table1


1-66276           BigLamer              2002-01-04 12:57  2002.01.21  
Почему Delphi делит не верно?