OnInitialLoad(), OnLoad()는 초기화를 수행하는 액션 함수로 가이드에 나온대로 유저 액션 맵에 등록하시면
해당 함수들은 한글 프로그램이 처음 시작될 때, 한글 프로그램에서 새로운 창이 열릴 때 호출이 됩니다.
BOOL OnInitialLoad(CHwpObject& rHwpObject)
{
return TRUE;
}
BOOL OnLoad(CHwpObject& rHwpObject)
{
CXHwpWindows xWindows;
CXHwpWindow xWindow;
CXHwpToolbarLayout xToolbarLayout;
xWindows.AttachDispatch(rHwpObject.get_XHwpWindows(), TRUE);
xWindow.AttachDispatch(xWindows.get_Active_XHwpWindow(), TRUE);
xToolbarLayout.AttachDispatch(xWindow.get_XHwpToolbarLayout(), TRUE);
xToolbarLayout.ChangeSerializePath(_T(USERACTION_SERIALIZE_PATH));
// 기존에 UserAction이 Hwp 에 로드 되어 Frame Registry 에 기록이 되었다면 UI 생성을 하지 않아도 된다.
if (!xToolbarLayout.IsNewSerializePath()) {
return TRUE;
}
CXHwpToolbar toolbar = xToolbarLayout.CreateToolbar(_T("사용자 정의"), 0);
if (toolbar) {
CXHwpToolbarButton toolbarbutton1 = xToolbarLayout.CreateToolbarButton(_T("툴바버튼"), _T(UUIDSTR_ON_USERACTION_TOOLBAR), 0x01 | 0x02);
toolbar.InsertToolbarButton(toolbarbutton1, -1);
}
CXHncToolBoxToolbar xToolBoxToolbar;
xToolBoxToolbar.AttachDispatch(xToolbarLayout.GetToolBoxToolBar());
if(xToolBoxToolbar) {
CXHncToolBoxTab xToolBoxTab;
CXHncToolBox xToolBox;
CXHncToolBoxLayout xToolBoxLayout;
xToolBoxTab.AttachDispatch(xToolBoxToolbar.InsertToolBoxTab(-1, _T(USERTOOLBOXTAB_UID), _T("추가 기능")));
xToolBox.AttachDispatch(xToolBoxTab.InsertToolBox(-1, _T(USERTOOLBOX_UID), _T("멀티미디어")));
xToolBoxLayout.AttachDispatch(xToolBox.GetLayout(0));
CXHncToolBoxGroup xToolBoxGroup;
xToolBoxGroup.AttachDispatch(xToolBoxLayout.InsertGroup(-1, _T(USERTOOLBOXGROUP_UID), HFTBDT_GROUP_LARGEICON, 1, 4));
LPDISPATCH pDispatch = xToolBoxToolbar.CreateToolBoxItemButtonEx(_T("툴박스버튼"), _T(UUIDSTR_ON_USERACTION_TOOLBOX), STDTB_BTN, 0x01 | 0x02);
xToolBoxGroup.InsertItem(-1, pDispatch);
pDispatch->Release();
}
return TRUE;
}
// 유저 액션 맵
BEGIN_USERACTION_MAP()
USERACTION_ENTRY(UUIDSTR_ON_INITIAL_LOAD, 0, OnInitialLoad, 0)
USERACTION_ENTRY(UUIDSTR_ON_LOAD, 0, OnLoad, 0)
// UserAction
USERACTION_ENTRY(UUIDSTR_ON_USERACTION_TOOLBAR, 64, OnUserAction1, 0)
USERACTION_ENTRY(UUIDSTR_ON_USERACTION_TOOLBOX, 64, OnUserAction1, 0)
END_USERACTION_MAP()
애드온 샘플을 첨부합니다.
해보시고 안되는 부분이 있으시면 언제든지 질문 남겨주세요. ![]()
HncUserAction.zip (1.2 MB)