아래는 코드구르에서 출처한 방법입니다..
먼저 active X 워크 스페이스를 만든 다음에, 리소스에서 다이알로그를 하나 추가한다... 그리고, 그 다이알로그->마우스 오른쪽 클릭->property
styles ->style : child , styles -> border : dialog frame , more Style -> visible ->틱 선택 되어지게 , more Style -> control ->틱 선택 되어지게 , extended style -> static edge ->틱 선택 되어지게 ,
이렇게 만들어 주고 나서, 그 다이알로그를 더불 클릭하여서 클래스를 하나 만든다.. 그리고, 이 클래스의 인스탄스를 ~Ctrl 클래스에서 생성 시켜준다... 예)위에 다이알로그로 더블 클릭 생성된 클래스 이름이 MyDialog 이라고 가정하고,
( #include "MyDialog.h" 를 하는것을 잊지 말자)
class ~~~Ctrl : public COleControl { ....
MyDialog* m_MyDialog ; ....
}
그리고, 클래스 위자드에서 WM_CREATE에 해당하는 함수인 다음 함수를 아래와 같이 고쳐준다..
int CDialogCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here
m_MyDialog = new MyDialog ; m_MyDialog->Create( 리소스에서 이 다이알로그의ID , //------예) IDD_MYDIALOG --------- this ); return 0; }
이러면 끝이다..실제 보면 다이알로그 베이스로 activeX가 그려진다..
http://www.codeguru.com/activex/dialogctrl.shtml
This article was contributed by Petr Stejskal.
I wanted to create a control which would behave as a dialog or formview (you can place controls here). There is a simple way to do it - to take advantage of ActiveX.
Create a new MFC ActiveX ControlWizard workspace (no need to special options). Insert a new dialog resource named IDC_MYDIALOG (check following: style - child, border - dialog frame, <more Style> visible , <more Style> control , <extended style> static edge )
Insert a new MFC class named CMyDialog (base class CDialog) Add CMyDialog m_MyDialog member to your CDialogCtrl header source (don't forget to add #include "MyDialog.h")
Using classwizard add a member function OnCreate (WM_CREATE) int CDialogCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleControl::OnCreate(lpCreateStruct) == -1) return -1;
m_MyDialog.Create(IDD_MYDIALOG, this); return 0; }
Modify the member function OnDraw (the dialog's size depends on the WIDTH and HEIGHT specified in the HTML file):
void CDialogCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { // TODO: Replace the following code with your own drawing code. // pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); // pdc->Ellipse(rcBounds);
m_MyDialog.MoveWindow(rcBounds, TRUE); }
To show the control in your browser use this simple HTML:
<html> <head> <title>DialogControl</title> </head> <body>
<center> <OBJECT ID="DialogControl" CLASSID="CLSID:insert here the GUID from ODL file" HEIGHT=300 WIDTH=300> </OBJECT> </center>
</body> </html>
Last updated: 17 November 1998 |