음.. ActiveX에 CScrollView를 붙이면 디자인한 크기대로 되지 않고 자꾸 스크롤바가 생기기 때문에 귀찮아진다.
그래서 그냥 CDialog 를 붙이는 방법을 생각해 봤다.
1. ActiveX에서 다이얼로그를 만들고 그걸 더블클릭해서 CDialog Based 클래스를 하나 생성한다.
2. ActiveX의 Ctrl 클래스에 위에서 만든 클래스형의 멤버변수를 하나 선언한다. (예 : CMainFormDlg m_MainFormDlg; )
3. 생성자가 아닌, 반드시 OnCreate(WM_CREATE) 이벤트 핸들러에 다음과 같이 한다.
int CaxPreviewNoteCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 여기에 특수화된 작성 코드를 추가합니다.
m_MainFormDlg.Create(IDD_DIALOG1);
m_MainFormDlg.SetParent(this);
m_MainFormDlg.SetOwner(this);
m_MainFormDlg.ShowWindow(SW_SHOW);
return 0;
}
4. 다음 WM_SIZE 이벤트 핸들러에 다음과 같이 한다.
void CaxPreviewNoteCtrl::OnSize(UINT nType, int cx, int cy)
{
COleControl::OnSize(nType, cx, cy);
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
m_MainFormDlg.MoveWindow(0, 0, cx, cy, FALSE);
}
이렇게 2군데 메시지만 처리해주면 바로 붙어버린다.
'프로그래밍 > VC++' 카테고리의 다른 글
ActiveX가 초기화되었다는 이벤트 발생 방법 (0) | 2007.05.17 |
---|---|
ActiveX에서 만든 다이얼로그에 ActiveX 붙이기 (0) | 2007.04.25 |
Free C/C++ 라이브러리 (0) | 2007.04.23 |
이미지프로세싱 관련 라이브러리들 (0) | 2007.04.23 |
스크롤 뷰에 이미지파일을 올리고 스크롤 하는 예제 (0) | 2007.04.21 |