MDM |
Отправлено: 01.07.2004, 11:17 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Как посадить VCL-форму на API-шный диалог? |
|
Father |
Отправлено: 01.07.2004, 11:53 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 17
|
Ты как это себе представляешь? |
|
MDM |
Отправлено: 01.07.2004, 13:32 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
QUOTE (Father @ 01/07/2004, 12:55) | Ты как это себе представляешь? |
Я так:
//форма.h
extern HWND hDialog;
class TPageForm1 : public TForm
{
...
protected:
void __fastcall CreateParams(TCreateParams& Params);
public: // User declarations
__fastcall TPageForm1(TComponent* Owner);
};
//форма.cpp
void __fastcall TPageForm1::CreateParams(TCreateParams& Params)
{
TForm::CreateParams(Params);
Params.Style = WS_CHILD | WS_CLIPSIBLINGS;
Params.WndParent = hDialog;
Params.X = 0;
Params.Y = 0;
RECT Rect;
::GetClientRect(hDialog, &Rect);
Params.Width = Rect.right — Rect.left;
Params.Height = Rect.bottom — Rect.top;
}
//процедура диалога.cpp
HWND hDialog;
...
BOOL CALLBACK PageDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
...
switch (uMessage)
{
case WM_INITDIALOG:
hDialog = hDlg;
PageForm1 = new TPageForm1(Application);
PageForm1->Show();
break;
...
case WM_DESTROY:
delete PageForm1;
break;
...
default:
return FALSE;
}
return TRUE;
}
но неуверен что это правильно (работает нормально).
PS:
И почему Ты меня спрашиваешь? Я спросил эху — значит не знаю. |
|