X



MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0446デフォルトの名無しさん
垢版 |
2020/06/03(水) 21:59:01.81ID:z01mcF4V
fluent designが問題なんだよ。タッチフレンドリなアプリ作るならfluent designでもいいが、もっとマウス入力前提のデスクトップアプリ作る場合なfluentだとスペースが多すぎてダサくなる
もっと、Visual Studio IDEみたいな情報密度のアプリにFluent Design(WinUI)が対応してくれれば
0447デフォルトの名無しさん
垢版 |
2020/06/03(水) 22:02:34.42ID:z01mcF4V
Tunebrowser見てみたけど、おしゃれやな
こういうの簡単に..っていうかMFCのビジュアルテーマもっと用意しろよって...
0449デフォルトの名無しさん
垢版 |
2020/06/04(木) 22:17:47.91ID:x+eVDE0s
本当は実用性とデザイン性は相反することが多いんだよ。
なぜかというと今まで見たことも無いものが良いデザインに見えるからだ。
人間は見たことも無いことに驚く。そして驚きこそが良いデザイン本質だからだ。
便利だったり識別し易いものは既に多くある。それが実用性が高いものだ。
ところがよくあるものは陳腐に見えるため、良いデザインに見えない。
だからSF映画の世界では実用性のないUIを持ったコンソールパネルが宇宙船や
ロボットの中に描かれている。
見たことが無いのでかっこよく見えるのだ。
Windowのデザインも、4隅を丸くしたりするとかっこよく見えるが、
面積が無駄になるので実用性には乏しい。
だから、Windowの中の境界線を見えなくするものが流行っているが、めったに採用されてこなかった
ために驚きがあるため一部の人にはデザイン性が高く見える。
ところが、採用されてこなかったのは実用性が無いからであって、結局使いにくい。
0450デフォルトの名無しさん
垢版 |
2020/06/05(金) 15:01:07.01ID:WSRdRexs
馬鹿っぽい文章
0452デフォルトの名無しさん
垢版 |
2020/06/05(金) 16:06:30.12ID:2cqRue0Q
IT掲示板群 ttp://x0000.net/forum.aspx?id=15

学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0

PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
0453デフォルトの名無しさん
垢版 |
2020/06/10(水) 17:28:34.23ID:zGKCrjfQ
MFCのせいでC++/CLIのGUIが衰退したのは本当ですか?
C++/CLIのGUIはもう終わりなのですか?
0454デフォルトの名無しさん
垢版 |
2020/06/10(水) 17:49:50.64ID:V+CQutVh
MFCはC++98すら未制定の時代に作られたライブラリだけど
C++17前提で作り直すとどんな感じになるかな

たとえば
RUNTIME_CLASS(hogehoge)

typeid(hogehoge)
みたいに
0457デフォルトの名無しさん
垢版 |
2020/06/10(水) 22:36:21.96ID:AiHbZWJh
最近MSが出したTerminalのソースみたらゴリゴリのモダンなC++の中でWindows API使ってて震えたね
何とかしてくれよ本当
0459デフォルトの名無しさん
垢版 |
2020/06/11(木) 11:41:53.07ID:DcPEy/qZ
MFCはゴミ
当時のMSの過学習の成果物
0461デフォルトの名無しさん
垢版 |
2020/06/12(金) 05:06:01.94ID:mUcvmKZk
APIの極薄ラッパーなところが有り難いんだよ
余計なことを押しつけずAPIを使いやすくすることに徹してくれていて
0462デフォルトの名無しさん
垢版 |
2020/06/12(金) 08:17:50.58ID:70FlsBsC
MFCもFeature Packの後 更にBCGSoft買収して全部無料にするとか、
WPFもどっかのライブラリ買収して無料にするとかカッコいいアプリ作れるようにすれば開発者の意欲も沸くのにな
xamarinとか糞は買収するくせに
0463デフォルトの名無しさん
垢版 |
2020/06/12(金) 09:43:15.85ID:F8A7CVPb
使い安くなってるか?
余計な手間が増えてるだけだろ?
0464デフォルトの名無しさん
垢版 |
2020/06/12(金) 15:34:56.34ID:bpI5hVyH
>>458
GUIを作るにはあまりに低レベルなAPIしかなくて
今の時代にそこから書くのは辛すぎる
もう一段上の抽象化レイヤーなりMFCみたいなクラスライブラリが欲しいところ
0466デフォルトの名無しさん
垢版 |
2020/06/12(金) 15:48:58.95ID:1pXOSbLZ
Win32APIに対してのMFCは一段上に行ってない
抽象レイヤですらない
0471デフォルトの名無しさん
垢版 |
2020/07/09(木) 06:41:13.42ID:jzluGOwX
MFCとAPIは同時に憶えられるよ
MFCはAPIの極薄ラッパーだかんね

MFC独自の概念、シリアル化とかドキュメントビューとか
APIあんまり関係ないのもあるけどね
0472デフォルトの名無しさん
垢版 |
2020/07/09(木) 07:45:04.33ID:dSC6yVgi
Win32 APIという超レガシーを今更勉強する気が起きるかどうか
昔はこれしかなかったからみんな頑張って勉強したけど
0474デフォルトの名無しさん
垢版 |
2020/07/09(木) 08:40:17.74ID:sSml3bMj
勉強って言ったって、一々全部覚える必要はない
昔はgoogleとかないから名前覚えないと探せない問題はあったけど
今はよく使うものはなんとなく名前を覚えてしまう程度で充分だ
どうせエラーが発生したら調べることになるんだし
頑張るような要素はないと思うが
0475デフォルトの名無しさん
垢版 |
2020/07/09(木) 09:37:01.56ID:vrNDocOm
>>469
むしろMFCの勉強はしない方が良い
というかMFCの勉強はしてはいけない
0477デフォルトの名無しさん
垢版 |
2020/07/09(木) 11:43:28.91ID:x9sAwct8
MFCやWin32APIの勉強なんてさほど必要ないよ。
英単語の暗記のようなものだから。
電話帳を勉強する必要ないのと同じ。
公式ドキュメントに書かれていない問題点や誤解しやすい点など、
先人の労苦をネットで調べるのは意味がある。
0479デフォルトの名無しさん
垢版 |
2020/07/09(木) 12:42:41.81ID:jzluGOwX
女に関わることで起きる問題は
女と関わらなければ回避可能
だろ? おまえの人生は
0480デフォルトの名無しさん
垢版 |
2020/07/09(木) 13:02:23.02ID:vrNDocOm
その発想は無かった
0484デフォルトの名無しさん
垢版 |
2020/07/22(水) 22:44:03.42ID:HWpUtmNc
うちの会社新人に研修でMFCやらせるんだけど大丈夫かな……多分創業当初から同じ課題渡してるんじゃないかな……
0485デフォルトの名無しさん
垢版 |
2020/07/23(木) 00:35:10.40ID:4rdlbzE6
本番で使ってたらおぞましいが
研修なら反面教師に最適
0486デフォルトの名無しさん
垢版 |
2020/07/23(木) 01:36:12.34ID:5yzO6ql9
C++使いがMFC使いたくないのは理解できるが、JavaとかPythonのようなモダン言語使ってる層ならわかりやすくて良いんじゃないの。
0488デフォルトの名無しさん
垢版 |
2020/08/06(木) 01:38:43.65ID:FpfultlR
ほかのC++のGUIライブラリ、例えばATL/WTLが
MFCに比べてそこまで使い勝手いいわけでもないけどな
些細なレベルで文句言ってただけ
0490デフォルトの名無しさん
垢版 |
2020/08/06(木) 10:59:01.65ID:6QU45l4b
OWL>>>越えられない壁>>>MFC
だったよな
どうしてこうなった
0491デフォルトの名無しさん
垢版 |
2020/08/07(金) 12:50:43.79ID:vhK9mMAk
これからはWinUI 3が標準になっていきそうだな
0492デフォルトの名無しさん
垢版 |
2020/08/31(月) 00:12:50.36ID:FOGtRXGJ
C++/CLIとC++/MFCのどちらがいいのだろうか?
C++/CLIはあまりメンテナンスされていないと聞くが
0493デフォルトの名無しさん
垢版 |
2020/08/31(月) 07:16:24.51ID:tHgQtCtq
その2つは比べるようなものでもないが?C++/CLIはFormsとMFCどちらも使える。
ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。
0494492
垢版 |
2020/08/31(月) 14:05:28.74ID:FOGtRXGJ
>>493
Σ( ̄ロ ̄lll) ガビーン
C++/CLIでMFCも使えるのですか!?

>ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。

これってMSが推奨していないのですか?
0496デフォルトの名無しさん
垢版 |
2020/09/01(火) 15:20:10.83ID:fuWow3G5
無駄
tcl/tk とか Qt とか wxWidgets やれ
0498デフォルトの名無しさん
垢版 |
2020/09/01(火) 16:08:34.04ID:/FoUQJki
>>496
そ・・・そんな・・・
C++で書いたコマンドラインツールをGUIにしたいので、MFCがいいと思ったんですけど
tcl/tkはC++で使えないみたいなので、Qt とか wxWidgets がいいのですか?
しかし、長生きするのはMFCってことはないでしょうか
0501デフォルトの名無しさん
垢版 |
2020/09/01(火) 17:04:32.66ID:fuWow3G5
>tcl/tkはC++で使えないみたい

誰がそんな事言ったの?
使えるよ

MFC は無駄
0503デフォルトの名無しさん
垢版 |
2020/09/01(火) 17:20:12.54ID:ABFUDvdT
このサイトの「Win32 Application」でMFCを使うという例はいくらなんでも古すぎるのでは。
Unicodeも一切想定されていないから、標準設定ではコンパイルエラーになりそうだし。
0506デフォルトの名無しさん
垢版 |
2020/09/01(火) 18:33:46.17ID:vLz2GEqc
>>505
まず、VS2019で、MFCのHello World的なものはビルドできる。
そっかっら後は、MSDN の英語版を読むといい。
日本語版は駄目。
0507デフォルトの名無しさん
垢版 |
2020/09/01(火) 18:48:11.66ID:/FoUQJki
>>506
そうだとすると学習コストが尋常じゃなくなりそうですね
Windows SDKで作るのは大変だし、MFCは学習が辛いし、どうしたものか
0508デフォルトの名無しさん
垢版 |
2020/09/01(火) 18:48:53.85ID:vLz2GEqc
>>503
MFCがWin32のラッパなのだから、別に不適切ではない。
afxwin.h
などのヘッダファイルが、新しいMFCでは名称変更になっているが。
0510デフォルトの名無しさん
垢版 |
2020/09/01(火) 19:26:13.61ID:x63jWwwu
MFC は、unmanaged だろ。
まだ、存在するのか

VC++ か何かで、managed(.NET)から、unmanaged(.NET以外)を呼び出す機構があったような。
.NETのunmanaged拡張(C++/CLI)
0511510
垢版 |
2020/09/01(火) 19:30:28.41ID:x63jWwwu
C++/CLI は、非推奨か

最近のWindows では、C/C++ を、どうやってプログラミングするのだろう?
0512デフォルトの名無しさん
垢版 |
2020/09/01(火) 20:33:34.93ID:i5n1f2G3
>>511
コマンドラインならいくらでもC++を使える。
C++のGUIは選択肢が少なくなっている。
MFCも将来性なさそうだからWindows SDKしか残らなくなるかもね。
あるいは上の方に書かれているサードパーティのGUIを使うか。

Windowsの主要言語はC#やVBになってしまった。
0513デフォルトの名無しさん
垢版 |
2020/09/01(火) 20:50:25.12ID:z4ASdXsC
>>510
それ用のDLLが用意されていて、MFCのアプリケーションがほんの少しの変更で
C++/CLIでビルドできたよ。
0515デフォルトの名無しさん
垢版 |
2020/09/01(火) 21:27:53.58ID:vLz2GEqc
>>511
C++ は、普通に
0517デフォルトの名無しさん
垢版 |
2020/09/01(火) 22:08:28.50ID:bSJmfpdA
.NET のアプリで定番のものって何があるかな
よく使うアプリはネイティブなのばかり
MFC 使ってるのか Win32 直叩きかは知らんけど
0518デフォルトの名無しさん
垢版 |
2020/09/02(水) 10:34:38.82ID:1e/YSh87
WindowsでC++アプリの定番はWin32ではなくMFC。
日本ではMFCが普及すべき時期に無料のVS Expressが出てきて、
それがWin32のみでMFCには対応してなかった状態で、後から
無料のVS Communityが出てきて、今度は、C++よりC#が
前面に押し出されてしまったため、C++使いがMFCでプログラム
する機会を逃してしまっただけ。
0519デフォルトの名無しさん
垢版 |
2020/09/02(水) 10:37:42.15ID:1e/YSh87
なお、C++の場合、VSの力が最大に生かせるのはMFCであって、Win32ではない。
メニューを処理する関数の作成なども、MFCだとVSによって自動化されているが、
Win32だとされていない。
ダイアログで文字列や数値を扱うDDEも、MFCではVSのサポートを得られるが、
Win32では得られない。
WM_CREATE, WM_SIZE, WM_LBUTTONDOWNなどのメッセージのハンドラ作成も、
MFCだとVSのサポートを得られるが、Win32だと得られない。
0522デフォルトの名無しさん
垢版 |
2020/09/02(水) 13:08:08.39ID:YtNHOpgs
>>507
VSで、MFCのプロジェクトを新規作成すれば、HelloWorld的な
アプリは出来ているのだから、>>495で入門することも可能なはず。
今のMFCと違いがあるなら、それをGoogle検索で調べる。
たとえば、#includeされているヘッダファイルの名前が違っていると思ったら、
二つのファイル名とMFCというキーワードを半角スペースで区切って入れて、
英語モードのGoogleで検索すれば出てくる。
英語モードで検索して出てきたページを、Chromeの右クリックメニューで
出てくる日本語翻訳機能で日本語にして読み、意味が分かりにくければ、
URL欄の右隣に有るボタンから英語に戻して、辞書を引きながら読めばよい。
0524デフォルトの名無しさん
垢版 |
2020/09/02(水) 15:26:47.53ID:2IzEXmVe
>>522
VS2019のウィザードを使うとかなり大層なアプリが生成されるぞ
Hello world的なアプリってどうやって生成するんだ?
0525デフォルトの名無しさん
垢版 |
2020/09/02(水) 16:27:22.64ID:Wngy4TOD
>>524
「新しいプロジェクトの作製」で 「MFC アプリ」を選ぶと、「新しいプロジェクトを構成します」が出てくるので、右下の「作製」ボタンを押すと「MFC アプリケーション - アプリケーションの種類のオプション」
のダイアログが出てくるので、

プロジェクト形式: の場所が、デフォルトでは、「Visual Studio」になっているので
「MFC standard」に直す。こうすると、昔ながらの MFC の Hello World アプリになり、
入門サイトなどは大体これが基本になっている。デフォルトのままだと、入門には適さない。

アプリケーションの種類: は、デフォルトのままでも良いが、昔から作りたいものによって、
よく変更されていたものだから、変えて試して見るといい :
・単一のドキュメント : SDI アプリケーション
・複数のドキュメント : MDI アプリケーション (default)
・ダイアログベース : ダイアログベースアプリケーション
0527デフォルトの名無しさん
垢版 |
2020/09/02(水) 16:44:32.58ID:nYKoGcM/
推奨されてないね、太古の昔から
俺が参加したmsuセミナーで既にそう言ってた
0528デフォルトの名無しさん
垢版 |
2020/09/02(水) 17:04:58.98ID:PicHUi2j
いまさらMDI
いまさらMFC
0530デフォルトの名無しさん
垢版 |
2020/09/02(水) 17:45:32.54ID:2IzEXmVe
>>525
VS2019でそれをやってもさほど変わらないのだが?
Hello worldと比べると比較にならないくらい複雑なプログラムが生成される
0532デフォルトの名無しさん
垢版 |
2020/09/02(水) 17:52:02.17ID:Wngy4TOD
>>530
最初にソースを見ると複雑に見えるが、慣れてくるとそんなに複雑ではなく、
>>495 のような解説サイトは、それで理解できるはず。
0535デフォルトの名無しさん
垢版 |
2020/09/03(木) 00:15:47.29ID:fIWixQ3j
>>511
最近だとC++ WinUIに持っていきたい感じはするね
そのためかMSの中でC++の地位が上がってるような気がする
MFCはこのまま廃れていくんじゃないか
0540デフォルトの名無しさん
垢版 |
2020/09/03(木) 05:52:40.39ID:yk4FSoXe
UWPはオワコンだろうがWinRT自体は普通のデスクトップアプリでも使えるはずだしな。
0542デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:04:18.42ID:Ai/K3M0v
今後はWinUI一択だろうね
流行るかどうか次第だと思うけど
C++をまともにサポートしてるのは大きい
0543デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:25:24.02ID:sVY42MJD
fzf をコマンドプロンプトにネイティブ対応したほうがはるかに幸せになれる。
0544デフォルトの名無しさん
垢版 |
2020/09/03(木) 15:54:33.68ID:fIWixQ3j
>541
完全にUWPの時代になるよ
.NET Frameworkが始まった時ってC++がおまけの扱いされてけど、
今回はWindows上にC++のアプリ作ってもらおうとしてる感じがする
乗り遅れるなよ
0546デフォルトの名無しさん
垢版 |
2020/09/03(木) 20:29:01.39ID:fIWixQ3j
方向転換したことに気付かないままMFCを使い続ける人も多いだろう
情報を拡散する人がいないのかな
0549デフォルトの名無しさん
垢版 |
2020/09/09(水) 16:47:17.22ID:MbQfEtJP
WindowsのC++開発環境

Win32 : 情報はそこそこあるけど扱いが面倒
MFC : 今から勉強すると時間をドブに捨てる可能性あり
C++/CLI : 死亡
C++/CX : 死亡
WRL : 死亡
C++/WinRT : MSはこれを推奨しているが、UWPの開発環境なので人気なし
0551デフォルトの名無しさん
垢版 |
2020/09/09(水) 19:56:59.87ID:eJCpqUcY
いくらMFCの設計がいまいちだからといってもさすがに素のwin32でGUIやる方がよっぽど時間の無駄だわ。
けっきょくC++だと消去法でMFCになるんだよな。
0553デフォルトの名無しさん
垢版 |
2020/09/09(水) 20:21:09.51ID:XZ4eRuJ2
今ならより軽量なWTLって手もある。MFCはC++コンパイラのtemplate対応が不十分だった時代の遺産だから。
0556デフォルトの名無しさん
垢版 |
2020/09/09(水) 20:52:30.25ID:XZ4eRuJ2
Win32は古典のようなもんだからWindowsアプリ開発初心者なら少しはやっておかないと。
ほんの少しでいい。電話帳を暗記する必要ないのと同じだから。公衆電話のかけ方を学ぶ感じ。
0557デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:23:11.56ID:6BCsKsVr
>>552
Win32 の WM_KEYDOWN が、MFC の OnKeyDown
Win32 の WM_CHAR が、MFC の OnChar
Win32 の WM_SIZE が、MFC の OnSize
Win32 の WM_PAINT が、MFC の OnPaint() や OnDraw()
Win32 の WM_CREATE が、MFC の OnCreate()
Win32 の WM_DESTROY が、MFC の OnDestroy()
に対応しているので、Win32 の知識は、MFCとほぼ対応している。
その上で、VSのIDEの機能がMFCの方が10倍有って、開発効率は格段に上がる。
0558デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:25:27.57ID:6BCsKsVr
>>557
他にも、
WM_LBUTTONDOWN が、OnLButtonDown()
WM_MOUSEMOVE が、OnMouseMove()
WM_NCPAINT が、OnNcPaint() または、OnNcDraw()
に対応している。
WM_COMMANDは、OnCommand()も有ったかも知れないが、
メッセージマップと言う仕組みで、IDEと組み合わせてもっと効率よく
ハンドラを作製できるようになっている。
0559デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:28:56.62ID:6BCsKsVr
>>549
Win32より、MFCの方が後発で、C++でWindowsアプリを作るには、後者の
方が定番で、開発効率も高い。
MFCは未だに改良が進んでいる。
たとえば、ドッキング、自動レイアウト関連、リボンなどは、Win32にはなく、
MFC独自。
また、Windowsアプリらしいアプリは、Win32より、MFCの機能を使っている。
商用やプロが作るnativeアプリは、ほとんどがWin32ではなくMFC製。
0560デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:36:29.29ID:MqfHYfA6
>>553
軽量かもしれんがWTLも全然お手軽ではない
何十年も期間はあったのにMFCの代わりにATL/WTL使うようにはなってない
0561デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:40:13.06ID:MqfHYfA6
ってかこんな書き込みあるスレじゃなかったけど
なにが紛れ込んだんやろか?
ATL/WTLのスレは2年ほど書き込みないがあっちが正常やで
0562デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:49:28.18ID:MbQfEtJP
>>559
自分の場合、MFCを始めようとしても何から始めればいいのか分からないし、もはやMFCをちゃんと解説した本もない。勉強する時間もない。
Win32の方がある意味わかりやすい。オブジェクト指向ではないので、クラス構成を把握する必要もない。小規模な開発なら何とかなると思う。
0563デフォルトの名無しさん
垢版 |
2020/09/09(水) 21:54:12.58ID:L9rnU3We
今からだと WTL/ATL の情報はあまり拾えないのでは

wxWidgets のようなクロスプラットフォーム狙うか、
いっそ C++ から離れるか
0564デフォルトの名無しさん
垢版 |
2020/09/09(水) 22:08:55.04ID:XZ4eRuJ2
>>561
最後に書き込んだの私だった(笑)

324 自分:デフォルトの名無しさん[] 投稿日:2018/12/02(日) 09:05:18.31 ID:pHBSzoap
最近、頻繁にWTL10のmasterブランチが更新されているね。
https://sourceforge.net/p/wtl/git/ci/master/tree/
0566デフォルトの名無しさん
垢版 |
2020/09/10(木) 02:25:17.80ID:h1l1ZP9+
>>562
MFCの場合、まず、IDEを使って、MFCプロジェクトを作るところから始める。
後は、Menuリソースに1つメニュー項目を追加して、それに対するハンドラを作成し、
中でAfxMessageBox()などを使って、ハンドラが呼び出されるのを確認する。
画面は、OnDrawの中でpDC->MoveTo(), pDC->LineTo()で直線を描いてみる。
それが出来たら、さっきのハンドラの中で、Invalidate()を呼び出すテスト。
Invalidate()を呼び出すと、メッセージがメッセージキューにたまりまくっている
場合以外は、比較的即座にOnDraw()が呼び出される。
それで色々いじって試してみるといい。
0567デフォルトの名無しさん
垢版 |
2020/09/10(木) 06:03:07.80ID:zeENOEPq
そもそも、もうWindows専用アプリを新しく作る事自体、ほとんど需要ないだろ・・
だから、メインとしてAndroid/iOS向けに開発したクロスプラットフォーム向けのアプリで
Windows向けもビルドできるというおこぼれをもらうしかない。
0569デフォルトの名無しさん
垢版 |
2020/09/10(木) 07:10:35.50ID:wdhKSMlq
>>554
いや、そんなでもないよ
Win32の手順や概念をクラス化なんて秒殺でできるからな
普通にCで書いてる感覚でクラス化したほうがいいところがあればひょいと
んで、毎度おなじみのコードが出てきたら再使用できるように括り出しておく
それだけのことで非現実的というほど大変なことではない
0570デフォルトの名無しさん
垢版 |
2020/09/10(木) 07:14:58.32ID:cx/3z2qx
Windowsアプリの需要がないって話はエンドユーザー向けパッケージソフト市場しか見てないんじゃないかな。
0571デフォルトの名無しさん
垢版 |
2020/09/10(木) 07:39:42.50ID:zeENOEPq
ごめん。そうだな。一般消費者向けの事しか考えてなかった。で、それ以外向けのWindowsアプリの需要はどれくらいあるのか知らんが。
0572デフォルトの名無しさん
垢版 |
2020/09/10(木) 11:03:35.58ID:QWaq+avL
CADツールとかオープンソースのもいれたら
いまだに新しいものが出てきてるからね
Webだとパフォーマンス出ない分野のツールはまだまだ有効
0573デフォルトの名無しさん
垢版 |
2020/09/10(木) 11:12:12.76ID:YCiClA3r
本板のWin32API質問箱スレがいまも活発であることがすべてを物語っているね。
0574デフォルトの名無しさん
垢版 |
2020/09/10(木) 12:25:31.10ID:ypm5ktrY
MFC とか、Jeffrey Richter とか、何十年前の話

今でも、医療用・産業用ソフトなどは、Windows 限定かも
0576デフォルトの名無しさん
垢版 |
2020/09/10(木) 12:42:04.34ID:PEh+sMxn
一太郎やPowerDirectorは、今でもMFCアプリだな
昔から大して変わっていないとも言えるが
0577デフォルトの名無しさん
垢版 |
2020/09/10(木) 14:48:35.32ID:h1l1ZP9+
MSがOfficeやVisioみたいなもので、大半の需要を独り占めしてしまっているので
desktopアプリを食っていくために作ることが難しくなった。
MSが手を出してない分野では、ぎりぎりなんとかなっていることもある。
でも2DグラフィックはAdobe、3DはAutoDeskなんかが強い。
最近は、3Dは、OSSのBlenderもあるから生半可には参入できないが。
0578デフォルトの名無しさん
垢版 |
2020/09/10(木) 14:52:02.07ID:h1l1ZP9+
でも、たとえ、有名ソフトと「かぶっていても」、欲しくなるソフトはある。
でも、有名ソフトが無料化してる場合は辛い。
本等は、完全なダンピングだから、法的な取締りの対象にならなければならないのだが。
Visual Studio Communityはダンピングだから、罰するべきだ。
0581デフォルトの名無しさん
垢版 |
2020/09/11(金) 14:33:21.36ID:TREPbbxK
Win32は非効率というが、自分には一番理解しやすかった。
C言語なので、Windowsの知識がなくても地道に積み上げながら理解できる。

他の開発環境だとC++クラスライブラリなので、クラスの役割の全体像を把握するまで何もできない。しかもWindowsの前提知識が必要。
0582デフォルトの名無しさん
垢版 |
2020/09/11(金) 14:58:07.59ID:Pv6SYq8F
>>581
実は、MFCは、Win32の知識がないと深く理解できないので、
MFCを理解するのは、意外と難しい。
しかし、IDE(VS)の支援を豊富に受けられるのはWin32ではなくMFC。
1. メニューリソースをVisual的に作った後、MFCだとハンドラ関数を自動的に作れる。
 BEGIN_MESSGE_MAP()〜END_MESSAGE_MAP()の中に、
 ON_COMMAND()やON_UPDATE_CMD_UI()みたいなものを自動的に入れてくれて、
 対応する関数の雛形を、*.cppと*.hの両方に生成してくれる。
 Win32でこれに相当する作業を手作業でするのはとても効率が悪い。
2. OnSize, OnLButtonDown, OnMouseMove, OnChar, OnKeyDown
 などのハンドラも、ClassWizardなどから効率よく自動生成できる。
 これも、Win32でこれに相当する作業を手作業でするのはとても効率が悪い。
0584デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:04:18.58ID:Cxw4gZ+X
俺はこんなだった
win32: Petzoldの本で1ヶ月
mfc: msuセミナーで2週

win32は少しでもかじってれば、あやふやでもmfcは何とかなる
0585デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:09:34.01ID:xLNh1C0u
Win32API
Cの理解が先に出来てたから
イベントドリブンとかメッセージループとか
典型的な描きかただけなら1日で充分理解出来た
全体理解なんて今でもムリポ

MFCも秒
C++とWin32APIを理解してたらそもそも勉強の必要すら無い
0586デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:09:39.60ID:GJKjt1p6
>>583
何を持って習得と言うかわからないが、
1. HelloWorldは、IDEが作ってくれる。
2. Menu項目の作り方と、ハンドラの作り方は、ネットで検索すると
 解説されたものがいくつかあるはず。
3. OnDraw()の中の書き方は、Win32のGDIとCとC++の書き方程度の違い
 で、基本的に変わらない。
4. WM_LBUTTONDOWNとOnLButtonDown()などは一対一に対応しているだけで、
 Win32と同じ。
5. Dialogのデータ交換DDEは、チュートリアルを読まないと難しい。
解説サイトを読むのは人によるが、速い人は20分とかでも読めるのではないか。
0587デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:11:21.83ID:GJKjt1p6
>>585
MFCは、習得すれば効率は良いが、IDEとの連携を習得するのに時間が掛かる。
IDEは、かなり使い込んでも、知らない機能は多い。
0589デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:46:49.13ID:TREPbbxK
>>585
>C++とWin32APIを理解してたらそもそも勉強の必要すら無い

俺はVS2019が新規作成で生成した複雑なプログラム(VS2019はHello worldを生成しない。いきなり複雑なものを生成する)を見て途方にくれたがなー
何から始めればいいのか全く理解できない
0591デフォルトの名無しさん
垢版 |
2020/09/11(金) 17:14:10.08ID:GJKjt1p6
>>589
MFCプロジェクトを作る際、「Visual Studio」となっているところを、
「MFC Standard」に変えれば MFC の Hello Worldが出来るぞ。
0594デフォルトの名無しさん
垢版 |
2020/09/11(金) 18:06:29.86ID:Cxw4gZ+X
mfcは単純にwin32の極薄ラッパーかというとそうでもない
ドキュメントビューとかシリアル化、DDX/DDVなんてのは独自の概念だ
0595デフォルトの名無しさん
垢版 |
2020/09/11(金) 19:04:14.74ID:Y8ERPbJh
MFCを新たに勉強するのが無理とか言っているような人は他のどの開発環境・
言語でも使えるようになるのは無理だろうし、プログラミングに限らず何をやっても
ダメな人間だと思う。
0597デフォルトの名無しさん
垢版 |
2020/09/11(金) 19:33:09.27ID:TREPbbxK
>>593
少なくともHello Worldは表示できなかった
非常に複雑なものが生成された

>>595
今まで組み込みのプログラミング(電子回路と測定器の知識必須)をしてきたけど、C/C++でずっと仕事をしてきたし、仕事もちゃんとできているよ。
どうしてMFCができないと仕事ができないの?
Windowsだけがプログラミングなの?

ただ急にWindowsでプログラミングをしないといけなくなって困っているだけだが?
組み込みのプログラミングと違ってフレームワークが全てを支配するというのが苦手なので仕方がない。
0598デフォルトの名無しさん
垢版 |
2020/09/11(金) 19:50:12.24ID:+RJnbz7u
>>597
プログラマがすべてを把握する責任を負わなくていい。それがフレームワークの恩恵。
WindowsだろうがmacOSだろうがスマホだろうがこれは同じ。
0599デフォルトの名無しさん
垢版 |
2020/09/11(金) 20:10:36.37ID:GJKjt1p6
>>592
できた結果を書いている。
Hello Worldというのは、なにも、Hello Worldと表示するプログラムの事を
意味しているわけではなく、最初に学習し易いサンプルの事だぞ。
0600デフォルトの名無しさん
垢版 |
2020/09/11(金) 20:10:37.20ID:GJKjt1p6
>>592
できた結果を書いている。
Hello Worldというのは、なにも、Hello Worldと表示するプログラムの事を
意味しているわけではなく、最初に学習し易いサンプルの事だぞ。
0601デフォルトの名無しさん
垢版 |
2020/09/11(金) 20:14:22.27ID:GJKjt1p6
>>597
ちゃんと「Standard MFC」に変えた場合、
Hello World という文字は表示されないが、MFCにとっては、それ以上減らせない
程度にシンプルなサンプルが作製される。
オイラもアセンブラでプログラムしていた口だから、人が勝手に用意した
型枠を使うのは余り好きではなかったし、気持ちは分かる。
しかし、MFCでは、原則的にはあれ以上は減らせない。
0602デフォルトの名無しさん
垢版 |
2020/09/11(金) 20:39:40.32ID:+RJnbz7u
開発環境が勝手に作った数々のファイルに埋もれてしまう体験は、なにもMFCに限った話じゃないだろう。
0603デフォルトの名無しさん
垢版 |
2020/09/11(金) 20:49:11.08ID:+RJnbz7u
Hello Worldの問題点は、出力しか試せないところだね。
ユーザーからの入力がプログラムに反映されるところまで試さないと
プログラマとしてはひと安心できないはず。
0605デフォルトの名無しさん
垢版 |
2020/09/11(金) 21:20:39.55ID:DA1blzOi
SDI形式で、ドキュメント・ビューの仕組みは使わない方が、よりわかりやすいとは思うけどな
0606デフォルトの名無しさん
垢版 |
2020/09/11(金) 21:27:53.38ID:+RJnbz7u
C#でアプリを作ろうものなら、意味不明なXMLファイルが一緒に生成される気持ち悪さに耐えなければならない。
気持ち悪いのはMFCだけじゃないってこと。こういうもんだと慣れるしかない。
0607デフォルトの名無しさん
垢版 |
2020/09/11(金) 22:50:01.30ID:3mrNom4D
C# も普通のテキストエディタと csc だけ使えば
hoge.cs と hoge.exe しか造られないからすっきり
0608デフォルトの名無しさん
垢版 |
2020/09/16(水) 14:43:10.77ID:3ja5x8/R
CrystalDiskMark はMFC採用で独自コントローラー(Project Priscilla)まで実装しとる
MFCバリバリ現役じゃん
0609デフォルトの名無しさん
垢版 |
2020/09/16(水) 15:11:51.04ID:zy/NdAsc
ライブラリの新旧だけで優劣だと思っちまう
浅はかなやつってライブラリで仕事してる人の
苦労が何も解ってないんだろうな
0610デフォルトの名無しさん
垢版 |
2020/09/16(水) 15:43:04.37ID:wZC9/K7G
MFCの衰退を見守るスレ
MFCの最期を暖かく見送るスレ
MFC利用者をdisるスレ
0611デフォルトの名無しさん
垢版 |
2020/09/16(水) 17:39:55.40ID:ZQue+HKY
必死に現役アピールするからおもちゃにされてしまっているw
0614デフォルトの名無しさん
垢版 |
2020/09/16(水) 18:56:19.61ID:g8ss57Sd
良くない側面も持っているが、C++でWindowsプログラムをしようと思ったら、MFCが一番良い選択肢だと思う。
0615デフォルトの名無しさん
垢版 |
2020/09/16(水) 18:57:29.78ID:g8ss57Sd
仮にMFCを使わないとなると、VisualStudio を使うとなれば、Win32とC#しか選択肢がなくなる。
それは困る。
0616デフォルトの名無しさん
垢版 |
2020/09/16(水) 19:28:09.07ID:ZQue+HKY
他にもあるだろw
0618デフォルトの名無しさん
垢版 |
2020/09/16(水) 20:01:26.47ID:ZQue+HKY
もっと情報収集しよ?

こんなんだからMFCじゃなくてMF爺って呼ばれてるんだぞ
0624デフォルトの名無しさん
垢版 |
2020/09/17(木) 12:47:47.90ID:OW2OZx8D
Visual Studio で造れるもの
Tcl/Tk
wxWidgets
Qt
その他
0625デフォルトの名無しさん
垢版 |
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クラスのせいで自由にレイアウト変更できないの?
0626デフォルトの名無しさん
垢版 |
2020/09/23(水) 14:13:15.44ID:YfY3TQQ4
>業務

ωωω
0627デフォルトの名無しさん
垢版 |
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章 デバイスコンテキスト
0629デフォルトの名無しさん
垢版 |
2020/09/23(水) 15:45:17.15ID:wtMA3RXJ
>>628
この本は、ちゃんと、1つの章を割いているので、別の本のことかと思った。
そもそも、MFCのSDI/MDIは、そんなに高機能ではないので、質問者は勘違いしている
かも知れない。
MFCは、ダイアログベースにすると、割とIDEの機能が強く働いて、
C#のWinFormsと似たようなポトペタ的なプログラミングに近くなるが、
SDI/MDIは、メニュー以外には余り支援が無い。
SD/MDIでも、ダイアログを使えば、ポトペタ的になる。
というか、「Win32 Control」と呼ばれているものは、もともと、
ダイアログに入れた場合にちょうどよく機能するように設計されている。
だから、「ダイアログリソース」なるものがあるが、それ以外では、
独自に全て座標やサイズを指定して出すしかない。
0630デフォルトの名無しさん
垢版 |
2020/09/23(水) 15:49:14.69ID:wtMA3RXJ
>>629
普通、どのアプリを見ても分かるが、メインメニューとツールバーがあり、
一行のテキストフィールド(EditBox)や、ボタン、チェックボックス、
コンボボックスなどは、全てダイアログの中に収められていることが多い。
だから、SDI/MDIアプリも、IDEの支援は、ダイアログ以外は、
メニューとツールバーが中心で、後は関数の作製・削除、検索、置換、
デバッグなどに限定される。
というわけで、SDI/MDIプログラムを学ぶと言っても、ポトペタ的な
ものは、ダイアログの部分を学べばよいだけ。
そしてそれに関係するのが、ダイアログデータエクスチェンジ(DDE)。
0631625
垢版 |
2020/09/23(水) 16:22:00.82ID:L2u4imFE
>>629-630
625です。
その本を立ち読みしたのですが、SDI/MDIの部分は本当にペラペラです。

ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?

個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
最悪、Win32で作るしかないとは思っていますが。
0632デフォルトの名無しさん
垢版 |
2020/09/23(水) 17:53:31.35ID:YfY3TQQ4
wxWidgets
0633デフォルトの名無しさん
垢版 |
2020/09/24(木) 09:52:03.03ID:ipSsIIJF
>>631
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から
サンプルとして利用できるプロジェクトが作られる。
Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに
分からない部分をネットで検索して調べるのが基本。
全くサンプルが無いと作るのはほとんど不可能な場合があり、
「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても
過言ではない。
0634デフォルトの名無しさん
垢版 |
2020/09/24(木) 09:58:05.46ID:ipSsIIJF
>>631
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
>自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ
は、言語が違うだけで理念はほぼ同じ。
しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。
「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、
SDI/MDIアプリでも生かせる。
SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ
と同様の作法が使えるから。
ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
0635625
垢版 |
2020/09/24(木) 12:34:17.45ID:CT30hZB8
>>634
>ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。

CTreeViewは知っているけど、VSが生成したプログラムにどうやって入れるのかがわからないんですよ。
検索してもちっとも出てこない。英語で検索しても出てこない。
日本語でも英語でもダイアログベースの解説しか出てこないので、ツールボックスからツリービューをダイアログにドラッグ・ドロップしてしか出てこない。
こんなのじゃ役に立たない!
0636デフォルトの名無しさん
垢版 |
2020/09/24(木) 12:49:59.87ID:J7wU0H86
>>635
VSが生成する前のアプリケーションウィザードのところで
基本クラスをCViewからCTreeViewに変更できる
0637625
垢版 |
2020/09/24(木) 13:35:34.64ID:CT30hZB8
>>636
できましたけど、VIEW/DOCモデルを選択した時しかできないですよね。
VIEW/DOCモデルを使うと、ファイル読み込みと書き込みの対称関係が強制されるので、これも困るというか。
自分が作りたいアプリは、メモリに絶対入らない巨大なファイルを少しずつ処理してエクスポートするものなので、読込・保存の概念がない。
やはりMFCは使わない方がいいのだろうか。Win32にした方がいいかもしれない。
どうしてMFCはWin32みたいに部品を組み合わせていくように作れないのだろう。
0638デフォルトの名無しさん
垢版 |
2020/09/24(木) 13:52:29.54ID:0BhvwOmc
class設計がタコだから
class library と名乗るのがそもそも詐欺
ただの win32api wrapper あるいは劣化版
0639625
垢版 |
2020/09/24(木) 14:08:51.69ID:CT30hZB8
>>638
それは一般的な見解なのでしょうか?
ここだと「Win32は手間がかかりすぎる。MFCにしないとだめ」的な書き込みも多々見かけるので混乱します。
0640デフォルトの名無しさん
垢版 |
2020/09/24(木) 14:30:44.47ID:J7wU0H86
>>637
別に、ドキュメント/ビューの仕組みを使ったら
ファイル全体をメモリ上に読み込まないといけないわけではないけど、
そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、
内部の仕組みを理解する必要が出てくる。

ドキュメント/ビューが抵抗あるなら、使わずにSDIを作成して、
CChildViewの中にCTreeCtrlを載せたりすることもできるけど。
0641デフォルトの名無しさん
垢版 |
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との対応関係が分かる。
0642デフォルトの名無しさん
垢版 |
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だと、自動生成された関数
で処理するので、大規模なアプリの場合、コードが整理される。
0643デフォルトの名無しさん
垢版 |
2020/09/24(木) 14:44:39.87ID:ipSsIIJF
>>637
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて
MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。
それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて
通れないこともある。
基本的には、フレームワークが想定しているファイルオープンの概念を、
如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。
最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている
かが分かるので、「安全に無視する方法」を探るといい。
0645デフォルトの名無しさん
垢版 |
2020/09/24(木) 15:35:28.03ID:A/uKUrmH
>>640-644
うーむ・・・
結局、MFCが提供する仕組みを無視しないと自由にプログラムを組めないのか。
しかも安全に無視するにはMFCの仕組みを熟知しないといけないと。
そんなこと組込一筋の自分にはできそうにないなあ。
今作りたいプログラムを作ったらMFCを使うことは二度となさそうだし、やはりMFCは回避するべきだろうか・・・
頭痛いよ
0646デフォルトの名無しさん
垢版 |
2020/09/24(木) 15:40:13.30ID:ipSsIIJF
>>645
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、
それを守っても余り良いこと無いので、無視してよい、ということ。
なにも、アメリカ人の考えた思想に従う必要は無いのだから。
その当時の彼らはそれが理想だと考えたかも知れないが、それも
どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。
0647デフォルトの名無しさん
垢版 |
2020/09/24(木) 15:50:00.97ID:n05mXSO9
>>645
いやいや、別に邪道なことをしているわけではない
Docを使う/使わないを任意に選べるようになっているというだけ
0648デフォルトの名無しさん
垢版 |
2020/09/24(木) 16:08:29.20ID:0BhvwOmc
>>645
無駄に覚えることが増えるし
しかもバッドノウハウで
他に何の役にも立たん
深入りする意味が無い
0649625
垢版 |
2020/09/24(木) 16:14:40.31ID:CT30hZB8
>>646-647
>>640に「そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、内部の仕組みを理解する必要が出てくる。」と書かれているので、難しいはずです。簡単に無視できないはず。

そもそも組み込みの技術者なので、PCのプログラミングは「ついで」的にしないといけない。
PCのプログラミングに力を入れると評価が下がってしまう。
そうなると知識量が必要なMFCは避けないといけない。やはりWin32にするべきか。

>>648
バッドノウハウ=MFCってことですか?
0650デフォルトの名無しさん
垢版 |
2020/09/24(木) 16:33:16.74ID:n05mXSO9
>>649
> SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
こう言ってた人が

> PCのプログラミングに力を入れると評価が下がってしまう。
> そうなると知識量が必要なMFCは避けないといけない。やはりWin32にするべきか。
こう言い出す意味がよくわからんのだが

組み込みが本業の人がMFCを何に使うんだろう
基板から送られてくるデータを可視化とか?
シミュレーションや回路設計は専用ソフト使うだけだし
0651625
垢版 |
2020/09/24(木) 16:40:57.87ID:CT30hZB8
>>650
要は力を入れないで業務で使えるGUIのプログラミングをしないといけないということです。
何も分かっていない上司に言われてやっているので、仕方がないのです。

>組み込みが本業の人がMFCを何に使うんだろう

企業秘密なので、詳細は書けない。
データの可視化の一種と言っておく。
0652デフォルトの名無しさん
垢版 |
2020/09/24(木) 16:49:31.37ID:ipSsIIJF
>>651
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。
それをいじくれば、TreeViewは制御できる。
後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。
0653625
垢版 |
2020/09/24(木) 16:50:34.31ID:CT30hZB8
個人的にはGUIは不要だと思っているのですけどね。
現場で働く派遣社員や外注などのレベル低下でCUIのツールが受け入れられなくなっているってだけでGUIのプログラミングをやるはめになった。
0656625
垢版 |
2020/09/24(木) 16:56:46.90ID:CT30hZB8
>>655
それは上司にダメって言われたんですよ
0657デフォルトの名無しさん
垢版 |
2020/09/24(木) 17:07:39.97ID:n05mXSO9
いちおーSDI用のスケルトンを使って
内容的にはダイアログベースなやつにするとか
ログを記録したり終了時に使用状態をファイルに記憶させるのにDoc使いましたよって
0658625
垢版 |
2020/09/24(木) 17:26:50.28ID:CT30hZB8
>>657
そこまでは知識不足で判断できません。
どちらにしても>>640の言うように使わない機能を無視するのも簡単ではないようですが。
0659デフォルトの名無しさん
垢版 |
2020/09/24(木) 18:13:53.22ID:luF9hMVl
ダイアログベースがダメだと言うなら、>>640の言うように、
Doc/Viewを使わないSDIで、CChildViewに処理を全部入れてしまうのが一番シンプルでは?
0660デフォルトの名無しさん
垢版 |
2020/09/24(木) 18:19:58.65ID:VqYlbH9U
>640の前段は「ドキュメント/ビューの仕組みを使ったら」だ
ドキュメント/ビューを一切使わないのは簡単
使わないだけ

ダイアログにメニューも普通に付く
「ダイアログ メニュー」でggr

そんなにWin32API直でやりたいならそうすればいいけど
どっちにしろ、猫でものWindows SDK編でも一通りやっといた方がいいよ
MFC使うにしても、「ドキュメント/ビュー」とかのMFC独自のとこ以外は
よく言われるようにWin32APIの薄いラッパだから
0661625
垢版 |
2020/09/24(木) 18:59:32.67ID:CT30hZB8
>>659
そこまで判断する知識はまだなくて

>>660
>ダイアログにメニューも普通に付く

そんなことが可能なのですね。
https://www.kazetest.com/vcmemo/dialogmenu/dialogmenu.htm
それならダイアログベースでも可能かもしれません。

Win32についてはそこである程度勉強したのですが、部品を組み立てるような感覚で自由にできるので、下手にMFCに手を出すよりはマシかと思ったわけです。
0662デフォルトの名無しさん
垢版 |
2020/09/24(木) 19:15:13.93ID:ipSsIIJF
>>658
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。
勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。
Doc/Viewモデルを使うとしても、
CDocument::OnOpenDocument(const char *pszFilename)
が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に
データを読み込めばよい。
CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、
CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。
本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、
好き放題出来る。
0665デフォルトの名無しさん
垢版 |
2020/09/24(木) 20:48:36.72ID:anZxJGRt
>>641
単一ドキュメント複数ビューはできないわけじゃないよ。
DocTemplateを派生させる必要があるというだけ。
0666デフォルトの名無しさん
垢版 |
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で売ってるから上司に頼んでこれ買ってもらえ
0667デフォルトの名無しさん
垢版 |
2020/09/24(木) 21:20:33.40ID:qMR+aI5t
>>641
> 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
CDocumentには、UpdateAllViews()という名前の関数があるように、
複数のビューを関連付けられるぞ。

>>662
わざわざDoc/Viewを選んでおいてDocクラスを放置するくらいなら、
印刷プレビューでも使わない限り、Doc/Viewを使わない形式で
CMainFrameとCChildViewだけを使うほうが楽だと思うけどな。
0668デフォルトの名無しさん
垢版 |
2020/09/24(木) 21:45:13.19ID:bZ1sVv66
SDIでもCFromViewしか使ったことないナ
0669デフォルトの名無しさん
垢版 |
2020/09/25(金) 00:33:44.17ID:mGml3uVc
MFC は、数十年前w
Jeffrey Richter とかの時代

Win32 API を、クラスにまとめたもの。
メニューバーも作れる

MFCって、まだ存在するのか
0670デフォルトの名無しさん
垢版 |
2020/09/25(金) 00:48:06.02ID:nCkagqzh
WindowsでC++とVisual Studioを使ってデスクトップのプログラムするなら、
今でもMFC以外の選択肢はほぼ無いはずだが、
0671669
垢版 |
2020/09/25(金) 02:04:10.72ID:mGml3uVc
かんたん Visual C++[改訂2版]、堀義博、2017

この本では、.net か、managed C++ か、interop か何かを使っていた。
でも結局、このやり方も、流行らなかったのか

MFC ではなかった気がする
0672デフォルトの名無しさん
垢版 |
2020/09/25(金) 09:17:50.44ID:nCkagqzh
>>667
> > 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
>CDocumentには、UpdateAllViews()という名前の関数があるように、
>複数のビューを関連付けられるぞ。

スマソ。記憶違いがあった。
1つのDocに対して複数のViewは、一応は関連付けられる。
しかし、それはどれも1つのCFrameWndの中に入れておかないといけなくなって
しまっているため、WzEditorの「テキストの二重化」のように、
1つのテキストファイルの別の場所を複数のFrameWndの中に表示するという
ようなことが、MFCでは基本的に出来ないハズ。
0673デフォルトの名無しさん
垢版 |
2020/10/16(金) 18:08:33.74ID:wvravRFo
CTreeCtrlクラスでツリー表示の文字色を部分的に変えたいけど、Windows SDKみたいにカスタムドローしないと無理ゲー?
0674デフォルトの名無しさん
垢版 |
2020/11/20(金) 05:11:03.85ID:lrgUTmYU
実際にウィンドウ上に表示している画面をBitmapに画像保存するんじゃなくて、
表示させないで、データだけを元に、連続的に画像保存するってどうやるのかな?

例えば、ボタン1つで、円の位置を連続的に動かしたデータを、
それらをわざわざ画面に表示させないで、連続的に画像に保存したいんだけど、
やり方がわからない。
0675蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/11/20(金) 05:14:55.72ID:7Y8jq4/V
>>674
CreateCompatibleDC(NULL)とCreateDIBSectionだろう。DIBビットマップオブジェクトを作成し、DCでそれを選択し、DCで描画する形になる。
0677デフォルトの名無しさん
垢版 |
2021/01/18(月) 23:31:44.08ID:zaIVxsp1
DialogにCMFCFontComboBoxを張り付け
プロパティの「フォントを使用して描画」をTrueにすると
コンボボックスの行の高さを無視して大きく描画されます。
XX明朝とXXゴシックが縦に重なって描画される感じです。
(ディスプレイ設定で拡大表示している場合のみ)
以前は普通に表示されていた気がするのですが。
良いアイデアがあればお願いします。
0683デフォルトの名無しさん
垢版 |
2021/03/01(月) 23:14:22.24ID:L7jyZAdw
昔あったCFrameWndのLoadBarStateとSaveBarStateは
何に置き換わったのでしょうか?
CMF…系のツーツバーやステータスバーでは保存&復元されないようです。
0684デフォルトの名無しさん
垢版 |
2021/03/26(金) 13:13:22.16ID:zWEWautG
MFCより先進的なGUIフレームワークを使いたいならQtとかwxWidgetsを使えってことなのかねえ?
0687683
垢版 |
2021/06/28(月) 15:55:19.44ID:yWrL1Flg
>>685
レスサンクス
明示的には初期化はしていませんが
CWinApp::SetRegistryKey(...
を呼んでるのでその中でm_pszAppNameがセットされているようです。
0689683
垢版 |
2021/06/28(月) 17:55:27.02ID:yWrL1Flg
解決しました
VS2005で作ったソースをVS2019に移植する際
CWinAppをCWinAppEx
CToolbarをCMFCToolBar
のような作業をやったんだけど
CMainFrameからCFrameWnd::(Exなし)の関数を呼んでたのが原因でした
お恥ずかしい。レスくれた方、ありがとうございました。
0690デフォルトの名無しさん
垢版 |
2021/09/15(水) 12:15:47.57ID:jggBe0Ff
>>684
WinUI 3がネイティブ
XAMLの部分はC++コードになる
0693デフォルトの名無しさん
垢版 |
2021/09/16(木) 22:38:06.15ID:vfYN11/r
bamlになるだけでコードを吐いたりはしないと思うが?.xaml.cs と混同してる?
0696デフォルトの名無しさん
垢版 |
2021/10/30(土) 10:54:38.33ID:MPYyHG36
BCGのほうはダイアログや埋め込みスクロールバーもダークテーマにできるんだよなぁ
0697デフォルトの名無しさん
垢版 |
2022/03/15(火) 08:26:51.33ID:RM1ltBr1
BCGはロシアのセンペテロブルグだったね。
ドル建てで売ってるからウクライナ侵攻の対ロ経済制裁の影響を受けて倒産とかはなさそうだな。
0698デフォルトの名無しさん
垢版 |
2022/03/31(木) 10:44:02.36ID:Jyr8BV0e
>>697
VisaやMasterのカード決済ができなくて、売れないのでは? ロシア国外のWeb
サイトで決済して、ドルをロシアへ送金しようにも、SWIFTからの排除で銀行間
送金もできないし。
0699デフォルトの名無しさん
垢版 |
2022/04/02(土) 21:39:19.21ID:1+ihffDV
>>698
それもそうか〜。次の更新料支払いまで10ヵ月近くあるけど、どうなるのかなぁ。
BCGライブラリはMFCでアプリ作るならやっぱり便利だし、メンテ続けてほしい。
0700デフォルトの名無しさん
垢版 |
2022/04/03(日) 10:10:08.68ID:cIyOxh+4
BCGは次のバージョンでPer Monitor DPIに対応すると予告していて、ちょっと興味ある
0701デフォルトの名無しさん
垢版 |
2022/04/28(木) 07:46:47.14ID:2+PIOWFw
BCGは新バージョンのベータ版アナウンスしたし、経済制裁の影響は大してないのかも。
0703デフォルトの名無しさん
垢版 |
2022/06/01(水) 11:16:30.11ID:ENbHFSWO
マイクロソフト社がフライドチキン業界に進出したらどんな略称になるんだろう?
0706デフォルトの名無しさん
垢版 |
2022/10/26(水) 22:05:25.04ID:IeA8a0h8
MFCで画像閲覧ソフトを作成しています。
ウィンドウのサイズを変更すると画像が消えてしまいます。
なぜなのかさっぱり検討が付きません。

https://ideone.com/Gn0AsK

ウィンドウのサイズを変更したときにOnPain()が呼ばれることは確認済みです。
また、OnPaint()内の
cbmp = CBitmap::FromHandle(m_image);
の部分を
CImage image;
image.Load("画像データ");
cbmp = CBitmap::FromHandle(image);
のように決め打ちで画像データを表示すると画面サイズを変更しても画像が消えません。

なにか良い手はないかご提示宜しくお願い致します。
0707706
垢版 |
2022/10/26(水) 22:08:37.07ID:IeA8a0h8
すいません、環境を書くのを忘れていました。

Windows 10 Home 22H2 (64bit)
Microsoft Visual Studio Community 2019 Version 16.11.20

何卒宜しくお願い致します。
0708デフォルトの名無しさん
垢版 |
2022/10/27(木) 01:28:58.14ID:6HC7kWqW
「mfc onpaint WM_PAINT」で検索してみれば?

MFC とか、こういうのは初心者がやるものじゃない。
たぶん、仕組みを理解するだけでも、10年以上掛かる
0709デフォルトの名無しさん
垢版 |
2022/10/27(木) 03:07:34.48ID:niMWpG44
良い手も何も、そういうものだと思うしかない
OnPaint()で描けばいいだけ
いつウインドウがinvalidateされるのか、アプリケーションプログラマが完璧に把握することはたぶんできないし
しても意味はあまりない
0711デフォルトの名無しさん
垢版 |
2022/10/27(木) 22:03:00.16ID:gaUWFwsd
>>708->>10
レスありがとうございます。

そういうものなのですね。
そういうものだと思って諦めます。
ありがとうございました。
0713デフォルトの名無しさん
垢版 |
2022/10/31(月) 11:29:06.13ID:ENWdRL/8
>>706
そもそも、
cbmp = CBitmap::FromHandle(m_image);
で取得したものを
cbmp->DeleteObject();
で破棄しているのが原因では。

これだと1回目の描画のときにm_imageが破棄されて、
2回目以降は描画されないかと。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況