GUI 프로그래밍을 할 때 창을 자신만의 테마로 만드는 방법이 궁금합니다.

HDNua의 이미지

프로그램 만들기 좋아하는 대학생입니다.
질문 있습니다.

Windows 7 운영체제를 사용중인데 Windows 8의 테마가 아주 멋져서,
제 GUI 프로그램도 이런 테마를 갖게 하고 싶습니다.
(첨부한 이미지는 다른 커뮤니티의 개발자가 만든 피아노 프로그램입니다.)

iTunes와 같은 여러 프로그램도
Visual Studio가 기본적으로 제공하는 테마가 아닌,
자신만의 테마를 만들어서 적용하기도 하는 모양인데요.

검색 창에 Windows 7 테마, WPF Style Windows 7 Windows 8 등으로
여러 번 검색해봤지만 원하는 결과를 찾기 힘들었습니다.

저는 C# 프로그래밍 언어를 이용하여 Windows Form을 다루는 데 능숙합니다.
Java의 경우도 GUI 프로그래밍을 공부할 생각인데, Eclipse IDE를 사용합니다.

1. 자신만의 창 테마를 제 프로그램에 적용하려면 어떤 것을 배워야 하나요?
1.1) Visual Studio에서의 방법은?
1.2) Java에서의 적용 방법은?
1.3) 지금 하려는 행위를 표현하는 키워드는?
2. Windows 7에서 Windows 8 테마로 변경하는 편리한 방법이 있습니까?
3. 아직 Windows Form에 더 익숙한데, WPF로 갈아타는 게 좋을까요?

읽어주셔서 감사합니다.

-----

이 글은 다른 커뮤니티에 올린 글을, 더 많은 분들에게 여쭤보고 싶어 복사한 것입니다.

File attachments: 
첨부파일 크기
Image icon Cap 2015-05-31 17-06-08-719.jpg21.49 KB
klyx의 이미지

C#에서는 어떤지 모르겠는데, 기본은 해당 영역을 그리는 이벤트에서 해당 영역을 직접 그리는 겁니다.
또는 타이틀바같은 비클라이언트 영역을 다 없애버리고 클라이언트 영역에서 자체적으로 타이틀바나 윈도우 프레임을 전부 구현할수도 있고요.

HDNua의 이미지

혹시 Java에서라면 이에 대한 적당한 예제나 사이트, 또는 검색할 만한 키워드가 있을지요?

저는 이렇게 생각했습니다.

klyx의 이미지

자바는 잘 모르지만 일단 native API(winapi)를 사용하지 않을 예정이라면 비클라이언트영역을 전부 없애고 클라이언트 영역안에서 구현하는 쪽이 편할 것입니다.
이식성도 더 높을거고요.

java로 frameless window 라던가 borderless window 구현하는 법을 찾아보시면 될듯하네요.
그리고 나서 아무것도 없는 창에 직접 타이틀바도 만들고 리사이즈 영역도 만들고 하면됩니다.
이걸 구현하는게 막연하게 느껴지시는 거라면, 타이틀바 만드는거 별거 아닙니다. 타이틀바 라벨 넣고, 닫기 버튼같은거 배치해주고, 배경 원하는대로 그려주고 하면되는 거지요.
리사이즈 영역(윈도우 프레임)은 그냥 마우스 올리면 커서 모양바뀌게 하고, 드래그하면 드래그한만큼 창크기 바꿔주고...
그냥 일반적인 GUI프로그래밍과 똑같이 하면 됩니다.

HDNua의 이미지

답변 감사합니다. 찾아볼게요.

저는 이렇게 생각했습니다.

익명 사용자의 이미지

Visual Styles 계열의 API를 살펴 보시기 바랍니다.
실제로 한컴 오피스 같은 프로그램들이 Visual Styles API를 이용해서 Owner Drawing하는 방식으로
테마 변경을 지원하는 것으로 알고 있습니다.

https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb773187(v=vs.85).aspx

HDNua의 이미지

소중한 답변 감사합니다. 찾아보겠습니다.

저는 이렇게 생각했습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.