Addon (UserAction)으로 툴바 추가하기

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()

애드온 샘플을 첨부합니다.
해보시고 안되는 부분이 있으시면 언제든지 질문 남겨주세요. :grinning:
HncUserAction.zip (1.2 MB)

1개의 좋아요