- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
633 :デフォルトの名無しさん[sage]:2020/09/24(木) 09:52:03.03 ID:ipSsIIJF - >>631
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。 VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から サンプルとして利用できるプロジェクトが作られる。 Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに 分からない部分をネットで検索して調べるのが基本。 全くサンプルが無いと作るのはほとんど不可能な場合があり、 「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても 過言ではない。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
634 :デフォルトの名無しさん[sage]:2020/09/24(木) 09:58:05.46 ID:ipSsIIJF - >>631
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか? >自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか? ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ は、言語が違うだけで理念はほぼ同じ。 しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。 「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、 SDI/MDIアプリでも生かせる。 SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ と同様の作法が使えるから。 ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
641 :デフォルトの名無しさん[sage]:2020/09/24(木) 14:31:42.32 ID: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との対応関係が分かる。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
642 :デフォルトの名無しさん[sage]:2020/09/24(木) 14:37:46.49 ID:ipSsIIJF - >>639
MFCは、Win32の軽いラッパーであることは、標準見解。 ただし、IDEとの連携がWin32より上手くできているので開発効率は上がる。 理解するのは、実はWin32より難しくなってしまっている部分もある。 しかし、イベントハンドラやメニューハンドラをどんどん追加していく場合の 効率がとても良い。 また、新しいWindowを作る際も、ClassWizardから作るとWin32で自分で 作るより速いことが多い。 メニューにチェック記号を付けたり、グレイ表示にしたい場合も、 MFCは、CCmdUI や、ON_UPDATE_COMMAND_UI()などを自動生成できるので、 効率が良い。 また、Win32だとswitch文でメニューを処理するが、MFCだと、自動生成された関数 で処理するので、大規模なアプリの場合、コードが整理される。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
643 :デフォルトの名無しさん[sage]:2020/09/24(木) 14:44:39.87 ID:ipSsIIJF - >>637
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。 それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて 通れないこともある。 基本的には、フレームワークが想定しているファイルオープンの概念を、 如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。 最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている かが分かるので、「安全に無視する方法」を探るといい。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
646 :デフォルトの名無しさん[sage]:2020/09/24(木) 15:40:13.30 ID:ipSsIIJF - >>645
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、 それを守っても余り良いこと無いので、無視してよい、ということ。 なにも、アメリカ人の考えた思想に従う必要は無いのだから。 その当時の彼らはそれが理想だと考えたかも知れないが、それも どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
652 :デフォルトの名無しさん[sage]:2020/09/24(木) 16:49:31.37 ID:ipSsIIJF - >>651
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。 それをいじくれば、TreeViewは制御できる。 後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
662 :デフォルトの名無しさん[sage]:2020/09/24(木) 19:15:13.93 ID:ipSsIIJF - >>658
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。 勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。 Doc/Viewモデルを使うとしても、 CDocument::OnOpenDocument(const char *pszFilename) が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に データを読み込めばよい。 CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、 CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。 本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、 好き放題出来る。
|
- MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
663 :デフォルトの名無しさん[sage]:2020/09/24(木) 19:16:51.84 ID:ipSsIIJF - >>661
MFCも、本等は好き放題出来る。 個人的には、大改造して使ってる。
|
- 【本命】Blazor スレ1【真打】
605 :デフォルトの名無しさん[sage]:2020/09/24(木) 19:48:01.41 ID:ipSsIIJF - WebAppは、下火になるとしても、独特の面白さがある。
ビビッドアーミーなんかも、Webからすぐに始められるから、インストール型 のゲームよりも罪悪感が少ないため、ヒットした可能性がある。
|