Форум: "WinAPI";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
ВнизCreateDialog ( R ) Найти похожие ветки
← →
YUS (2001-11-24 06:47) [0]Мастера, подскажите ламеру.В Dll поместил форму,хук.
Устанавливаю хук в Explorer,он должен создать окно.Procedure ShowMyForm;-устанавливает форму.При обращении к
CreateDialog выдает ошибку.Неверно установлен первый или второй
параметр ф-ции CreateDialog.Подскажите, как не присоединяя дополнительных файлов(*.res)можно использовать CreateDialog в моем случае?
function GetMsdProc(Code: Integer; wParam, lParam:Longint):Longint; stdcall;
begin
if nOk = 0 then begin
CreateDialog(hInstance,@ShowMyForm,null,@Disp)
PostThreadMessage(IdPot,WM_NULL,0,0);
inc(nOk);
end ;
← →
Suntechnic (2001-11-24 08:27) [1]У тебя что, амнезия?
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1006365171&n=5
← →
YUS (2001-11-24 17:49) [2]:)
Чем ругаться, подскажи лучше, как файл (*.res)подключить в DLL
← →
Suntechnic (2001-11-24 18:28) [3]...а кто сказал что я ругался? Я диагноз ставил :)
>Чем ругаться, подскажи лучше, как файл (*.res)подключить в DLL
Точно так же как и к exe...
← →
YUS (2001-11-24 18:39) [4]Делаю так
const
WM_IPoint = WM_USER+512;
WM_IName = WM_USER+513;
WM_OK = WM_USER+514; //окно создано
WM_ComandD = WM_USER+515; // передать координаты
IDD_DIALOG = "Dialog.res";
.
.
CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG),null,@Disp);
Выдает ошибку при создании окна.
← →
Suntechnic (2001-11-24 18:45) [5]Ну и что ты понаписывал? Бред полный...
Открой ещё раз ветку
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1006365171&n=5
и перечитай всё сначала...
← →
YUS (2001-11-24 19:14) [6]
" Подключи в свою программу полученный RES файл. ( {$R твой_файл.res})"
В таком виде подключения файла $R DIALOG.res не работает Сделал, так как
подключал DLL к EXE .
CreateDialog(hInstance,IDD_DIALOG,null,@Disp);- так тоже ошибку выдает при создании окна. Если не трудно напиши как должно быть,в качестве исключения,
как больному амнизией. :)
← →
Suntechnic (2001-11-24 23:01) [7]Блин, ну что тут непонятного?
Файл resources.rc
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
10 DIALOGEX 0, 0, 193, 74
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOPMOST
CAPTION "Test Application"
FONT 8, "Helv", 0, 0
BEGIN
PUSHBUTTON "Close",IDCANCEL,134,38,52,15
LTEXT "Test:",IDC_STATIC,7,7,107,10
CONTROL 101,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,7,68,
179,3
EDITTEXT 160,7,17,179,15,ES_AUTOHSCROLL | ES_READONLY
END
Текст программы(предварительно обработав resources.rc утилитой BRCC32.EXE):
program Project1;
{$R "resources.res" "resources.rc"}
uses
SysUtils,
Windows,
Messages;
function WndFunc(Wnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;
begin
Result := 0
end;
begin { main }
DialogBox(hInstance,MAKEINTRESOURCE(10),0,@WndFunc);
// CreateDialog(hInstance,MAKEINTRESOURCE(10),0,@WndFunc);
end.
Разница в вызовах CreateDialog и DialogBox заключается в том, что в одном случае окно будет модальным а во втором нет. Тебе скорее всего надо первый случай, но тебе видней.
← →
YUS (2001-11-25 07:03) [8]Suntechnic , я использовал редактор ресурсов для создания ресурса окна.Назвал его не 10 а IDD_DIALOG Сделаю как скажешь(но разници помоему нет)Созданый редактором файл назвал Dialog.res.
Вместо function WndFunc(Wnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;использовал Procedure Disp(Wnd, Msg: DWord; wParam, lParam: integer); в этом наверно ошибка Заменил на функцию ошибке не выдает но и окна тоже нет. В твоем вышеописаном примере нет подключения ресурсов Может в этом причина???
{$R "resources.res" "resources.rc"}-Это же не подключение????
← →
Suntechnic (2001-11-25 07:34) [9]Ты как окно создаёшь? Одно дело, что окно не создаётся, а другое, что оно не показывается. Если ты используешь CreateDialog, то ты скорее всего его просто на экране не видишь. Как я уже упоминал эту ф-ция создаёт немодальное окно. Попробуй вместо CreateDialog использовать DialogBox. Как процедура называется вообще никакого значения не имеет...
Хоть это и не в моих принципах, но если уж и после этого ничего не выйдет можешь мне намылить исходники я гляну, что у тебя там не запускается...
spam_kamashev@hotbox.ru
Только уберёшь "spam_" из мыльника, а то спамщики совсем достали...
← →
Evgeny (2001-11-26 10:13) [10]{$R "resources.res"}
Данная строка как раз и является подключением ресурса. Дальше ты описал диалог как IDD_DIALOG, но этот идентификатор нигде, скорее всего, не определил. Вот тебе и ошибка. По этой причине я и предлагал использовать число. Suntechnic тебе совершенно верно все описал:
CreateDialog(hInstance, MAKEINTRESOURCE(10), 0, @WndFunc);
А вот такая запись:
IDD_DIALOG = "Dialog.res";
является полной ахинеей.
Должно быть так:
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
10 DIALOGEX 0, 0, 193, 74
равносильно, но с описанием в дополнительном PAS файле:
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_DIALOG DIALOGEX 0, 0, 193, 74
тогда в том PAS файле пишем так:
const
IDD_DIALOG = 10;
и этот файл обязательно подключаем в Uses.
Теперь вроде все разжевано.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c