Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-90406
vov1
2001-11-24 10:59
2002.01.28
ToolBar


3-90218
Алексей1
2001-12-21 19:17
2002.01.28
DBLookupComboBox


7-90397
Aelter
2001-10-14 14:31
2002.01.28
Пользовательские настройки шрифтов


1-90289
StelZ
2002-01-09 21:13
2002.01.28
Перетаскивание окна (формы)


1-90250
raiv
2002-01-09 15:02
2002.01.28
Где можно скачать TeeChart Pro VCL для





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский