// commycell.idl : commycell �� IDL Դ
//
// ���ļ����� MIDL ���ߴ�����
// �������Ϳ�(commycell.tlb)�ͷ��ʹ�����롣
import "oaidl.idl";
import "ocidl.idl";
//cpp_quote("STDAPI CreateGrid(REFIID riid,IGrid** ppIGrid);")
//cpp_quote("typedef UINT CellType;")
[
uuid(6FBB7466-8465-496C-8EDE-89BB5F511B63),
version(1.0),
helpstring("MyCell 1.0 ���Ϳ�")
]
library MyCell
{
importlib("stdole2.tlb");
//typedef enum ENotifyCodes
//{
// OCN_BASE =(0U- 0U),//NM_FIRST,
// OCN_LBUTTONDBLCLK =OCN_BASE+0x0203,//(OCN_BASE+WM_LBUTTONDBLCLK),
// OCN_RBUTTONDOWN =(OCN_BASE+0x0204/*WM_RBUTTONDOWN*/),
// OCN_LBUTTONDOWN =(OCN_BASE+0x0201/*WM_LBUTTONDOWN*/),
// OCN_MOUSEMOVE =(OCN_BASE+0x0200/*WM_MOUSEMOVE*/),
// OCN_LBUTTONUP =(OCN_BASE+0x0202/*WM_LBUTTONUP*/),
// OCN_RBUTTONUP =(OCN_BASE+0x0205/*WM_RBUTTONUP*/),
// OCN_KEYDOWN =(OCN_BASE+0x0100/*WM_KEYDOWN*/),
// OCN_CHAR =(OCN_BASE+0x0102/*WM_CHAR*/),
// OCN_GETCELLTEXT =(OCN_BASE+10),
// OCN_SETCELLTEXT =(OCN_BASE+13),
// OCN_DRAWCELL =(OCN_BASE+17),
// OCN_ROWSINSERTFRONT =(OCN_BASE+19),
// OCN_DELETEROWS =(OCN_BASE+20),
// OCN_COLSINSERTFRONT =(OCN_BASE+21),
// OCN_DELETECOLS =(OCN_BASE+22),
// OCN_SETROWS =(OCN_BASE+23),
// OCN_SETCOLS =(OCN_BASE+24),
// OCN_ROWSHEIGHTSCHANGE=(OCN_BASE+25),
// OCN_COLSWIDTHSCHANGE =(OCN_BASE+26),
// OCN_ACTIVECELLCHANGE =(OCN_BASE+27),
// OCN_SELECTION_DRAG_END=(OCN_BASE+28),
// OCN_ENDCELLEDIT =(0U-100U-76),//(OCN_BASE-76),/*LVN_ENDLABELEDIT*/
// OCN_DRAWHEADCELL =(OCN_BASE+29),
//}ENotifyCodes;
typedef enum EXlLineStyle
{
xlLineStyleNone= 1,
xlContinuous ,
xlDash ,
xlDashDot ,
xlDashDotDot ,
xlDot ,
xlDouble ,
xlSlantDashDot ,
}EXlLineStyle;
typedef enum EXlHAlign
{
xlHAlignCenter = 0, //����
xlHAlignCenterAcrossSelection, //�����
xlHAlignDistributed, //���˶���
xlHAlignFill, //���
xlHAlignGeneral, //����
xlHAlignJustify, //��ɢ����
xlHAlignLeft, //����������
xlHAlignRight //���ң�������
}EXlHAlign;
typedef enum EXlVAlign
{
xlVAlignBottom = 0, //����
xlVAlignCenter, //����
xlVAlignDistributed,//���˶���
xlVAlignJustify, //��ɢ����
xlVAlignTop //����
}EXlVAlign;
typedef enum EXlBordersIndex{
xlInsideHorizontal = 1<<0,
xlInsideVertical = 1<<1,
xlDiagonalDown = 1<<2,
xlDiagonalUp = 1<<3,
xlEdgeBottom = 1<<4,
xlEdgeLeft = 1<<5,
xlEdgeRight = 1<<6,
xlEdgeTop = 1<<7
} EXlBordersIndex;
typedef enum EFontSetMask{
EFSM_FONT_NAME=1<<0,
EFSM_FONT_SIZE=1<<1,
EFSM_FONT_COLOR=1<<2,
EFSM_FONT_ITALIC=1<<3,
EFSM_FONT_BOLD=1<<4,
EFSM_FONT_UNDERLINE=1<<5,
EFSM_FONT_STRIKEOUT=1<<6,
EFSM_FONT_ALL=0xFF,
}EFontSetMask;
typedef enum EAlignmentSetMask{
EASM_WRAPTEXT=1<<0,
EASM_HORIZONTAL=1<<1,
EASM_VERTICAL=1<<2,
}EAlignmentSetMask;
typedef enum ECellStorePosition
{
ESP_STYLE_CELL_OWN=0,//���ڵ�Ԫ��ķ��
ESP_STYLE_MERGE_OWN,//���ںϲ���Ԫ��ķ��
ESP_STYLE_ROW_OWN,//�����еķ��
ESP_STYLE_COL_OWN,//�����еķ��
ESP_STYLE_TABLE_OWN,//����Worksheet�ķ��
ESP_STYLE_DEFAULT,//����ȱʡ���
}ECellStorePosition;
typedef enum ESelectionMode
{
ESM_SINGLECELL,
ESM_SINGLELINE,
ESM_MULTILINE,
ESM_SINGLESELECTION,
ESM_MULTISELECTION,
}ESelectionMode;
typedef enum ECellType
{
ECT_NONE =0,
ECT_TEXT,
ECT_COMBOBOX,
ECT_CHECKBOX,
ECT_CALENDAR,//cellCalendar,
ECT_BUTTON,//cellButton,
ECT_HYPERLINK,//cellHyperLink,
ECT_UINT,//cellUINTEdit,
ECT_INT,//ECT_UINT,
ECT_UDOUBLE,//ECT_UDOUBLE,
ECT_DOUBLE,//ECT_DOUBLE,
ECT_LOGICAL,
ECT_DEGREE,//ECT_DEGREE,
ECT_COLOR,//ECT_COLOR,
ECT_ROWHEADER,
ECT_COLHEADER,
ECT_HEADERCORNER,
ECT_USER=200,
ECT_MAX=256
} ECellType;
typedef enum ESelectionState
{
EST_NOT_IN_SELECTION=0, //����ѡ����
EST_IN_SELECTION, //��ѡ����
EST_IN_PROJECTION_OF_SELECTION,//��ѡ��ͶӰ���У�Header Cell Used
EST_ACTIVECELL,
}ESelectionState;
typedef enum EGetCellValDistination
{
EGCVD_NORMAL,
EGCVD_RENDER,//���ڻ���
EGCVD_EDIT,//���ڱ༭
EGCVD_TOOLTIP,//����Toolitip
}EGetCellValDistination;
//typedef struct GetCellTextInfo
//{
// LPTSTR lpText;
// bool bRender;//�Ƿ����ڻ��ƻ�tooltip
// //GetCellTextInfo(LPTSTR buf,bool bRen):lpText
//}GetCellTextInfo;
typedef struct Cell
{
int row;
int col;
}Cell;
typedef struct CellRange
{
Cell leftTop;
Cell rightBottom;
}CellRange;
typedef struct HLS
{
BYTE L;
BYTE H;
BYTE S;
}HLS;
typedef struct ColorEntry
{
COLORREF color;
LPCTSTR lpszName;
HLS lhs;
}ColorEntry;
typedef struct GetCellTextInfo{
VARIANT* lpText;
EGetCellValDistination gcvDist;//�Ƿ����ڻ��ƻ�tooltip
}GetCellTextInfo;
typedef struct _NMHDR
{
/*OLE_HANDLE*/HWND hwndFrom;
UINT_PTR idFrom;
UINT code; // NM_ code
} _NMHDR;
typedef struct NM_SHEETVIEW {
_NMHDR hdr;
int row;
int col;
LPARAM lParam;
HRESULT hr;
BOOL bHandled;
} NM_SHEETVIEW;
typedef struct DrawCellInfo{
const CellRange* pMerge;
RECT rcCell;
//BYTE* pdata;
//int nDataLen;
const VARIANT* pdata;
EXlHAlign hAlign;
EXlVAlign vAlign;
void* pLogFont;
COLORREF clrFont;
COLORREF clrBkgnd;
ECellType cellType;
ESelectionState nSelState;
BYTE bWrapText;
//BYTE bActive;
//BYTE bSelected;
BYTE bMouseHover;
}DrawCellInfo;
[
object,
uuid(1f649aa0-a3e8-494d-a604-201324012e9b),
helpstring("ICellSymbol interface"),
pointer_default(unique)
]
interface ICellSymbol : IUnknown {
[helpstring("")]HRESULT Draw([in]HDC hDC, [in]int row,[in]int col,[in]const DrawCellInfo* pDCI);//VARIANT_BOOL bMerge,[in] RECT *rcCell,[in]BYTE* data,[in]int nDataLen,[in]EXlHAlign hAlign,[in]EXlVAlign vAlign);
//[helpstring("")]HRESULT SetMergeInfo([in]int leftCol,[in]int topRow,[in]int rightCol,[in]int bottomRow);
[helpstring("")]HRESULT OnThemeChanged([in]HWND hWnd);
};
[
object,
uuid(d6b900af-7142-4503-a1b3-0ebaf5639b8c),
helpstring("ICellEditor interface"),
pointer_default(unique)
]
interface ICellEditor : IUnknown {
[helpstring("")]HRESULT OnLButtonDblClick([in]int ptX,[in]int ptY,[in]Cell cell,[in]const VARIANT* pCellVal,[in]UINT flags);
[helpstring("")]HRESULT OnLButtonDown([in]int ptX,[in]int ptY,[in]Cell cell,[in]const VARIANT* pCellVal,[in]UINT flags,[in]VARIANT_BOOL* pbHandled);
[helpstring("")]HRESULT OnChar([in]Cell cell,[in]const VARIANT* pCellVal,[in]WPARAM wParam,[in]LPARAM lParam,[in]VARIANT_BOOL* pbHandled);
[helpstring("")]HRESULT OnImeComposition([in]Cell cell,[in]const VARIANT* pCellVal,[in]WPARAM wParam,[in]LPARAM lParam,[in]VARIANT_BOOL* pbHandled);
};
[
object,
uuid(3f9d2fae-c2dd-4159-a24a-912f720af677),
helpstring("IWorkbook interface"),
pointer_default(unique)
]
interface IGrid : IUnknown {
[helpstring("")]HRESULT Create([in]/*OLE_HANDLE*/HWND hWndParent, [in] RECT *rcPos, [in] BSTR szWindowName, [in] unsigned long dwStyle, [in] unsigned long dwExStyle, [in] unsigned long nID, [in] LPVOID lpCreateParam);
[helpstring("")]HRESULT GetHWnd([out,retval]HWND* pval);
};
};