Форум: "WinAPI";
Текущий архив: 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)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c