Microsoft Foundation Classライブラリ専用スレです。
■MFC相談室 mfc21d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1250919279/l50
■MFC リファレンス■
http://msdn.microsoft.com/ja-jp/library/d06h2x6e(v=VS.100).aspx
探検
MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2016/09/21(水) 00:20:48.44ID:OfO+mYkd589デフォルトの名無しさん
2020/09/11(金) 16:46:49.13ID:TREPbbxK >>585
>C++とWin32APIを理解してたらそもそも勉強の必要すら無い
俺はVS2019が新規作成で生成した複雑なプログラム(VS2019はHello worldを生成しない。いきなり複雑なものを生成する)を見て途方にくれたがなー
何から始めればいいのか全く理解できない
>C++とWin32APIを理解してたらそもそも勉強の必要すら無い
俺はVS2019が新規作成で生成した複雑なプログラム(VS2019はHello worldを生成しない。いきなり複雑なものを生成する)を見て途方にくれたがなー
何から始めればいいのか全く理解できない
590デフォルトの名無しさん
2020/09/11(金) 17:13:09.59ID:GJKjt1p6 >>588
作り方がこのスレッドにも出ていたぞ。
作り方がこのスレッドにも出ていたぞ。
591デフォルトの名無しさん
2020/09/11(金) 17:14:10.08ID:GJKjt1p6592デフォルトの名無しさん
2020/09/11(金) 17:32:38.43ID:TREPbbxK >>591
VS2019でその通りにやってみたけどできなかったよ
VS2019でその通りにやってみたけどできなかったよ
593デフォルトの名無しさん
2020/09/11(金) 17:59:56.28ID:+RJnbz7u ID:TREPbbxK の脳内にあるHello Worldアプリが何を指すのか次第な気がする
594デフォルトの名無しさん
2020/09/11(金) 18:06:29.86ID:Cxw4gZ+X mfcは単純にwin32の極薄ラッパーかというとそうでもない
ドキュメントビューとかシリアル化、DDX/DDVなんてのは独自の概念だ
ドキュメントビューとかシリアル化、DDX/DDVなんてのは独自の概念だ
595デフォルトの名無しさん
2020/09/11(金) 19:04:14.74ID:Y8ERPbJh MFCを新たに勉強するのが無理とか言っているような人は他のどの開発環境・
言語でも使えるようになるのは無理だろうし、プログラミングに限らず何をやっても
ダメな人間だと思う。
言語でも使えるようになるのは無理だろうし、プログラミングに限らず何をやっても
ダメな人間だと思う。
596デフォルトの名無しさん
2020/09/11(金) 19:10:08.33ID:+RJnbz7u 今さら公衆電話の使い方なんて覚える必要ないでしょ(キリッ
597デフォルトの名無しさん
2020/09/11(金) 19:33:09.27ID:TREPbbxK598デフォルトの名無しさん
2020/09/11(金) 19:50:12.24ID:+RJnbz7u599デフォルトの名無しさん
2020/09/11(金) 20:10:36.37ID:GJKjt1p6600デフォルトの名無しさん
2020/09/11(金) 20:10:37.20ID:GJKjt1p6601デフォルトの名無しさん
2020/09/11(金) 20:14:22.27ID:GJKjt1p6 >>597
ちゃんと「Standard MFC」に変えた場合、
Hello World という文字は表示されないが、MFCにとっては、それ以上減らせない
程度にシンプルなサンプルが作製される。
オイラもアセンブラでプログラムしていた口だから、人が勝手に用意した
型枠を使うのは余り好きではなかったし、気持ちは分かる。
しかし、MFCでは、原則的にはあれ以上は減らせない。
ちゃんと「Standard MFC」に変えた場合、
Hello World という文字は表示されないが、MFCにとっては、それ以上減らせない
程度にシンプルなサンプルが作製される。
オイラもアセンブラでプログラムしていた口だから、人が勝手に用意した
型枠を使うのは余り好きではなかったし、気持ちは分かる。
しかし、MFCでは、原則的にはあれ以上は減らせない。
602デフォルトの名無しさん
2020/09/11(金) 20:39:40.32ID:+RJnbz7u 開発環境が勝手に作った数々のファイルに埋もれてしまう体験は、なにもMFCに限った話じゃないだろう。
603デフォルトの名無しさん
2020/09/11(金) 20:49:11.08ID:+RJnbz7u Hello Worldの問題点は、出力しか試せないところだね。
ユーザーからの入力がプログラムに反映されるところまで試さないと
プログラマとしてはひと安心できないはず。
ユーザーからの入力がプログラムに反映されるところまで試さないと
プログラマとしてはひと安心できないはず。
604デフォルトの名無しさん
2020/09/11(金) 21:01:25.87ID:nAPZqh6B そもそもGUIアプリでHello,worldって何?w
605デフォルトの名無しさん
2020/09/11(金) 21:20:39.55ID:DA1blzOi SDI形式で、ドキュメント・ビューの仕組みは使わない方が、よりわかりやすいとは思うけどな
606デフォルトの名無しさん
2020/09/11(金) 21:27:53.38ID:+RJnbz7u C#でアプリを作ろうものなら、意味不明なXMLファイルが一緒に生成される気持ち悪さに耐えなければならない。
気持ち悪いのはMFCだけじゃないってこと。こういうもんだと慣れるしかない。
気持ち悪いのはMFCだけじゃないってこと。こういうもんだと慣れるしかない。
607デフォルトの名無しさん
2020/09/11(金) 22:50:01.30ID:3mrNom4D C# も普通のテキストエディタと csc だけ使えば
hoge.cs と hoge.exe しか造られないからすっきり
hoge.cs と hoge.exe しか造られないからすっきり
608デフォルトの名無しさん
2020/09/16(水) 14:43:10.77ID:3ja5x8/R CrystalDiskMark はMFC採用で独自コントローラー(Project Priscilla)まで実装しとる
MFCバリバリ現役じゃん
MFCバリバリ現役じゃん
609デフォルトの名無しさん
2020/09/16(水) 15:11:51.04ID:zy/NdAsc ライブラリの新旧だけで優劣だと思っちまう
浅はかなやつってライブラリで仕事してる人の
苦労が何も解ってないんだろうな
浅はかなやつってライブラリで仕事してる人の
苦労が何も解ってないんだろうな
610デフォルトの名無しさん
2020/09/16(水) 15:43:04.37ID:wZC9/K7G MFCの衰退を見守るスレ
MFCの最期を暖かく見送るスレ
MFC利用者をdisるスレ
MFCの最期を暖かく見送るスレ
MFC利用者をdisるスレ
611デフォルトの名無しさん
2020/09/16(水) 17:39:55.40ID:ZQue+HKY 必死に現役アピールするからおもちゃにされてしまっているw
612デフォルトの名無しさん
2020/09/16(水) 17:57:07.68ID:K+FHyBLB >>608
現役なのは確かだけどオワコンでもあるんだよね
現役なのは確かだけどオワコンでもあるんだよね
613デフォルトの名無しさん
2020/09/16(水) 18:02:53.43ID:iyuoEKtv TortoiseGit とかもmfc使ってる。
614デフォルトの名無しさん
2020/09/16(水) 18:56:19.61ID:g8ss57Sd 良くない側面も持っているが、C++でWindowsプログラムをしようと思ったら、MFCが一番良い選択肢だと思う。
615デフォルトの名無しさん
2020/09/16(水) 18:57:29.78ID:g8ss57Sd 仮にMFCを使わないとなると、VisualStudio を使うとなれば、Win32とC#しか選択肢がなくなる。
それは困る。
それは困る。
616デフォルトの名無しさん
2020/09/16(水) 19:28:09.07ID:ZQue+HKY 他にもあるだろw
617デフォルトの名無しさん
2020/09/16(水) 19:37:21.63ID:lYPT6/er >>616
UWP系は避けたい
UWP系は避けたい
618デフォルトの名無しさん
2020/09/16(水) 20:01:26.47ID:ZQue+HKY もっと情報収集しよ?
こんなんだからMFCじゃなくてMF爺って呼ばれてるんだぞ
こんなんだからMFCじゃなくてMF爺って呼ばれてるんだぞ
619デフォルトの名無しさん
2020/09/16(水) 20:49:32.03ID:0cbcGKkw >>618
おすすめは?
おすすめは?
620デフォルトの名無しさん
2020/09/16(水) 21:09:42.50ID:hOjYK7uQ >>616
でも実例は挙げないで、訊かれても「自分で調べろ」一点張り
でも実例は挙げないで、訊かれても「自分で調べろ」一点張り
621デフォルトの名無しさん
2020/09/16(水) 22:18:56.07ID:iyuoEKtv MFCにない汎用性を求めるなら、いくつか選択肢があるでしょ。
ウィジェット・ツールキット - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB%E3%82%AD%E3%83%83%E3%83%88
ウィジェット・ツールキット - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB%E3%82%AD%E3%83%83%E3%83%88
622デフォルトの名無しさん
2020/09/16(水) 22:23:13.67ID:1VQgoPvh >>618
具体例をあげよ
具体例をあげよ
623デフォルトの名無しさん
2020/09/17(木) 04:59:15.63ID:SW6+Z1Cs >>621
Visual Studioが使えなくなる。
Visual Studioが使えなくなる。
624デフォルトの名無しさん
2020/09/17(木) 12:47:47.90ID:OW2OZx8D Visual Studio で造れるもの
Tcl/Tk
wxWidgets
Qt
その他
Tcl/Tk
wxWidgets
Qt
その他
625デフォルトの名無しさん
2020/09/23(水) 14:11:24.89ID:L2u4imFE 「かんたんVisual C++ 改定2版」という本を見つけたのだが、ダイアログベースのアプリの説明がほとんどでSDIとMDIの説明はちょっとだけ。
MFC Tutorial
https://www.tutorialspoint.com/mfc/index.htm
上の海外のページでもダイアログベースの説明なんだよなあ。
SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
もしかしたらCMultiDocTemplateクラスのせいで自由にレイアウト変更できないの?
MFC Tutorial
https://www.tutorialspoint.com/mfc/index.htm
上の海外のページでもダイアログベースの説明なんだよなあ。
SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
もしかしたらCMultiDocTemplateクラスのせいで自由にレイアウト変更できないの?
626デフォルトの名無しさん
2020/09/23(水) 14:13:15.44ID:YfY3TQQ4 >業務
ωωω
ωωω
627デフォルトの名無しさん
2020/09/23(水) 15:16:33.25ID:wtMA3RXJ 結論的に言えば、以下の本を買えば、昔ながらのMFCのSDI/MDIプログラムは学べるはず。
他にも、4種類くらいの本があり、ダイアログベースのプログラミングなどに詳しい本もあるので
そっちもあわせて見れば、かなりの事が分かるはず。
かんたん Visual C++ [改訂2版] (プログラミングの教科書) (日本語) 単行本(ソフトカバー)
Visual C++の基本の文法を完全網羅。イラスト図解でやさしく解説したMFCの教科書です
2017年10月13日発売, 堀義博 著, A5判/560ページ, 定価(本体2,980円+税)
技術評論社のページに以下の様な目次が出ている :
https://gihyo.jp/book/2017/978-4-7741-9259-8#toc
11章 SDI/MDIアプリケーション
11-01 SDI/MDIアプリケーション
11-02 MDIプロジェクトを作成する
11-03 MDIで画像ファイル表示アプリケーションを作成する
もあるし、
10-01 ダイアログデータエクスチェンジ
10-02 メッセージの処理
10-03 ダイアログデータバリデーション
もあり、見てみたら、MFCの基本的な使い方はかなりちゃんと書いてあるようだ。
5章 コードウィザード
5-01 クラスウィザード
5-02 メンバー関数の追加
5-03 メンバー変数の追加
6章 デバッグ
7章 MFCの基本的なクラス
8章 コモンコントロール
9章 デバイスコンテキスト
他にも、4種類くらいの本があり、ダイアログベースのプログラミングなどに詳しい本もあるので
そっちもあわせて見れば、かなりの事が分かるはず。
かんたん Visual C++ [改訂2版] (プログラミングの教科書) (日本語) 単行本(ソフトカバー)
Visual C++の基本の文法を完全網羅。イラスト図解でやさしく解説したMFCの教科書です
2017年10月13日発売, 堀義博 著, A5判/560ページ, 定価(本体2,980円+税)
技術評論社のページに以下の様な目次が出ている :
https://gihyo.jp/book/2017/978-4-7741-9259-8#toc
11章 SDI/MDIアプリケーション
11-01 SDI/MDIアプリケーション
11-02 MDIプロジェクトを作成する
11-03 MDIで画像ファイル表示アプリケーションを作成する
もあるし、
10-01 ダイアログデータエクスチェンジ
10-02 メッセージの処理
10-03 ダイアログデータバリデーション
もあり、見てみたら、MFCの基本的な使い方はかなりちゃんと書いてあるようだ。
5章 コードウィザード
5-01 クラスウィザード
5-02 メンバー関数の追加
5-03 メンバー変数の追加
6章 デバッグ
7章 MFCの基本的なクラス
8章 コモンコントロール
9章 デバイスコンテキスト
628デフォルトの名無しさん
2020/09/23(水) 15:37:00.18ID:+91dLPIP629デフォルトの名無しさん
2020/09/23(水) 15:45:17.15ID:wtMA3RXJ >>628
この本は、ちゃんと、1つの章を割いているので、別の本のことかと思った。
そもそも、MFCのSDI/MDIは、そんなに高機能ではないので、質問者は勘違いしている
かも知れない。
MFCは、ダイアログベースにすると、割とIDEの機能が強く働いて、
C#のWinFormsと似たようなポトペタ的なプログラミングに近くなるが、
SDI/MDIは、メニュー以外には余り支援が無い。
SD/MDIでも、ダイアログを使えば、ポトペタ的になる。
というか、「Win32 Control」と呼ばれているものは、もともと、
ダイアログに入れた場合にちょうどよく機能するように設計されている。
だから、「ダイアログリソース」なるものがあるが、それ以外では、
独自に全て座標やサイズを指定して出すしかない。
この本は、ちゃんと、1つの章を割いているので、別の本のことかと思った。
そもそも、MFCのSDI/MDIは、そんなに高機能ではないので、質問者は勘違いしている
かも知れない。
MFCは、ダイアログベースにすると、割とIDEの機能が強く働いて、
C#のWinFormsと似たようなポトペタ的なプログラミングに近くなるが、
SDI/MDIは、メニュー以外には余り支援が無い。
SD/MDIでも、ダイアログを使えば、ポトペタ的になる。
というか、「Win32 Control」と呼ばれているものは、もともと、
ダイアログに入れた場合にちょうどよく機能するように設計されている。
だから、「ダイアログリソース」なるものがあるが、それ以外では、
独自に全て座標やサイズを指定して出すしかない。
630デフォルトの名無しさん
2020/09/23(水) 15:49:14.69ID:wtMA3RXJ >>629
普通、どのアプリを見ても分かるが、メインメニューとツールバーがあり、
一行のテキストフィールド(EditBox)や、ボタン、チェックボックス、
コンボボックスなどは、全てダイアログの中に収められていることが多い。
だから、SDI/MDIアプリも、IDEの支援は、ダイアログ以外は、
メニューとツールバーが中心で、後は関数の作製・削除、検索、置換、
デバッグなどに限定される。
というわけで、SDI/MDIプログラムを学ぶと言っても、ポトペタ的な
ものは、ダイアログの部分を学べばよいだけ。
そしてそれに関係するのが、ダイアログデータエクスチェンジ(DDE)。
普通、どのアプリを見ても分かるが、メインメニューとツールバーがあり、
一行のテキストフィールド(EditBox)や、ボタン、チェックボックス、
コンボボックスなどは、全てダイアログの中に収められていることが多い。
だから、SDI/MDIアプリも、IDEの支援は、ダイアログ以外は、
メニューとツールバーが中心で、後は関数の作製・削除、検索、置換、
デバッグなどに限定される。
というわけで、SDI/MDIプログラムを学ぶと言っても、ポトペタ的な
ものは、ダイアログの部分を学べばよいだけ。
そしてそれに関係するのが、ダイアログデータエクスチェンジ(DDE)。
631625
2020/09/23(水) 16:22:00.82ID:L2u4imFE >>629-630
625です。
その本を立ち読みしたのですが、SDI/MDIの部分は本当にペラペラです。
ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
最悪、Win32で作るしかないとは思っていますが。
625です。
その本を立ち読みしたのですが、SDI/MDIの部分は本当にペラペラです。
ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
最悪、Win32で作るしかないとは思っていますが。
632デフォルトの名無しさん
2020/09/23(水) 17:53:31.35ID:YfY3TQQ4 wxWidgets
633デフォルトの名無しさん
2020/09/24(木) 09:52:03.03ID:ipSsIIJF >>631
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から
サンプルとして利用できるプロジェクトが作られる。
Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに
分からない部分をネットで検索して調べるのが基本。
全くサンプルが無いと作るのはほとんど不可能な場合があり、
「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても
過言ではない。
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から
サンプルとして利用できるプロジェクトが作られる。
Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに
分からない部分をネットで検索して調べるのが基本。
全くサンプルが無いと作るのはほとんど不可能な場合があり、
「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても
過言ではない。
634デフォルトの名無しさん
2020/09/24(木) 09:58:05.46ID:ipSsIIJF >>631
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
>自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ
は、言語が違うだけで理念はほぼ同じ。
しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。
「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、
SDI/MDIアプリでも生かせる。
SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ
と同様の作法が使えるから。
ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
>自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ
は、言語が違うだけで理念はほぼ同じ。
しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。
「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、
SDI/MDIアプリでも生かせる。
SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ
と同様の作法が使えるから。
ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
635625
2020/09/24(木) 12:34:17.45ID:CT30hZB8 >>634
>ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
CTreeViewは知っているけど、VSが生成したプログラムにどうやって入れるのかがわからないんですよ。
検索してもちっとも出てこない。英語で検索しても出てこない。
日本語でも英語でもダイアログベースの解説しか出てこないので、ツールボックスからツリービューをダイアログにドラッグ・ドロップしてしか出てこない。
こんなのじゃ役に立たない!
>ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
CTreeViewは知っているけど、VSが生成したプログラムにどうやって入れるのかがわからないんですよ。
検索してもちっとも出てこない。英語で検索しても出てこない。
日本語でも英語でもダイアログベースの解説しか出てこないので、ツールボックスからツリービューをダイアログにドラッグ・ドロップしてしか出てこない。
こんなのじゃ役に立たない!
636デフォルトの名無しさん
2020/09/24(木) 12:49:59.87ID:J7wU0H86637625
2020/09/24(木) 13:35:34.64ID:CT30hZB8 >>636
できましたけど、VIEW/DOCモデルを選択した時しかできないですよね。
VIEW/DOCモデルを使うと、ファイル読み込みと書き込みの対称関係が強制されるので、これも困るというか。
自分が作りたいアプリは、メモリに絶対入らない巨大なファイルを少しずつ処理してエクスポートするものなので、読込・保存の概念がない。
やはりMFCは使わない方がいいのだろうか。Win32にした方がいいかもしれない。
どうしてMFCはWin32みたいに部品を組み合わせていくように作れないのだろう。
できましたけど、VIEW/DOCモデルを選択した時しかできないですよね。
VIEW/DOCモデルを使うと、ファイル読み込みと書き込みの対称関係が強制されるので、これも困るというか。
自分が作りたいアプリは、メモリに絶対入らない巨大なファイルを少しずつ処理してエクスポートするものなので、読込・保存の概念がない。
やはりMFCは使わない方がいいのだろうか。Win32にした方がいいかもしれない。
どうしてMFCはWin32みたいに部品を組み合わせていくように作れないのだろう。
638デフォルトの名無しさん
2020/09/24(木) 13:52:29.54ID:0BhvwOmc class設計がタコだから
class library と名乗るのがそもそも詐欺
ただの win32api wrapper あるいは劣化版
class library と名乗るのがそもそも詐欺
ただの win32api wrapper あるいは劣化版
639625
2020/09/24(木) 14:08:51.69ID:CT30hZB8640デフォルトの名無しさん
2020/09/24(木) 14:30:44.47ID:J7wU0H86 >>637
別に、ドキュメント/ビューの仕組みを使ったら
ファイル全体をメモリ上に読み込まないといけないわけではないけど、
そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、
内部の仕組みを理解する必要が出てくる。
ドキュメント/ビューが抵抗あるなら、使わずにSDIを作成して、
CChildViewの中にCTreeCtrlを載せたりすることもできるけど。
別に、ドキュメント/ビューの仕組みを使ったら
ファイル全体をメモリ上に読み込まないといけないわけではないけど、
そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、
内部の仕組みを理解する必要が出てくる。
ドキュメント/ビューが抵抗あるなら、使わずにSDIを作成して、
CChildViewの中にCTreeCtrlを載せたりすることもできるけど。
641デフォルトの名無しさん
2020/09/24(木) 14:31:42.32ID:ipSsIIJF >>637
Doc,Viewモデルは、MFCを使うと必ず伴うが、個人的にはほとんど無視してプログラム
している。
無視すると言うのは、Docではなく、全てViewの中にデータを入れたらいい。
イベントを受けるのを、View,Doc,Appのうちから選べるようになっているが、
原則的には全てViewで受けると便利。
MFCは、Doc,Viewモデルで設計されていると言うが、実際には余り使い勝手がよくなくて、
1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
なので、無視していい。
また、プロジェクトを作成後、ClassWizardで、Viewを作れるがその際、
どのViewを作るかを選べるようになっていてTreeViewも作れる。
Win32が使える人はMFCも使える。
MFCは、IDEと連携では便利なだけなので、自分で好きなようにWin32と混ぜて使っていい。
MFC自体、Win32のとても軽いラッパーに過ぎないから。
MFCはソースが付いてくるので、それを見れば、Win32との対応関係が分かる。
Doc,Viewモデルは、MFCを使うと必ず伴うが、個人的にはほとんど無視してプログラム
している。
無視すると言うのは、Docではなく、全てViewの中にデータを入れたらいい。
イベントを受けるのを、View,Doc,Appのうちから選べるようになっているが、
原則的には全てViewで受けると便利。
MFCは、Doc,Viewモデルで設計されていると言うが、実際には余り使い勝手がよくなくて、
1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
なので、無視していい。
また、プロジェクトを作成後、ClassWizardで、Viewを作れるがその際、
どのViewを作るかを選べるようになっていてTreeViewも作れる。
Win32が使える人はMFCも使える。
MFCは、IDEと連携では便利なだけなので、自分で好きなようにWin32と混ぜて使っていい。
MFC自体、Win32のとても軽いラッパーに過ぎないから。
MFCはソースが付いてくるので、それを見れば、Win32との対応関係が分かる。
642デフォルトの名無しさん
2020/09/24(木) 14:37:46.49ID:ipSsIIJF >>639
MFCは、Win32の軽いラッパーであることは、標準見解。
ただし、IDEとの連携がWin32より上手くできているので開発効率は上がる。
理解するのは、実はWin32より難しくなってしまっている部分もある。
しかし、イベントハンドラやメニューハンドラをどんどん追加していく場合の
効率がとても良い。
また、新しいWindowを作る際も、ClassWizardから作るとWin32で自分で
作るより速いことが多い。
メニューにチェック記号を付けたり、グレイ表示にしたい場合も、
MFCは、CCmdUI や、ON_UPDATE_COMMAND_UI()などを自動生成できるので、
効率が良い。
また、Win32だとswitch文でメニューを処理するが、MFCだと、自動生成された関数
で処理するので、大規模なアプリの場合、コードが整理される。
MFCは、Win32の軽いラッパーであることは、標準見解。
ただし、IDEとの連携がWin32より上手くできているので開発効率は上がる。
理解するのは、実はWin32より難しくなってしまっている部分もある。
しかし、イベントハンドラやメニューハンドラをどんどん追加していく場合の
効率がとても良い。
また、新しいWindowを作る際も、ClassWizardから作るとWin32で自分で
作るより速いことが多い。
メニューにチェック記号を付けたり、グレイ表示にしたい場合も、
MFCは、CCmdUI や、ON_UPDATE_COMMAND_UI()などを自動生成できるので、
効率が良い。
また、Win32だとswitch文でメニューを処理するが、MFCだと、自動生成された関数
で処理するので、大規模なアプリの場合、コードが整理される。
643デフォルトの名無しさん
2020/09/24(木) 14:44:39.87ID:ipSsIIJF >>637
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて
MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。
それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて
通れないこともある。
基本的には、フレームワークが想定しているファイルオープンの概念を、
如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。
最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている
かが分かるので、「安全に無視する方法」を探るといい。
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて
MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。
それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて
通れないこともある。
基本的には、フレームワークが想定しているファイルオープンの概念を、
如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。
最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている
かが分かるので、「安全に無視する方法」を探るといい。
644デフォルトの名無しさん
2020/09/24(木) 15:01:57.18ID:n05mXSO9 Docを無視してViewだけ使うってのは俺もよくやるw
645デフォルトの名無しさん
2020/09/24(木) 15:35:28.03ID:A/uKUrmH >>640-644
うーむ・・・
結局、MFCが提供する仕組みを無視しないと自由にプログラムを組めないのか。
しかも安全に無視するにはMFCの仕組みを熟知しないといけないと。
そんなこと組込一筋の自分にはできそうにないなあ。
今作りたいプログラムを作ったらMFCを使うことは二度となさそうだし、やはりMFCは回避するべきだろうか・・・
頭痛いよ
うーむ・・・
結局、MFCが提供する仕組みを無視しないと自由にプログラムを組めないのか。
しかも安全に無視するにはMFCの仕組みを熟知しないといけないと。
そんなこと組込一筋の自分にはできそうにないなあ。
今作りたいプログラムを作ったらMFCを使うことは二度となさそうだし、やはりMFCは回避するべきだろうか・・・
頭痛いよ
646デフォルトの名無しさん
2020/09/24(木) 15:40:13.30ID:ipSsIIJF >>645
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、
それを守っても余り良いこと無いので、無視してよい、ということ。
なにも、アメリカ人の考えた思想に従う必要は無いのだから。
その当時の彼らはそれが理想だと考えたかも知れないが、それも
どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、
それを守っても余り良いこと無いので、無視してよい、ということ。
なにも、アメリカ人の考えた思想に従う必要は無いのだから。
その当時の彼らはそれが理想だと考えたかも知れないが、それも
どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。
647デフォルトの名無しさん
2020/09/24(木) 15:50:00.97ID:n05mXSO9648デフォルトの名無しさん
2020/09/24(木) 16:08:29.20ID:0BhvwOmc649625
2020/09/24(木) 16:14:40.31ID:CT30hZB8650デフォルトの名無しさん
2020/09/24(木) 16:33:16.74ID:n05mXSO9 >>649
> SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
こう言ってた人が
> PCのプログラミングに力を入れると評価が下がってしまう。
> そうなると知識量が必要なMFCは避けないといけない。やはりWin32にするべきか。
こう言い出す意味がよくわからんのだが
組み込みが本業の人がMFCを何に使うんだろう
基板から送られてくるデータを可視化とか?
シミュレーションや回路設計は専用ソフト使うだけだし
> SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
こう言ってた人が
> PCのプログラミングに力を入れると評価が下がってしまう。
> そうなると知識量が必要なMFCは避けないといけない。やはりWin32にするべきか。
こう言い出す意味がよくわからんのだが
組み込みが本業の人がMFCを何に使うんだろう
基板から送られてくるデータを可視化とか?
シミュレーションや回路設計は専用ソフト使うだけだし
651625
2020/09/24(木) 16:40:57.87ID:CT30hZB8 >>650
要は力を入れないで業務で使えるGUIのプログラミングをしないといけないということです。
何も分かっていない上司に言われてやっているので、仕方がないのです。
>組み込みが本業の人がMFCを何に使うんだろう
企業秘密なので、詳細は書けない。
データの可視化の一種と言っておく。
要は力を入れないで業務で使えるGUIのプログラミングをしないといけないということです。
何も分かっていない上司に言われてやっているので、仕方がないのです。
>組み込みが本業の人がMFCを何に使うんだろう
企業秘密なので、詳細は書けない。
データの可視化の一種と言っておく。
652デフォルトの名無しさん
2020/09/24(木) 16:49:31.37ID:ipSsIIJF >>651
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。
それをいじくれば、TreeViewは制御できる。
後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。
それをいじくれば、TreeViewは制御できる。
後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。
653625
2020/09/24(木) 16:50:34.31ID:CT30hZB8 個人的にはGUIは不要だと思っているのですけどね。
現場で働く派遣社員や外注などのレベル低下でCUIのツールが受け入れられなくなっているってだけでGUIのプログラミングをやるはめになった。
現場で働く派遣社員や外注などのレベル低下でCUIのツールが受け入れられなくなっているってだけでGUIのプログラミングをやるはめになった。
655デフォルトの名無しさん
2020/09/24(木) 16:53:39.81ID:n05mXSO9 >>653
裏でCUIツールを起動するだけ、みたいのだとダイアログベースで充分じゃね?
裏でCUIツールを起動するだけ、みたいのだとダイアログベースで充分じゃね?
657デフォルトの名無しさん
2020/09/24(木) 17:07:39.97ID:n05mXSO9 いちおーSDI用のスケルトンを使って
内容的にはダイアログベースなやつにするとか
ログを記録したり終了時に使用状態をファイルに記憶させるのにDoc使いましたよって
内容的にはダイアログベースなやつにするとか
ログを記録したり終了時に使用状態をファイルに記憶させるのにDoc使いましたよって
658625
2020/09/24(木) 17:26:50.28ID:CT30hZB8659デフォルトの名無しさん
2020/09/24(木) 18:13:53.22ID:luF9hMVl ダイアログベースがダメだと言うなら、>>640の言うように、
Doc/Viewを使わないSDIで、CChildViewに処理を全部入れてしまうのが一番シンプルでは?
Doc/Viewを使わないSDIで、CChildViewに処理を全部入れてしまうのが一番シンプルでは?
660デフォルトの名無しさん
2020/09/24(木) 18:19:58.65ID:VqYlbH9U >640の前段は「ドキュメント/ビューの仕組みを使ったら」だ
ドキュメント/ビューを一切使わないのは簡単
使わないだけ
ダイアログにメニューも普通に付く
「ダイアログ メニュー」でggr
そんなにWin32API直でやりたいならそうすればいいけど
どっちにしろ、猫でものWindows SDK編でも一通りやっといた方がいいよ
MFC使うにしても、「ドキュメント/ビュー」とかのMFC独自のとこ以外は
よく言われるようにWin32APIの薄いラッパだから
ドキュメント/ビューを一切使わないのは簡単
使わないだけ
ダイアログにメニューも普通に付く
「ダイアログ メニュー」でggr
そんなにWin32API直でやりたいならそうすればいいけど
どっちにしろ、猫でものWindows SDK編でも一通りやっといた方がいいよ
MFC使うにしても、「ドキュメント/ビュー」とかのMFC独自のとこ以外は
よく言われるようにWin32APIの薄いラッパだから
661625
2020/09/24(木) 18:59:32.67ID:CT30hZB8 >>659
そこまで判断する知識はまだなくて
>>660
>ダイアログにメニューも普通に付く
そんなことが可能なのですね。
https://www.kazetest.com/vcmemo/dialogmenu/dialogmenu.htm
それならダイアログベースでも可能かもしれません。
Win32についてはそこである程度勉強したのですが、部品を組み立てるような感覚で自由にできるので、下手にMFCに手を出すよりはマシかと思ったわけです。
そこまで判断する知識はまだなくて
>>660
>ダイアログにメニューも普通に付く
そんなことが可能なのですね。
https://www.kazetest.com/vcmemo/dialogmenu/dialogmenu.htm
それならダイアログベースでも可能かもしれません。
Win32についてはそこである程度勉強したのですが、部品を組み立てるような感覚で自由にできるので、下手にMFCに手を出すよりはマシかと思ったわけです。
662デフォルトの名無しさん
2020/09/24(木) 19:15:13.93ID:ipSsIIJF >>658
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。
勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。
Doc/Viewモデルを使うとしても、
CDocument::OnOpenDocument(const char *pszFilename)
が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に
データを読み込めばよい。
CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、
CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。
本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、
好き放題出来る。
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。
勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。
Doc/Viewモデルを使うとしても、
CDocument::OnOpenDocument(const char *pszFilename)
が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に
データを読み込めばよい。
CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、
CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。
本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、
好き放題出来る。
663デフォルトの名無しさん
2020/09/24(木) 19:16:51.84ID:ipSsIIJF664デフォルトの名無しさん
2020/09/24(木) 19:36:48.02ID:CT30hZB8665デフォルトの名無しさん
2020/09/24(木) 20:48:36.72ID:anZxJGRt666デフォルトの名無しさん
2020/09/24(木) 21:07:02.77ID:sDDeHHJX >>664
「MFCによるWindowsプログラミング」ISBN 475611749X
首都圏在住なら国会図書館で見てこい
ttps://iss.ndl.go.jp/books/R100000002-I000002930291-00
田舎住まいなら尼(ISBNで検索)で\32,580で売ってるから上司に頼んでこれ買ってもらえ
「MFCによるWindowsプログラミング」ISBN 475611749X
首都圏在住なら国会図書館で見てこい
ttps://iss.ndl.go.jp/books/R100000002-I000002930291-00
田舎住まいなら尼(ISBNで検索)で\32,580で売ってるから上司に頼んでこれ買ってもらえ
667デフォルトの名無しさん
2020/09/24(木) 21:20:33.40ID:qMR+aI5t668デフォルトの名無しさん
2020/09/24(木) 21:45:13.19ID:bZ1sVv66 SDIでもCFromViewしか使ったことないナ
669デフォルトの名無しさん
2020/09/25(金) 00:33:44.17ID:mGml3uVc MFC は、数十年前w
Jeffrey Richter とかの時代
Win32 API を、クラスにまとめたもの。
メニューバーも作れる
MFCって、まだ存在するのか
Jeffrey Richter とかの時代
Win32 API を、クラスにまとめたもの。
メニューバーも作れる
MFCって、まだ存在するのか
670デフォルトの名無しさん
2020/09/25(金) 00:48:06.02ID:nCkagqzh WindowsでC++とVisual Studioを使ってデスクトップのプログラムするなら、
今でもMFC以外の選択肢はほぼ無いはずだが、
今でもMFC以外の選択肢はほぼ無いはずだが、
671669
2020/09/25(金) 02:04:10.72ID:mGml3uVc かんたん Visual C++[改訂2版]、堀義博、2017
この本では、.net か、managed C++ か、interop か何かを使っていた。
でも結局、このやり方も、流行らなかったのか
MFC ではなかった気がする
この本では、.net か、managed C++ か、interop か何かを使っていた。
でも結局、このやり方も、流行らなかったのか
MFC ではなかった気がする
672デフォルトの名無しさん
2020/09/25(金) 09:17:50.44ID:nCkagqzh >>667
> > 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
>CDocumentには、UpdateAllViews()という名前の関数があるように、
>複数のビューを関連付けられるぞ。
スマソ。記憶違いがあった。
1つのDocに対して複数のViewは、一応は関連付けられる。
しかし、それはどれも1つのCFrameWndの中に入れておかないといけなくなって
しまっているため、WzEditorの「テキストの二重化」のように、
1つのテキストファイルの別の場所を複数のFrameWndの中に表示するという
ようなことが、MFCでは基本的に出来ないハズ。
> > 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
>CDocumentには、UpdateAllViews()という名前の関数があるように、
>複数のビューを関連付けられるぞ。
スマソ。記憶違いがあった。
1つのDocに対して複数のViewは、一応は関連付けられる。
しかし、それはどれも1つのCFrameWndの中に入れておかないといけなくなって
しまっているため、WzEditorの「テキストの二重化」のように、
1つのテキストファイルの別の場所を複数のFrameWndの中に表示するという
ようなことが、MFCでは基本的に出来ないハズ。
673デフォルトの名無しさん
2020/10/16(金) 18:08:33.74ID:wvravRFo CTreeCtrlクラスでツリー表示の文字色を部分的に変えたいけど、Windows SDKみたいにカスタムドローしないと無理ゲー?
674デフォルトの名無しさん
2020/11/20(金) 05:11:03.85ID:lrgUTmYU 実際にウィンドウ上に表示している画面をBitmapに画像保存するんじゃなくて、
表示させないで、データだけを元に、連続的に画像保存するってどうやるのかな?
例えば、ボタン1つで、円の位置を連続的に動かしたデータを、
それらをわざわざ画面に表示させないで、連続的に画像に保存したいんだけど、
やり方がわからない。
表示させないで、データだけを元に、連続的に画像保存するってどうやるのかな?
例えば、ボタン1つで、円の位置を連続的に動かしたデータを、
それらをわざわざ画面に表示させないで、連続的に画像に保存したいんだけど、
やり方がわからない。
675蟻人間 ◆T6xkBnTXz7B0
2020/11/20(金) 05:14:55.72ID:7Y8jq4/V >>674
CreateCompatibleDC(NULL)とCreateDIBSectionだろう。DIBビットマップオブジェクトを作成し、DCでそれを選択し、DCで描画する形になる。
CreateCompatibleDC(NULL)とCreateDIBSectionだろう。DIBビットマップオブジェクトを作成し、DCでそれを選択し、DCで描画する形になる。
676デフォルトの名無しさん
2020/11/21(土) 18:08:17.32ID:DvxemaNf >>675
ありがとう、教えてもらったキーワードをググってみます。
ありがとう、教えてもらったキーワードをググってみます。
677デフォルトの名無しさん
2021/01/18(月) 23:31:44.08ID:zaIVxsp1 DialogにCMFCFontComboBoxを張り付け
プロパティの「フォントを使用して描画」をTrueにすると
コンボボックスの行の高さを無視して大きく描画されます。
XX明朝とXXゴシックが縦に重なって描画される感じです。
(ディスプレイ設定で拡大表示している場合のみ)
以前は普通に表示されていた気がするのですが。
良いアイデアがあればお願いします。
プロパティの「フォントを使用して描画」をTrueにすると
コンボボックスの行の高さを無視して大きく描画されます。
XX明朝とXXゴシックが縦に重なって描画される感じです。
(ディスプレイ設定で拡大表示している場合のみ)
以前は普通に表示されていた気がするのですが。
良いアイデアがあればお願いします。
678デフォルトの名無しさん
2021/01/21(木) 23:11:43.50ID:CyPBYCkQ あきらめて素のComboboxで作り直しました。
679デフォルトの名無しさん
2021/02/19(金) 22:39:02.63ID:Igsf+004680デフォルトの名無しさん
2021/02/20(土) 00:53:43.48ID:NHEiPkLm WinUI3ってc++で書かれてるからc++ nativeじゃね??
681デフォルトの名無しさん
2021/02/21(日) 22:41:37.64ID:sZqIhPVp >>679
それだけのことなのにそれをやらないマイクロソフト
それだけのことなのにそれをやらないマイクロソフト
682デフォルトの名無しさん
2021/02/22(月) 07:01:41.68ID:1ohBYlrZ Direct3Dは違うのか?
683デフォルトの名無しさん
2021/03/01(月) 23:14:22.24ID:L7jyZAdw 昔あったCFrameWndのLoadBarStateとSaveBarStateは
何に置き換わったのでしょうか?
CMF…系のツーツバーやステータスバーでは保存&復元されないようです。
何に置き換わったのでしょうか?
CMF…系のツーツバーやステータスバーでは保存&復元されないようです。
684デフォルトの名無しさん
2021/03/26(金) 13:13:22.16ID:zWEWautG MFCより先進的なGUIフレームワークを使いたいならQtとかwxWidgetsを使えってことなのかねえ?
685デフォルトの名無しさん
2021/06/19(土) 20:11:27.16ID:Obm1tdWY >>683
m_pszProfileNameを初期化してる?
m_pszProfileNameを初期化してる?
686デフォルトの名無しさん
2021/06/22(火) 01:17:37.30ID:jHGnhlRq >680
WinUI3には期待している。
WinUI3には期待している。
687683
2021/06/28(月) 15:55:19.44ID:yWrL1Flg688デフォルトの名無しさん
2021/06/28(月) 16:12:02.63ID:DiM7L1Ie >>683
CWinAppEx::LoadStateやCWinAppEx::SaveStateが勝手に呼ばれるはずだけど
CWinAppEx::LoadStateやCWinAppEx::SaveStateが勝手に呼ばれるはずだけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【文春】《記事予告》国民的女優&人気俳優 不倫スクープ第2弾 ★3 [Ailuropoda melanoleuca★]
- 【文春】《記事予告》国民的女優&人気俳優 不倫スクープ第2弾 ★4 [Ailuropoda melanoleuca★]
- 【川崎・20歳女性死体遺棄】「あさひを返せ!」県警の説明に親族、友人ら90人が署に集まり猛抗議「嘘ばかり、謝れば済むことなのに」★14 [ぐれ★]
- 米価高騰が日本人のコメ離れに拍車かける 茶わん1杯のごはんは4枚切り食パン1枚より高額の時代 ★3 [首都圏の虎★]
- 【巨人】岡本和真 初回の交錯プレーで負傷交代 左腕が逆方向にグニャリ…数分間もん絶 [ひかり★]
- イギリス、反移民を掲げる右派ポピュリスト政党が1600議席中677議席の大躍進―英地方議会選 ★2 [お断り★]
- GW暇ならアニソン聴こうぜ・・・
- ゴールデンウィークの思い出を語るお🏡
- 【GW暇な奴来い】安価で指定されたものを全力で探してうpするスレ【反省会】
- ▶VTuberの王、「宝鐘マリン」さん←この人について知っていること
- 【朗報】 「機動戦士Gundam GQuuuuuuX(ジークアクス)」、ガチのマジでシコらせにくる 黒い三連星もキタ━━━━━━(゚∀゚)━━━━━!!! [303493227]
- 【訃報】黒い三連星、ニャアンに殺される 原作キャラを踏み台にするのやめろよ…ガンダムへの冒涜だろ… [579392623]