C++에서 텍스트 칼라설정(RGB칼러)과 줄간격 설정을 알고 싶습니다.

CDHwpAction actionFont = m_app.CreateAction(_T(“CharShape”));
CDHwpParameterSet actionFontSet = actionFont.CreateSet();
actionFont.GetDefault(actionFontSet);

actionFontSet.SetItem(_T(“TextColor”), m_app.RGBColor(153, 153, 153));
위에 RGB 칼러를 인식하려면 어떻게 선언을 해야하는지요…
actionFontSet.SetItem(_T(“LineSpacing”), CComVariant((long)(0)));
그리고 줄간격은 위처럼 하면 되는 건지요. 잘 안되는 것 같습니다.
줄간격을 최대한 줄여서, 표의 셀 높이를 문자사이즈에 맞도록 줄일려고 합니다. 글자가 5~7 사이즈입니다.
셀 높이도 이정도에 맞추려고 합니다. 어떻게 하면 되는건가요?

아, 칼러 설정은 아랫처럼 하니 됐습니다.
actionFontSet.SetItem(_T(“TextColor”), CComVariant(m_app.RGBColor(153, 153, 153)));

이제 줄간격만 알려주시면 됩니다. 아, 쉽지 않네요…

안녕하세요.

문단 모양의 줄 간격을 변경하는 방법은 아래와 같습니다.

// 문단 모양 액션 생성
CDHwpAction act = m_app.CreateAction(_T("ParagraphShape"));
CDHwpParameterSet set = act.CreateSet();

act.GetDefault(set);
// 줄 간격을 100%로 변경
set.SetItem(_T("LineSpacing"), COleVariant((long)100));
act.Execute(set);

감사합니다.

위 코드로, 줄간격 변경은 잘 됐습니다. 감사합니다.

그런데, 표 셀에서 줄간격이나 폰트 사이즈에 맞게, 글자를 쓸 때, 글자 쓰여진 셀 높이 자동 조절은 안될까요?

API를 응용해서 로직을 작성해야 하는데요.
제가 생각하기에는 가장 간단한 방법은 셀을 리사이즈하는 동작과 셀을 이동하는 동작을 반복 수행해서 맞추는 방법일 것 같습니다.

캐럿의 위치가 첫 번째 위치에 있다고 하면
셀의 크기를 줄이는 액션을 충분(?)하다고 생각할 정도로 반복 → 셀의 위치를 이동

// 셀의 크기를 줄이는 액션
m_app.Run(_T("TableResizeExUp")); 

// 셀의 위치를 아래로 이동하는 액션
m_app.Run(_T("TableLowerCell"));

해보시면서 최적의 코드로 완성시키면 될 것 같습니다. :sweat_smile:

감사합니다.

표가 52행 16열 인데요, 중간에 머지셀도 있습니다.
첫번째 열은 머지셀이구요, 첫번째 행 두번째 열부터 4번째 열까지도 머지셀입니다. 이 머지셀의 셀높이를
m_app.Run(_T(“TableResizeExUp”)); 로 바로 업이 되는건가요? 수작업으로 편집했을때, 이 셀을 블럭선택하고, shift키를 누르고 up키를 눌러야 이 셀의 높이가 글자 크기까지 줄어듭니다.
혹시, 아래명령도 해줘야 되는건지요. 해봐도 안됩니다.
m_app.Run(_T(“TableCellBlock”));
m_app.Run(_T(“TableCellBlockExtend”));
방법을 잘 모르겠습니다.

아, 이제야 해결했네요, 한 행에 다른 열들도 똑같은 폰트 사이즈여야, 그 행의 셀 높이가 바뀌네요.
몇번해보니 되네요. 위 소스, 감사합니다.

1개의 좋아요