지금 C++로 윈도 프로그래밍을 하려면 어떤 방식으로 하는 것이 가장 좋은 선택일까요?
알림
|
페이지 정보
작성일
2024.05.01 08:14
본문
Win32는 여전히 지원중이고, 당연히 없어지지는 않을 것 같습니다.
MFC는 뭔가 그냥 동작하는 수준인 것 같습니다.
C++로 그동안 많이 발전해서 MFC도 뭔가 비슷하게 바뀌면 좋았을텐데, 여전히 macro기반으로 별 변화는 없어보입니다. 그렇다고 win32를 바로 쓰려고 하니, 윈도 특유의 여러 타입과 함께 90년대로 시간 여행하는 느낌이 들기도 합니다.
뭔가 좋은 방법이 있을까요?
댓글 15
Tylor님의 댓글
윈도우 드라이버나 연산량이 많고 매우 빨라야 하는게 아니면 C#이 개발 기간이나 결과물에서 합리적일 수 있습니다.
UI 가 없고, 성능이 좀 나와야하는 결과물이라면 Rust 도 대안이 될 수 있습니다.
UI 가 없고, 성능이 좀 나와야하는 결과물이라면 Rust 도 대안이 될 수 있습니다.
에헤라디야님의 댓글
윈도우에서 GUI 개발에 C++은 그저 어렵고 복잡하기만 할 뿐입니다.
하지만 꼭! 반드시! 무조건! C++을 써야만 하는 상황이라면 MFC보다는 차라리 QT가 나을듯 합니다.
하지만 꼭! 반드시! 무조건! C++을 써야만 하는 상황이라면 MFC보다는 차라리 QT가 나을듯 합니다.
딸자랑마스터님의 댓글
GUI 구현에는 C++ 말고 다른 수를 찾으시고, 내부 구현에만 C++ 를 쓰는게 맞아보입니다.
openstep님의 댓글
에놀미타님의 댓글
openstep님의 댓글의 댓글
@에놀미타님에게 답글
예전에는 이런 UI 라이브러리도 팔고 그랬는데... 이제 C++는 Legacy가 되어가든 느낌이네요..
날씨는어때님의 댓글
https://philippegroarke.com/posts/2018/c _ui_solutions/
좀 오래된 글이긴 하지만...
그래도 실제 현장에서 다양하게 사용하려면 역시 QT 가 가장 좋은 선택지입니다.
QT6 부터는 윈도우에서 소스를 컴파일 하는 것도 상당히 쉬워졌습니다.
그래서 DLL 로 QT 라이브러리들을 로딩하면 상업용으로도 무료로 사용가능합니다.
좀 오래된 글이긴 하지만...
그래도 실제 현장에서 다양하게 사용하려면 역시 QT 가 가장 좋은 선택지입니다.
QT6 부터는 윈도우에서 소스를 컴파일 하는 것도 상당히 쉬워졌습니다.
그래서 DLL 로 QT 라이브러리들을 로딩하면 상업용으로도 무료로 사용가능합니다.
피로곰님의 댓글
조금 다른 이야기지만.. 저는 모두의 프린터, PDF를 비롯한 .. 대부분의 윈도 프로그램들은 MFC도 아닌 win32 api 를 랩핑하여 Go로;;; 만들고 있습니다? ;;;;
윈도 프로그래밍을 수십년째 하지만 요즘 환경에선 특별한 이유가 있는게 아니면 C#도 번거로운 경우가 많아서, 게다가 맥 사용자 비율도 많아지는 상황에 .. 시스템 종속적인 네이티브 gui 프로그래밍 보다는 그냥 웹 기반으로 .. 웹앱 형태로 가는게 어떤가 싶습니다.
윈도 네이티브 gui api 를 사용했을때 가져갈 수 있는 장점은.. 실행파일의 크기를 매우 적게 유지 가능하다? 정도겠네요 ..
물론 최근에는 MS Webview2 가 크로미움기반이라 .. 런타임만 설치되어 있다면 .. 10메가 언저리로도 구성 가능하지만 런타임이 없는 환경을 위해서 스태틱으로 포함시켜 버리면 일단 배포사이즈 100메가는 그냥 넘어가는거죠..
일렉트론을 쓴다 해도 일렉트론의 기본 배포사이즈가 130메가 가량이니 ..
그런 부분에 상관 없으시다면 그냥 웹기반 기술을 선택하시는게 옳다고 봅니다.
윈도 프로그래밍을 수십년째 하지만 요즘 환경에선 특별한 이유가 있는게 아니면 C#도 번거로운 경우가 많아서, 게다가 맥 사용자 비율도 많아지는 상황에 .. 시스템 종속적인 네이티브 gui 프로그래밍 보다는 그냥 웹 기반으로 .. 웹앱 형태로 가는게 어떤가 싶습니다.
윈도 네이티브 gui api 를 사용했을때 가져갈 수 있는 장점은.. 실행파일의 크기를 매우 적게 유지 가능하다? 정도겠네요 ..
물론 최근에는 MS Webview2 가 크로미움기반이라 .. 런타임만 설치되어 있다면 .. 10메가 언저리로도 구성 가능하지만 런타임이 없는 환경을 위해서 스태틱으로 포함시켜 버리면 일단 배포사이즈 100메가는 그냥 넘어가는거죠..
일렉트론을 쓴다 해도 일렉트론의 기본 배포사이즈가 130메가 가량이니 ..
그런 부분에 상관 없으시다면 그냥 웹기반 기술을 선택하시는게 옳다고 봅니다.
조알님의 댓글
저도 gui 프로그램은 기본적으로 QT 사용합니다. 맥, 리눅스, 윈도 다 쉽게 포팅이 가능하기도 하고요.
근데 피로곰님 말씀처럼 웹앱 형태도 좋은거 같아요.
근데 피로곰님 말씀처럼 웹앱 형태도 좋은거 같아요.
AmD5950x님의 댓글
Win32 API는 윈도우가 존재하는 한 없어질 수가 없습니다. 애초에 윈도우 만들면서 만들어진 API들인데요.
Win32 API에 있는 GDI/GDI+류의 UI 라이브러리는 WinUI라는 MAUI, WinUI3로 대체 되고 있습니다.
애초에 Win32 API에서 UI를 포함한 그래픽 관련 API가 그렇게 많은 부분을 차지 하고 있진 않습니다.
프로세스, 쓰레드, 이벤트, 힙메모리 등등의 API들이 훨씬 더 중요하고 많은 부분을 차지하고 있죠.
윈도우를 제작하면서 자기들도 쓸 목적으로 만들어진 OS API들이라 윈도우용 시스템 프로그래밍을 하려면 필수죠.
MFC의 경우 현재 사실상 버전업이 중단되면서 그래픽 관련 코드들이 레거시한 것들로 이뤄져있습니다.
어짜피 윈도우UI나 윈도우 그래픽API도 들어가면 그냥 게임 만들듯이 Pixel Draw하는 것들이라 D3D로 UI만들어서
WM_PAINT같은 이벤트가 발생할 때만 업데이트 해줘도 훨씬 예쁘고 빠르게 만들수 있어요.
MAUI나 이런것들도 전부 그런식으로 만들어져 있습니다.
Win32 API에 있는 GDI/GDI+류의 UI 라이브러리는 WinUI라는 MAUI, WinUI3로 대체 되고 있습니다.
애초에 Win32 API에서 UI를 포함한 그래픽 관련 API가 그렇게 많은 부분을 차지 하고 있진 않습니다.
프로세스, 쓰레드, 이벤트, 힙메모리 등등의 API들이 훨씬 더 중요하고 많은 부분을 차지하고 있죠.
윈도우를 제작하면서 자기들도 쓸 목적으로 만들어진 OS API들이라 윈도우용 시스템 프로그래밍을 하려면 필수죠.
MFC의 경우 현재 사실상 버전업이 중단되면서 그래픽 관련 코드들이 레거시한 것들로 이뤄져있습니다.
어짜피 윈도우UI나 윈도우 그래픽API도 들어가면 그냥 게임 만들듯이 Pixel Draw하는 것들이라 D3D로 UI만들어서
WM_PAINT같은 이벤트가 발생할 때만 업데이트 해줘도 훨씬 예쁘고 빠르게 만들수 있어요.
MAUI나 이런것들도 전부 그런식으로 만들어져 있습니다.
AmD5950x님의 댓글
멀티 플랫폼 UI만드실거면 MAUI가세요...
맥OS, iOS, Android, Windows 다 만드실 수 있습니다. C++도 되지만 사실상 C#기반이고..
Visual Studio Code, Visual Studio 2022, Visual Studio Mac에서 다 쓸수 있고
디버깅 완벽하고.. QT빼고는 이보다 좋은 UI API가 없다고 봅니다.
심지어 웹기반 웹앱에 비하면 반응속도도 감히 비할바가 못됩니다.
C/C++로 만들어진 DLL등도 사용할수 있고.. interop도 마치 lua script를 c코드에 붙이는 것처럼
쉽고 편리하게 되어있습니다.
MS가 xamarin 사들이고 나서 본격적으로 붙인 앱UI 프레임워크 입니다.
하지만 아시다시피 MS 회장이 언제 또 접을지 몰라서.. 이 인도 아저씨는 MS 애저 클라우드 빼곤
다 싫어하는 것 같아요.. 아마 XBOX도 접고 싶어서 안달 났을지도...
맥OS, iOS, Android, Windows 다 만드실 수 있습니다. C++도 되지만 사실상 C#기반이고..
Visual Studio Code, Visual Studio 2022, Visual Studio Mac에서 다 쓸수 있고
디버깅 완벽하고.. QT빼고는 이보다 좋은 UI API가 없다고 봅니다.
심지어 웹기반 웹앱에 비하면 반응속도도 감히 비할바가 못됩니다.
C/C++로 만들어진 DLL등도 사용할수 있고.. interop도 마치 lua script를 c코드에 붙이는 것처럼
쉽고 편리하게 되어있습니다.
MS가 xamarin 사들이고 나서 본격적으로 붙인 앱UI 프레임워크 입니다.
하지만 아시다시피 MS 회장이 언제 또 접을지 몰라서.. 이 인도 아저씨는 MS 애저 클라우드 빼곤
다 싫어하는 것 같아요.. 아마 XBOX도 접고 싶어서 안달 났을지도...
최군님의 댓글