mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
6.3 KiB
216 lines
6.3 KiB
// imganppg.cpp : Implementation of the CImgAnnotPropPage property page class.
|
|
|
|
#include "stdafx.h"
|
|
extern "C" {
|
|
#include <oidisp.h>
|
|
#include <oiadm.h>
|
|
#include <oifile.h>
|
|
#include <oierror.h>
|
|
}
|
|
#include <ocximage.h>
|
|
#include "imgedit.h"
|
|
#include "imganppg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char BASED_CODE THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
IMPLEMENT_DYNCREATE(CImgAnnotPropPage, COlePropertyPage)
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Message map
|
|
|
|
BEGIN_MESSAGE_MAP(CImgAnnotPropPage, COlePropertyPage)
|
|
//{{AFX_MSG_MAP(CImgAnnotPropPage)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Initialize class factory and guid
|
|
|
|
IMPLEMENT_OLECREATE_EX(CImgAnnotPropPage, "IMGEDIT.ImgAnnotPropPage.1",
|
|
0x6d940289, 0x9f11, 0x11ce, 0x83, 0xfd, 0x2, 0x60, 0x8c, 0x3e, 0xc0, 0x8a)
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CImgAnnotPropPage::CImgAnnotPropPageFactory::UpdateRegistry -
|
|
// Adds or removes system registry entries for CImgAnnotPropPage
|
|
|
|
BOOL CImgAnnotPropPage::CImgAnnotPropPageFactory::UpdateRegistry(BOOL bRegister)
|
|
{
|
|
if (bRegister)
|
|
return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
|
|
m_clsid, IDS_IMGANNOT_PPG);
|
|
else
|
|
return AfxOleUnregisterClass(m_clsid, NULL);
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CImgAnnotPropPage::CImgAnnotPropPage - Constructor
|
|
|
|
CImgAnnotPropPage::CImgAnnotPropPage() :
|
|
COlePropertyPage(IDD, IDS_IMGANNOT_PPG_CAPTION)
|
|
{
|
|
//{{AFX_DATA_INIT(CImgAnnotPropPage)
|
|
m_strDestImageControl = _T("");
|
|
m_nEnabled = FALSE;
|
|
m_bValue = -1;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CImgAnnotPropPage::DoDataExchange - Moves data between page and properties
|
|
|
|
void CImgAnnotPropPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
//{{AFX_DATA_MAP(CImgAnnotPropPage)
|
|
DDP_CBString(pDX, IDC_DESTIMAGECONTROL, m_strDestImageControl, _T("DestImageControl") );
|
|
DDX_CBString(pDX, IDC_DESTIMAGECONTROL, m_strDestImageControl);
|
|
DDV_MaxChars(pDX, m_strDestImageControl, 50);
|
|
DDP_Check(pDX, IDC_ENABLED, m_nEnabled, _T("Enabled") );
|
|
DDX_Check(pDX, IDC_ENABLED, m_nEnabled);
|
|
DDP_CBIndex(pDX, IDC_VALUE, m_bValue, _T("Value") );
|
|
DDX_CBIndex(pDX, IDC_VALUE, m_bValue);
|
|
//}}AFX_DATA_MAP
|
|
DDP_PostProcessing(pDX);
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CImgAnnotPropPage message handlers
|
|
|
|
BOOL CImgAnnotPropPage::OnInitDialog()
|
|
{
|
|
COlePropertyPage::OnInitDialog();
|
|
|
|
CString strBuffer;
|
|
int ControlCount,i;
|
|
LPCONTROLLIST lpControlList,lpControlIndex;
|
|
CComboBox* DestImageControl;
|
|
CComboBox* ComboBoxControl;
|
|
|
|
// get number of image/edit controls
|
|
ControlCount = GetImageEditControlCount();
|
|
if (ControlCount != 0)
|
|
{
|
|
// allocate space for control list
|
|
lpControlList = (LPCONTROLLIST) malloc(sizeof(CONTROLLIST) * ControlCount);
|
|
if (lpControlList == NULL)
|
|
return FALSE;
|
|
|
|
ControlCount = GetImageEditControlList(lpControlList);
|
|
|
|
// get list of controls
|
|
DestImageControl = (CComboBox *) GetDlgItem(IDC_DESTIMAGECONTROL);
|
|
if (DestImageControl != NULL)
|
|
{
|
|
for (i = 0, lpControlIndex = lpControlList; i < ControlCount; i++, lpControlIndex++)
|
|
{
|
|
// put all controls into list pasrt of combo box
|
|
DestImageControl->AddString(lpControlIndex->ControlName);
|
|
// put 1st string as current selection in edit part of combo box
|
|
if (i == 0)
|
|
DestImageControl->SetCurSel(0);
|
|
} // end for
|
|
}
|
|
|
|
// free up control list
|
|
free(lpControlList);
|
|
}
|
|
|
|
|
|
// Add string to DisplayScaleAlgorithm combo box
|
|
ComboBoxControl = (CComboBox *) GetDlgItem(IDC_VALUE);
|
|
strBuffer.LoadString(IDS_VALUE_FALSE);
|
|
ComboBoxControl->AddString(strBuffer);
|
|
strBuffer.LoadString(IDS_VALUE_TRUE);
|
|
ComboBoxControl->AddString(strBuffer);
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
|
|
int CImgAnnotPropPage::GetImageEditControlCount()
|
|
{
|
|
// TODO: Add extra initialization here
|
|
HWND hImageWnd;
|
|
HANDLE hImageControlMemoryMap;
|
|
LPIMAGECONTROL_MEMORY_MAP lpImageControlMemoryMap;
|
|
LPIMAGECONTROLINFO lpControlInfo;
|
|
DWORD ProcessId;
|
|
int i,count;
|
|
|
|
// open memory mapped file
|
|
hImageControlMemoryMap = OpenFileMapping(FILE_MAP_READ, FALSE, IMAGE_EDIT_OCX_MEMORY_MAP_STRING);
|
|
if (hImageControlMemoryMap == NULL)
|
|
return 0;
|
|
|
|
// get address space for memory mapped file
|
|
lpImageControlMemoryMap = (LPIMAGECONTROL_MEMORY_MAP) MapViewOfFile(hImageControlMemoryMap, FILE_MAP_READ, 0, 0, 0);
|
|
if (lpImageControlMemoryMap == NULL)
|
|
return 0;
|
|
|
|
// go thru memory mapped file to find count of Image/Edit controls
|
|
ProcessId = GetCurrentProcessId();
|
|
lpControlInfo = &lpImageControlMemoryMap->ControlInfo;
|
|
|
|
for (i = 0, count = 0, hImageWnd = NULL; i < lpImageControlMemoryMap->ControlCount; i++, lpControlInfo++)
|
|
{
|
|
// make sure process ids are the same
|
|
if (lpControlInfo->ProcessId == ProcessId)
|
|
count++;
|
|
} // end while
|
|
|
|
// unmap and get rid oy my memory map allocation
|
|
CloseHandle(hImageControlMemoryMap);
|
|
|
|
return count;
|
|
}
|
|
|
|
|
|
int CImgAnnotPropPage::GetImageEditControlList(LPCONTROLLIST lpControlList)
|
|
{
|
|
// TODO: Add extra initialization here
|
|
HWND hImageWnd;
|
|
HANDLE hImageControlMemoryMap;
|
|
LPIMAGECONTROL_MEMORY_MAP lpImageControlMemoryMap;
|
|
LPIMAGECONTROLINFO lpControlInfo;
|
|
DWORD ProcessId;
|
|
int i,count;
|
|
|
|
// open memory mapped file
|
|
hImageControlMemoryMap = OpenFileMapping(FILE_MAP_READ, FALSE, IMAGE_EDIT_OCX_MEMORY_MAP_STRING);
|
|
if (hImageControlMemoryMap == NULL)
|
|
return 0;
|
|
|
|
// get address space for memory mapped file
|
|
lpImageControlMemoryMap = (LPIMAGECONTROL_MEMORY_MAP) MapViewOfFile(hImageControlMemoryMap, FILE_MAP_READ, 0, 0, 0);
|
|
if (lpImageControlMemoryMap == NULL)
|
|
return 0;
|
|
|
|
// go thru memory mapped file to find count of Image/Edit controls
|
|
ProcessId = GetCurrentProcessId();
|
|
lpControlInfo = &lpImageControlMemoryMap->ControlInfo;
|
|
|
|
for (i = 0, count = 0, hImageWnd = NULL; i < lpImageControlMemoryMap->ControlCount; i++, lpControlInfo++)
|
|
{
|
|
// make sure process ids are the same
|
|
if (lpControlInfo->ProcessId == ProcessId)
|
|
{
|
|
_mbscpy((unsigned char *)lpControlList->ControlName, (const unsigned char *)lpControlInfo->ControlName);
|
|
count++;
|
|
lpControlList++;
|
|
}
|
|
} // end while
|
|
|
|
// unmap and get rid oy my memory map allocation
|
|
CloseHandle(hImageControlMemoryMap);
|
|
|
|
return count;
|
|
}
|