|
장성호 님이 쓰신 글 :
: Window Application은 대부분 Parent를 가지고 있습니다.
:
: 보통 프로그램에 Main윈도우는 Parent가 Desktop이 되죠
: Parent가 Desktop인 윈도우는 작업표시줄에 나타나구요
:
: 다시 말해 어떤 윈도우든 (Window Handle을 가진 모든 Control)은 Parnet 설정을 바꿈으로써
: 어디에든 나타낼수 있습니다.
:
: 예를들어 메모장(Notepad.exe)을 현재 프로그램의 Panel에 올리고 싶다면
:
: [과정]
: 1. 대상프로그램의 핸들을 찾습니다.
: HWND hWnd = FindWindow("","제목없음 - 메모장");
:
: 2. 찾았으면 SetParent로 메모장의 Parent를 Panel1->Handle로 변경해 줍니다.
: SetParent(hWnd , Panel1->Handle) ;
:
:
: [샘플]
: 아래와 같이하면 바탕화면이 내 폼안에 들어와 버립니다.
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: HWND hWnd = FindWindow("Progman", NULL);
: HWND hWndLView = FindWindowEx(hWnd, 0, "SHELLDLL_DefView", NULL);
: HWND hWndParent = GetParent(hWndLView);// Windows.GetParent(H); 원래 original Parent
: ::SetParent(hWndParent, this->Handle);
: }
: //---------------------------------------------------------------------------
:
: 이는 탐색기 프로그램인 explore.exe를 통째로 내 프로그램에 넣는것이 아니라
: 탐색기에서 바탕화면만 내 프로그램에 넣는것입니다.
:
: 위 과정을 반복하면 여러개 프로그램을 내 프로그램에 넣는것도 문제 없겠죠
:
: 그럼
:
: 무한질주 님이 쓰신 글 :
: : 제가 ..
: :
: : 프로그램안에서 다른 프로그램 보여주려고 하고 있습니다.
: :
: : 버튼을 클릭하면 폼안에 특정프로그램이 Child윈도우로 생성이 되는 것이지요..
: :
: : 또 버튼을 클릭하면 또 생기고... 이런식으로 같은 프로그램으로 여러개의 Child윈도우로 생성시켜보려고 합니다.
: :
: : 어떤식으로 해야할까요?
|