質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

5回答

7162閲覧

実践的なWinAPIでつくるUI

Weapon

総合スコア106

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/03/20 16:15

前提・実現したいこと

WinAPIの基礎について参考書で見てきましたがVisualStudioのプロパティやPhotoshopのパレットなど複数のウィンドウ(子ウィンドウというんでしょうか?)を作成、扱うための実践的なコーディングはどのようなところを参考にすればいいのでしょうか?実際のコードを見ることになりますかね?

補足情報(FW/ツールのバージョンなど)

開発環境
VisualStudio 2017 Community

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

Win32++というヘッダファイルのみのフレームワークライブラリがあります。
豊富なサンプルがあるので、これを使えばドッキングウィンドウなども作れますよ。

ダウンロードは以下からできます。

Win32++

ドキュメントは英語ですけど、サンプルがあるので中級程度と考えてもらえればいいかと。
メソッド名などはMFCのそれとほぼ同じになっています。
Visual Studioのソリューションファイルも同梱されているのでサンプルはすぐに試すことができます。

私は、実際の製品版ソフトに使っています。

投稿2018/03/22 09:04

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VC++でやりたいのであれば、MFC(Microsoft Foundation Classライブラリ)を使うという手もあります。

新しいプロジェクトの作成、でVisual C++のMFCアプリケーションが選択可能であれば、インストールされていると思います(VS 2017だとMFCは標準でインストールされないらしいです)。

MFCを使った開発についてはまだネット上に情報がたくさんありますので、(多少古い情報だと思いますが)参考になると思います。MFCは大ざっぱに言うとWin32APIのよく使う機能をクラスライブラリ化したものですが、完全にWin32APIをカバーしているわけではないので、場合によってはWin32APIを直接使用する必要があったりして、質問者さんが学ばれてきたAPIの知識も生かせると思います。

投稿2018/03/21 01:59

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

VSに関して言えばUIは.NET Frameworkで作られていてプロパティの部分は.NETにそういうコントロールがあるので簡単に作れます。(VS用に作ったものを標準に加えた、というほうが正しいかもしれませんが)
これをWinAPIだけで作るとなるとListViewをうまく使うか完全に自作することになり結構大変だと思います。

Photoshopは知りませんが息の長いアプリですし独自のGUIが多いですから自前で作ってるんじゃないかと思います。

Windowsのウィンドウシステムは.NETやUWPに移行しようとしているのでWinAPIは下回りの扱いでかなり前時代的なまま止まっており、自動レイアウトシステムなどがありません。
実践的なコーディングはウィンドウのリサイズ(WM_SIZE)が発生したら子ウィンドウをガシガシと自前でレイアウトしていくか、自前でレイアウトシステムを作るか、外部のものを使うことになります。
自前で作ると1つ1つは簡単ですが結構手間がかかります。

ウィンドウのレイアウトに関して詳しくないのなら、
0. C#などでWinFormを使ったアプリを作ってみる
0. WinFormのままレイアウトの計算を自前でやってみる
0. WinAPIで同じレイアウトを作る

とやってみると結構良い勉強になると思います。

マルチドキュメントのことを言われているのであればMDIで調べるといいと思います。

投稿2018/03/20 17:04

toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Weapon

2018/03/21 12:50

できる限りネイティブにGUIを作りたいと思っているのでListViewなど参考にしてみます。 .NETはできるところまでは使いたくないと考えています。WinFormで勉強してみたいと思いますがレイアウトの計算を自前でやってみるというのはどういうことなのでしょうか? MDIという言葉も出てきましたが複数のスクロールバーが一つの画面に出ていたりするものは枠無しのウィンドウを複数並べてあるものなのでしょうか COMの知識も必要になってくるのですかね?
toki_td

2018/03/21 14:30

> レイアウトの計算を自前でやってみるというのはどういうことなのでしょうか? レイアウトは基本的にResizeイベントが発生したらそのサイズに合わせてこのコントロールは左上から何pxで、こっちのコントロールはサイズが親の半分で位置が、、、とかひたすら記述していく作業です。 .NETだとTableLayoutPanelとかSplitContainerとか色々なコントロールがある程度勝手に子ウィンドウを移動したりしてくれますがWinAPIではそういうことは一切やってくれません。 >複数のスクロールバーが一つの画面に出ていたりするものは枠無しのウィンドウを複数並べてあるものなのでしょうか VSのソースコードを表示するような部分のことですか?1つのソースコードを表示する部分が1つのコントロールになっていてそれをうまくレイアウトしているんだと思います。 >COMの知識も必要になってくるのですかね? この話に限っては特に必要ありません。 まぁ、COMはWindowsの根幹となる機能の1つなのでWinAPIでアプリを作っていたら何かしらで使う必要が出てくるでしょうけど。
guest

0

ちょっと具体的なイメージが湧かないのですが、ドッキングウィンドウのことでしょうか?
マイクロソフトも実践的(実用的)なアプリを作るためのヒントを提供してくれていますので、まずは目を通してみると良いでしょう。

MFCをいじったことがないのならこちらから。

Windows APIの詳細な説明が欲しいならこちらも。

投稿2018/03/21 12:00

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

実践的なコーディングはどのようなところを参考にすればいいのでしょうか?実際のコードを見ることになりますかね?

「Windows API」で検索すると多数の解説ページがでてきますが、それらにご希望の情報がないとすると、実際のコードを探すしか無いと思います。GUIフレームワークが独自に用意しているようなGUI部品の作り方の解説書や解説サイトがそうそうあるとは思えません。需要が少なくて見る人があまりいないでしょうから。

ソースは、Qt等の目的のGUI部品をサポートしているGUI開発用フレームワークには存在していると思います。
Qtはマルチプラットフォームですので、ある程度抽象化されている筈ですから読むのに苦労するかも知れませんが、ソースは公開されています。
Windows専用のそのようなツールでソースが公開されているものがあればよいのですが、.NETもソース非公開ですね。Borland C++Builderもソース非公開です。Windows専用のGUI開発ツールでソース公開されているものの心当たりは私にはないです。

投稿2018/03/21 02:18

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問