Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.28;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2002.01.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
1-90325
Ghost!
2002-01-11 18:40
2002.01.28
Деление String


3-90195
Вика
2001-12-21 22:25
2002.01.28
Хранимые процедуры и рефреш таблицы


1-90304
Сержик
2002-01-11 09:36
2002.01.28
Компонента для архивирования есть?


1-90247
Dmitriy_R
2002-01-09 13:56
2002.01.28
(IntToStr & StrToInt) Undeclared Identifier Почему?


3-90200
avodous
2001-12-24 00:56
2002.01.28
TIBQuery + TIBUpdateSQL