[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

[Managed C++] Obsluga okna ladowanego z DLL(MFC

Mateusz Bronk

6/16/2007 1:51:00 AM

Witam,

Mam nastepuj?cy problem:
Mam plugin w pliku DLL (DLLka pisana z u?yciem MFC). Udostepnia on miedzy
innymi funkcje LoadDialog() która zwraca mi uchwyt (HWND) do formatki/okienka
z konfiguracj? owego plug'a.

W uproszczeniu:
HWND LoadDialog() {
CMyDialog* pNewDialog = new CMyDialog(); /*tworzenie klasy okna*/
pNewDialog->Create (MAKEINTRESOURCE(IDD_ID_ZASOBU), NULL))
/*ladowanie okna z zasobow*/
return pNewDialog->GetSafeHwnd();
}

Aplikacja 'glowna' dostaje ten HWND, konwertuje go sobie na CWnd* poprzez:
FromHandle( HWND_PLUGINU )
Nastepnie takie 'co?' jest wrzucane na zak3adke TabControla (ustawiam Parent'a
itp.) i wyswietlene: /*ShowWindow(SW_SHOW)*/

Tak by3o kiedy oba modu3y by3y pisane w MFC. Problem polega na tym, ?e pluginy
maj? bya cze?ci? znacznie wiekszej aplikacji macierzystej, która jest napisana
w .NET (Managed C++). Nie potrafie sobie poradzia w3a?nie z przej?ciem z HWND
na co? u?ywalnego z poziomu Managed C++.

Próbowa3em podobnie:
Mój HWND zrzutowa3em sobie na IntPtr i usi3owa3em tak?e wywo3aa
FromHandle()... ale wygl?da na to ?e nie tedy droga (ew. robie co? ?le -
je?eli chodzi o .NET, to jestem kompletnie zielony). Znalazlem co prawda kilka
poradnikow w google, ale wszystkie dotycz? mieszania MFC z .NETem w jednym pliku.
Czy móg3by mi kto? poradzia (kawa3ek kodu?) jak w mo?liwie bezbolesny sposób
przej?a z HWND dialogu na System::Windows::Forms::TabPage^ (tzn. zapewne
samego tab'a bede musia3 stworzya przez gcnew, ale jak dodaa na niego mój
dialog w .NET?). Czy jest to w ogóle mo?liwe (tzn. takie konwersje MFC<->.NET
zahaczaj?c jeszcze po drodze o WinAPI)?

Chodzi mi mniej wiecej o tak? ?cie?ke konwersji:
CDialog*->CWnd*->HWND--(interfejs_plug<->app)-->Control^->TabPage^

W skrócie: jak obs3u?ya w .NET okno dialogowe maj?c tylko jego
'niskopoziomowy' uchwyt? (tzn. jak je zadokowaa w .NETowym tabcontrolu i
pokazaa?) W gre wchodzi3oby nawet mieszanie kodu 'managed' i 'unmanaged', choa
musze przyznaa, ?e raczej kiepsko mi to wychodzi). Pisze w VS2005...

Z góry dziekuje za pomoc,
M.Bronk

--
Wys3ano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta....