최소화,최대화,닫기 버튼 없애기

개발 환경은 MFC(Visual C++)입니다.
한글 오토메이션입니다.
자꾸 질문 올려서 죄송합니다.

저는 MDI환경에 한글 오피스를 붙여서 사용하고 있습니다.
최소화, 최대화, 닫기 버튼을 눌렀을 때, 동작은 부모 윈도우(OS윈도우)의 영향을 받는 구현인 것 같습니다. 그래서, MDI환경일 때, 처리하면 정상적으로 동작하지 않고 그 뒤부터 화면 갱신도 되지 않습니다.
아예 세개 버튼을 지울 수는 없나요?
저도 매뉴얼을 뒤져보았지만 찾지는 못 했습니다.

참고로 Word에서는 MDI에 붙으면 최소화와 최대화 버튼은 사라지면서 붙습니다.

1개의 좋아요

20231114_175129
최대화 후 화면 갱신 안 되는 화면도 공유합니다.

1개의 좋아요

안녕하세요 ,
window 개체에서 WindowStyle api를 이용하시면됩니다.
아래와같이 지정하면 타이틀바 숨김 처리가능합니다.

xWindow.put_WindowStyle(0xFFFFFFFE);
1개의 좋아요

자꾸 귀찮게 해서 죄송합니다.

해당 함수에서 죽어 버립니다. 다른 파라미터를 넣어봤는데 파라미터의 영향은 아닌 거 같습니다.

1개의 좋아요

한글오피스 2018이고 최신 버전으로 패치했습니다.
10.0.0.13462

1개의 좋아요

안녕하세요,
저는 정상동작하고 InvokeHelper의 값도 동일한것으로 확인했습니다.
음 혹시 오토메이션을 재등록하고 테스트 해보실수있을까요?
관리자 권한으로 한글을 hwp.exe -regserver 실행해주면 오토메이션 재등록 가능합니다.
기존에 해당 API가 없는 구버전의 오토메이션 등록이 되어있으셨던거 같아서 해당 부분도 영향이 있지 않을까 의심해봅니다.
감사합니다.

1개의 좋아요

답글 주셔서 감사합니다.

명령프롬프트을 관리자 권한으로 실행해서 "hwp.exe -regserver"을 했더니
한글 오피스가 빈 창으로 떴습니다. 오토메이션 재등록이 된 것이 맞나요?
저는 ocx등록인 regsvr32 hwpCtrl.ocx처럼 "등록 성공"같은 메시지를 기대했는데,
한글 오피스 창만 뜹니다.
물론 그후에도 해당 함수를 처리하면 계속 오류 메시지는 뜹니다.

구버전의 오토메이션인지는 어떻게 확인할 수 있나요?

1개의 좋아요

네 한글 실행이 된다면 해당 한글이 오토메이션으로 등록된것입니다.
기존 2018 6000번대 버전을 쓰셨다고 글을 올린게 생각나서 재등록을 해보시라한겁니다.
기존 6천번대에는 해당 api가 없습니다.
아니면 예외 메세지를 보니 0xFFFFFFFE 위치를 읽는 동안 액새스 위반이라고 적혀있는데 0xFFFFFFFE 가 long 타입 값이 아니라 포인터 주소로 인식된게 아닐까요?
위의경우가 아니라면 저도 어떠한 이유에서 액세스 위반이 발생하는지 알수없을것 같습니다 ㅠ

1개의 좋아요

사내에서 재현이 안 되기 때문에 담당자님께서 곤란한 것은 예상이 됩니다.

이 문제를 해결하기 위해서 제가 어떤 대응을 해드리면 될까요?
참고로 독립 프로그램을 만들어서 확인해도 동일하게 문제가 발생합니다.

예전 Clear함수 문제처럼 PC 사양을 타는 것은 아닐까요?
한글 2022으로도 확인해보았고, 최신 버전인 12.0.0.3437입니다.

1개의 좋아요

안녕하세요,
디벨로퍼상으로는 어떠한 대응이 더 어려울것 같습니다ㅠ
저는 다른 언어로 테스트 해봐도 정상적으로 해당 API 호출이 가능한대요 …
개발용 pc가 아닌 일반 pc로 테스트해봐도 정상 동작하고 있습니다.
제가 자바스크립트로 테스트한 코드 아래 같이 첨부드립니다.
뭔가 안된다면 환경문제나 설치되어있는 다른 프로그램이 영향을 끼칠수도 있을것 같은데 현재로선 도움을 드릴 방법이 없을것 같습니다. 죄송합니다 ㅠ

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Javascript HwpAutomation 테스트</title>
    <script language="javascript">
        var myHwpObj = null;
		function CreateHwpObj() {
            if (myHwpObj == null) {
                myHwpObj = new ActiveXObject("HWPFrame.HwpObject.2");
				myHwpObj.XHwpWindows.Active_XHwpWindow.Visible = 1;
				myHwpObj.XHwpWindows.Active_XHwpWindow.WindowStyle = 0xFFFFFFFE;		
            }
        }
		
    </script>
</head>
<body>
		<p>
            한글생성: <button onclick="CreateHwpObj();">생성</button>
		</p>
	</div>
</body>
</html>
2개의 좋아요

일단 지금 당장 급하게 처리해야 하는 건은 아니지만, 조금 더 확인해주셨으면 좋겠습니다.
저희 회사에서 사양이 좋은 PC에서도 동일하게 죽는 것을 확인했고, 한글과 컴퓨터 안에서도 충분히 발견할 수 있을 것으로 판단합니다.
저희 프로그램에서만 확인하지 않았고, 독립 프로그램에서 그리고 MDI가 아닌 환경에서도 확인하였습니다.

몇 주 후에 다시 글 남기겠습니다. 죄송하고 감사드립니다.

2개의 좋아요

해당 시나리오를 회피할 수 있는 방법을 찾았기 때문에 저를 위해서 굳이 재현이나 수정하실 필요는 없으실 것 같습니다.
어떻게 해결되었는지는 언급하지 않습니다.

다른 분이 다시 문제를 언급하기 전까지는 신경 쓰지 않으셔도 될 같습니다.

2개의 좋아요

안녕하세요 ^^
어떻게 회피를 하셨을까요 ?
회피를 하시는 행동에서 역추적 하면 어떠한 부분이 이슈가 발생하는지 검토해볼수있을것 같습니다.
알려주시면 감사하겠습니다~!

1개의 좋아요

타이틀바(제목 표시줄)이 아예 화면에 보이지 않도록 하였습니다. 그렇게 하니까 "최소화/최대화/닫기 버튼"도 누를 일이 없어집니다.
그 후에 발견한 문제인데, 그렇게 하고 나니까, 프로그램에 붙어있는 한글 오피스의 버전을 확인할 방법이 없기는 하더군요. PC에 여러 버전의 한글 오피스를 사용하는 경우에는 어떤 버전의 OLE을 사용해서 띄운 건지 알 수가 없습니다.

1개의 좋아요

회피 방법 공유해주셔서 감사합니다 ^^

버전의 경우는 HwpObject에 Version이라는 속성값이 있습니다.
해당 값 이용해주시면 어떤 버전인지 확인가능합니다~
13 : 2024
12 : 2022
11 : 2020
10 : 2018

1개의 좋아요

버전 확인할 방법이 없다는 것은 API가 없다는 의미가 아니고, 프로그램 자체에서 추가 작업없이 확인할 방법이 없다는 의미였습니다.
제목표시줄이 있으면 "?"을 클릭해서 바로 버전 정보를 확인할 수 있기 때문입니다.

20231127_134752
답글 주실 필요는 없습니다.

1개의 좋아요

예전에 한글 오피스의 "제목표시줄"과 "최소화/최대화/닫기"버튼을 안 보이게 위치 조정해서 문제를 해결했다고 말씀을 드렸습니다.
하지만 한글 오피스 버전마다 "제목표시줄"의 높이가 달라서 "한글 오피스2022"를 기준으로 위치 조정을 하고 "한글 오피스2018"을 설치하면 "메뉴"부분이 가려지는 문제가 있었습니다.
"한글 오피스 이후 버전"에서 다시 "제목 표시줄"의 높이가 줄어들지 않는다는 보장을 할 수가 없으므로 "최소화/최대화/닫기"버튼을 없애는 함수(xWindow.put_WindowStyle(0xFFFFFFFE);)를 다시 확인해주셔야 할 것 같습니다.

제목표시줄의 높이가 버전마다 달라지는 내용에 대한 이전 글도 같이 언급합니다.

감사합니다.

1개의 좋아요

안녕하세요,
해당 API는 내부 프로젝트를 위해 추가된 API 입니다.
정식으로 테스트되고 배포된 API가 아니기 때문에 정상 동작에 대해선 보장이 어려울것 같습니다.
제가 테스트시에서는 C++ 및 C# API에서 모두 정상적으로 동작하고 있는대요.
한글 2018 이후 버전에서 모두 테스트 해보았는데 저희 환경에서는 정상적으로 Window 인터페이스에 WindowStyle을 0xFFFFFFFE로 줄때 타이틀바 영역을 숨겨주게 됩니다.

시원하게 도움을 드리지 못해 죄송합니다 ㅠ
감사합니다.

1개의 좋아요