2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

MFC相談室 mfc23d.dll

1 :デフォルトの名無しさん:2016/09/21(水) 00:20:48.44 ID:OfO+mYkd.net
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

2 :デフォルトの名無しさん:2016/09/21(水) 02:30:56.74 ID:5qi85AkV.net
< `∀´>ニダー

3 :デフォルトの名無しさん:2016/09/21(水) 13:22:08.79 ID:QlBymPtT.net


4 :デフォルトの名無しさん:2016/09/21(水) 13:34:34.78 ID:lqTjg4Df.net
>>1 乙
ここは即死あるんだっけ?

5 :デフォルトの名無しさん:2016/09/21(水) 14:32:51.99 ID:ib8am8Zc.net
1年くらい前から即死しない仕様になってる

6 :デフォルトの名無しさん:2016/09/21(水) 15:00:46.64 ID:DJrsIBwc.net
即死なんて見たこと無い

7 :デフォルトの名無しさん:2016/09/23(金) 17:10:11.66 ID:1AYxo37g.net
ひでぶ

8 :デフォルトの名無しさん:2016/09/24(土) 19:06:33.61 ID:vAKGJfNO.net
いや即死あるぞ
俺が今月立てたスレなくなってる

9 :デフォルトの名無しさん:2016/09/25(日) 15:44:56.16 ID:fXLErY67.net
1000いったんでないの?、、ないかw

10 :デフォルトの名無しさん:2016/09/26(月) 22:01:57.62 ID:TukXLw2X.net
ドトネに負けたのか?

11 :デフォルトの名無しさん:2016/10/11(火) 01:01:55.41 ID:XtQ45pny.net
ネタくれ

12 :デフォルトの名無しさん:2016/10/11(火) 19:51:53.66 ID:XtQ45pny.net
質問しろ〜
なんでも答えてやんぜって思ったら、俺c++できないんだったw

13 :デフォルトの名無しさん:2016/10/15(土) 18:29:48.76 ID:gqlXN5xD.net
そろそろ埋めようぜ

14 :デフォルトの名無しさん:2016/10/17(月) 00:02:34.42 ID:rdSWZXJ7.net
埋め

15 :デフォルトの名無しさん:2016/10/17(月) 16:06:58.50 ID:rrzVlL3A.net
産め

16 :デフォルトの名無しさん:2016/10/17(月) 17:53:44.29 ID:WLzPflAs.net


17 :デフォルトの名無しさん:2016/10/17(月) 18:21:19.26 ID:WLzPflAs.net
そろそろ本気で埋めるか

18 :デフォルトの名無しさん:2016/10/18(火) 13:35:30.77 ID:w7Iv1X0L.net
埋める前に次スレ立ててくれ

19 :デフォルトの名無しさん:2016/10/18(火) 21:44:51.96 ID:ZG7+Cw8s.net
最新のMFCはコンストラクタでメンバ変数初期化サボってるクラスないよね

20 :デフォルトの名無しさん:2016/10/22(土) 20:44:20.18 ID:cpluUqjP.net
過疎ってるな〜

21 :デフォルトの名無しさん:2016/10/26(水) 17:50:00.81 ID:K3buMdl9.net
いつの間にかMFCでもDirect2Dがサポートされてたんだね
ちょっとサンプル見たけどGDIと比べると複雑だな

22 :デフォルトの名無しさん:2016/11/01(火) 21:11:07.99 ID:fAr6l5+l.net
保守

23 :デフォルトの名無しさん:2016/11/03(木) 14:33:38.93 ID:kJS9Zyl0.net
CStdioFile::ReadStringでshiftjisのファイルをバッファに読み込んだんですが、
テキストファイルの内容は「あ」のみ

バッファの内容は
82 00 A0 00
でした。
unicodeなら
30 00 42 00

00 30 00 42
になると思うのですが、なにか勘違いしていますかね?

24 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/03(木) 14:52:47.88 ID:bkzCM1IA.net
>>23
テキストファイルをUTF-16にするか、UTF-8にしてUTF-16に変換する。

25 :デフォルトの名無しさん:2016/11/03(木) 15:09:32.76 ID:s4829peE.net
setlocaleしてないからascii-8bitとして読み込まれたと予想。

26 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/03(木) 15:43:52.99 ID:bkzCM1IA.net
そのテキストファイル、シフトJISになってるぜ

27 :デフォルトの名無しさん:2016/11/03(木) 16:27:10.81 ID:kJS9Zyl0.net
>>25
setlocaleしたら
42 30
となっちゃいました

>>26
そう書いていますが?・・・

28 :デフォルトの名無しさん:2016/11/03(木) 16:40:23.70 ID:s4829peE.net
>unicodeなら
>30 00 42 00
>か
>00 30 00 42

てのがおかしい。

29 :デフォルトの名無しさん:2016/11/03(木) 19:17:37.78 ID:Vul1aP3I.net
盛り上がってきましたw

30 :デフォルトの名無しさん:2016/11/03(木) 19:25:00.47 ID:bkzCM1IA.net
レス番消えてる。。。荒らしか

31 :デフォルトの名無しさん:2016/11/03(木) 19:31:17.07 ID:bkzCM1IA.net
片山ウザい氏ね

32 :デフォルトの名無しさん:2016/11/03(木) 21:26:45.01 ID:HYN+5xRW.net
たしかにマジウゼー

33 :デフォルトの名無しさん:2016/11/06(日) 23:23:45.08 ID:5/z3Ppl4.net
嫌われ者w

34 :デフォルトの名無しさん:2016/11/07(月) 21:17:10.96 ID:71HmpZSZ.net
プロセスが起動した状態で、
ツールバーのツールチップの文字列を取得、変更したいのですが
ちょっと手こずっています。アドバイスお願いします

以下の方法ではツールチップではなくボタン文字列が対象になるようです
TBBUTTONINFO bi = {sizeof(bi), TBIF_STYLE};
m_wndToolBar.GetToolBarCtrl().GetButtonInfo(9999, &bi);
::MessageBox(NULL, bi.pszText, bi.pszText, MB_OK);

以下はまだ使い方がよくわかってないけど目的がちょっと違うように思われます
CToolTipCtrl* tt = m_wndToolBar.GetToolBarCtrl().GetToolTips();
tt->UpdateTipText(...);

35 :デフォルトの名無しさん:2016/11/08(火) 07:56:03.76 ID:Dir9NEfz.net
>>34
動的な変更は、やった事ないけど、このあたりでは?
ttp://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc22/
アプリを普通に作っていれば、取得はボタンのリソースIDと同じIDを持つSTRINGリソース

36 :デフォルトの名無しさん:2016/11/08(火) 22:03:34.52 ID:fDzF2sx9.net
>>35
ありがとうございます

以下で無事できました
http://nsoft.blog60.fc2.com/blog-entry-1875.html

37 :デフォルトの名無しさん:2016/11/16(水) 21:31:23.35 ID:7nJMKxmy.net
ちょっとiconの相談です
MFCでプロジェクト作った際、アプリのicon(IDR_MAINFRAME)にいろんなイメージタイプ
(サイコロ3つ)が作られるけど私は全部設定するの面倒なので32x32 8bit bmpだけ
作って他全部消すようにしてます。皆さんはどうしてます?
いろんな環境に対応するためにあ-いうことしてるのかなーとは思うんだけど..

38 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/16(水) 21:43:12.65 ID:qcIR6hue.net
>>37
アイコンのイメージ作成にはInkscapeを使ってるよ。
お金に余裕があればAdobe Illustrator使えばいいんじゃないかな。
32x32だけだとユーザーに汚い画像を見せることになる。

39 :デフォルトの名無しさん:2016/11/16(水) 22:59:39.33 ID:qcIR6hue.net
>>38
Inkscape(笑) ダセーw

40 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/16(水) 23:02:25.51 ID:qcIR6hue.net
>>39
氏ね

41 :37:2016/11/16(水) 23:54:39.55 ID:7nJMKxmy.net
> 32x32だけだとユーザーに汚い画像を見せることになる。

解像度を変えてのテストはある程度してるけどあまり気になったことないなー
私の想定を超えたデバイスだと汚くなるのかな?Inkscapeは落とした。勉強してみます。
片山博士は大きく&色彩豊かなicon作った後でInkscape使って縮小/減色してるの?

42 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/17(木) 00:07:27.86 ID:TXdVmO9D.net
Inkscapeで256x256ピクセル(Vistaサイズ)にしてから図形を描いてとりあえず保存すればSVG形式ファイルになる。
「ファイル」メニューの「PNG形式でエクスポート」を選べばPNG画像が吐き出される。
それを16x16,32x32,48x4864x64に縮小して、見辛いピクセルを細かく補正してからアイコン作成ソフトに取り込むとアイコンができる。

43 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/17(木) 00:15:30.72 ID:TXdVmO9D.net
Inkscapeは図形の合成などの強力な編集機能があるが、
図形が足りなければワード、エクセルの図形をコピペすればいい。

44 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/17(木) 00:23:23.58 ID:TXdVmO9D.net
時間がないときは文字アイコンだね。1文字をアイコンにするだけで
インパクトあるかもしれない。

45 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/17(木) 00:29:46.37 ID:TXdVmO9D.net
「アンチエイリアス」がかかると、どうしても細部がぼやけてしまう。
小さいアイコンでは、ユーザーにはっきり見えるように微細な加工をした方がいい。

46 :デフォルトの名無しさん:2016/11/17(木) 07:07:34.33 ID:gXcsVs3+.net
片山ueeeeeeeeeeeeeeee

47 :37:2016/11/17(木) 07:08:48.33 ID:0g51nw+9.net
詳しい説明ありがとう

48 :デフォルトの名無しさん:2016/11/18(金) 16:59:51.57 ID:+QqWh5ch.net
片山先生はアイコン一つにも手を抜かないんだな。
お前らも見習うべき

49 :デフォルトの名無しさん:2016/12/20(火) 20:31:33.27 ID:TcHawI4o.net
CListView(LVS_OWNERDATA style指定)で特定の行の選択を禁止したいのですが
LVN_ITEMCHANGINGはOWNERDATAの場合は送られない様です。by msdn
何か良い方法は無いでしょうか。
クリックやENTERを潰すしかないんでしょうか?

50 :49:2016/12/26(月) 20:33:00.82 ID:LBPR2r0v.net
選択禁止は諦めました。
選択された後、近くの行を強制的に選択状態にするようにししたら、あまり違和感がなかったので、これでごまかします。

51 :デフォルトの名無しさん:2017/01/17(火) 18:47:51.47 ID:BjvebHTO.net
CArrayの質問なんですが、

CArray<int> test;
test.SetSize(10);

とやった場合、test[0]〜test[9]までの値は、
0で初期化されていることは、前提として良い動作ですか?

ソースを見たところ、SetSize()で確保したバッファをいったんゼロクリアして、
その後、各要素に対してコンストラクタが呼ばれるようなので、
C++のintのコンストラクタが「なにもしない」という仕様なら大丈夫そうですが。

52 :デフォルトの名無しさん:2017/01/18(水) 20:04:22.77 ID:dWVIY9sh.net
intのようなプリミティブな型にもコンストラクタってあるの?
知らなかった

53 :デフォルトの名無しさん:2017/02/06(月) 23:41:58.25 ID:sJV81fCO.net
MFCでリボンアプリケーション組もうとしてるんですけど、
リボンデサイナでダイアログボックス起動ツールのボタンは
付けられないのでしょうか?
例えばWORDとかでフォントグループの右下にある小さい四角いボタンです。

54 :デフォルトの名無しさん:2017/02/15(水) 15:11:12.80 ID:WDBEc38A.net
MFCでCEditをサブクラス化したいと思うのですがうまくいきません

サブクラス化時にFromHandlePermanetと言う関数が呼ばれてそこでASSERTに引っ掛かってしまいます

MSDNによると「SubclassWindowを呼び出す時、ウィンドウがMFCオブジェクトに結びつけられていないようにしろ」とあります

馬鹿で申し訳ないのですが、ウィンドウがMFCオブジェクトに結びつけられるのはどのタイミングなのでしょうか?
今はCEdit::Create後にサブクラス化を試みています

55 :デフォルトの名無しさん:2017/02/15(水) 15:59:13.06 ID:IaTHaUdU.net
>>53
ああ、あの2ミリ角くらいの小さな四角ね。

56 :片山博文MZ ◆T6xkBnTXz7B0 :2017/02/15(水) 16:57:51.66 ID:sI0w68I3.net
>>54
CEditをダイアログエディタで作成したなら、すでにMFCの管理下にある。
サブクラス化する必要はない。作成したCEditメンバーを使えばいい。

57 :デフォルトの名無しさん:2017/02/15(水) 17:29:15.59 ID:WDBEc38A.net
>>56
ありがとうございます

しかしながらCEditから派生させたクラスをnewを使用して動的に作成しています

newによりインスタンスを動的に作成

Createメンバ関数を呼び出しコントロールを作成

サブクラス化

ASSERT

58 :デフォルトの名無しさん:2017/02/15(水) 17:43:20.32 ID:WDBEc38A.net
途中で送信してしまいました

現状はこんな感じでアサートに引っ掛かってしまいます

デバッガで追うとウィンドウのMAP(?)にサブクラス化対象のウィンドウが既に存在しているとアサートされるようなのですが、このウィンドウマップにどこで登録されるのかが解りません
マップに登録される=MSDNの言う「ウィンドウをMFCオブジェクトに結び付ける」と言うことなのかと推測しています

59 :デフォルトの名無しさん:2017/02/15(水) 17:49:31.94 ID:urFAvqLF.net
その工程ならサブクラス化はいらないはず

でもウィザードを使わずにクラスを作ったら
おまじないマクロがついてこないんじゃないかな

後始末のときにオブジェクト開放が先かウインドウ破棄が先かってのも迷う

60 :デフォルトの名無しさん:2017/02/15(水) 19:18:20.41 ID:WDBEc38A.net
>>59
ありがとうございます

説明不足で申し訳ありません
そもそも何故エディットボックスをサブクラス化したいかというとエディットボックスのコンテキストメニューを改造したいためなのです
エディットボックスにくるWN_RBUTTONDOWNをトラップするため、サブクラス化が必須になっている次第です

61 :デフォルトの名無しさん:2017/02/15(水) 19:36:45.27 ID:sI0w68I3.net
>>60
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/subclsi.html

62 :デフォルトの名無しさん:2017/02/15(水) 19:40:04.43 ID:8VpWPRqB.net
Createするから既存になってしまうんじゃないの?

>>57でいうサブクラス化ってSubclassWindow? SubclassDlgItem?

CEditのサブクラスは時々使うけどSubclassWindow経由では使ってないので
外してたらスマソ

63 :62:2017/02/15(水) 19:46:05.27 ID:8VpWPRqB.net
私がやるのは
https://support.microsoft.com/ja-jp/help/403856
の一番下のやり方。

64 :デフォルトの名無しさん:2017/02/15(水) 19:51:10.47 ID:uPR4+QIT.net
自分でサブクラス化したときはDDX_Controlを削らないとうまく動いてくれなかったような気がする。
正解は知らんが。

65 :デフォルトの名無しさん:2017/02/15(水) 19:57:49.61 ID:IaTHaUdU.net
>>60
mfcは昔やっててもう忘れかけだが
マウスボタンをトラップする程度なら
サブクラス化なんて不要なんじゃないか?

66 :デフォルトの名無しさん:2017/02/15(水) 20:56:19.16 ID:WDBEc38A.net
>>62
ありがとうございます

SubclasDlgItemを使っています
ですがデバッガで追うと結局は内部でSubclassWindowをを呼び出しているのは確認しています

67 :デフォルトの名無しさん:2017/02/15(水) 20:58:48.04 ID:WDBEc38A.net
>>64
ありがとうございます

DDXは使っていません
リソースにエディットボックスコントロールを貼りつけてはおらず、プログラム中でCEditクラスを派生したクラスを動的に作成しています

68 :デフォルトの名無しさん:2017/02/15(水) 21:01:57.77 ID:WDBEc38A.net
>>65
エディットボックスのマウス右クリックはサブクラス化が必要なようです

でも確かになにかコンテキスト〜というメッセージがあったような気もしないでもないのですが…
WEBで調べた限りですと右クリックメッセージをフックしているのしか出てきませんでした

69 :62:2017/02/15(水) 21:37:49.75 ID:8VpWPRqB.net
回答ではなく代替案ですが

1. CEditのサブクラスでOnContextMenuをオーバーライドしてメニュー処理を記述。

2. https://support.microsoft.com/ja-jp/help/403856
  中の
  また、CDialog::DoDataExchange() で DDX を使用して..
  のやりかたで CEditをCYourEditに変更。

で独自のコンテキストメニューは出ますよ。

70 :デフォルトの名無しさん:2017/02/15(水) 21:47:42.01 ID:WDBEc38A.net
>>69
おおおお!!!
ありがとうございます!

早速試してみます!




と思いましたが、今日はもう事務所が閉まるそうです…
早速明日試してみます!
ありがとうございました!

71 :デフォルトの名無しさん:2017/02/20(月) 02:48:59.49 ID:oIbcE82M.net
明日もあさっても過ぎたんだけど、どうなったんだろうね。

72 :デフォルトの名無しさん:2017/02/22(水) 11:13:17.19 ID:T1tKwjPz.net
事務所をロックアウトされて入れません

73 :デフォルトの名無しさん:2017/02/27(月) 15:33:23.44 ID:APOfiEEu.net
>>71
これは失礼しました
解決しましたのでご報告致します

結果的にはサブクラス化出来ました
動的にCEditを生成した際、実際のコントロールをCriateメソッドで生成すると思いますが一旦生成してしまうとサブクラス化できないようです

CMyEdit pualic CEdit として派生
CMyEdit lpCMyEdit = new CMyEdit;
lpCMyEdit->SubclassWindow(...←ここでサブクラス化
lpCMyEdit->Crate(...←コントロール作成

上記の手順でサブクラス化できましたのでWM_CONTEXTやWM_CHARに対してメッセージトラップが可能になりましたので全て実現できました

MFCのいう、ウィンドウの関連付けというのは恐らくコントロール作成時にWindowMapというMFCのクラスに登録されることかと思われます

改めて色々と相談に乗っていただき有り難うございました
また何かありましたら質問させて頂きます

>>72
間一髪間に合いました

74 :デフォルトの名無しさん:2017/02/27(月) 15:36:16.33 ID:APOfiEEu.net
>>73
誤字が…多かったです、すみません

75 :デフォルトの名無しさん:2017/03/02(木) 18:53:27.03 ID:5095SEQp.net
>>73
リソースにエディットがないのに、SubclassWindow()を呼び出したって…
一体何をサブクラス化したんだろう…

リソースにエディットがなければ Create() だけでいい

リソースにエディットがあるなら SubclassWindow() だけでいい
(この場合は、69さんの2のやり方が普通だと思う)

76 :62:2017/03/02(木) 19:31:25.20 ID:icVxeh77.net
改めてよく読んだらおかしいねw
SubclassWindowのパラメータに何を渡したんだろう
本人が解決したって言ってるんだから別にいいけど

77 :デフォルトの名無しさん:2017/03/02(木) 19:58:19.05 ID:i8opxKVO.net
>>75
MFC使い方がよくわかってなくて混乱させているようで誠に申し訳ないです…

CEditをnewにて動的に作っていますのでリソースは一切使っていないです

具体的にはエクセルのシートの様な格子形のグラフィックを描画し、そのカラムをクリック等された際にエディットボックスを動的にカラムの座標に作っています

78 :デフォルトの名無しさん:2017/03/03(金) 12:50:31.31 ID:fzOn+GKU.net
>>76
SubclassWindowにはCEdit派生の独自クラスを渡しています

自分は普段SDKしか使わないためSDKの感覚なのですが、ウィンドウのサブクラス化とは、サブクラス化したいウィンドウハンドルのウィンドウプロシジャのアドレスを別途作成した独自ウィンドウプロシジャのアドレスと差し替える事と認識しています
ですのでSubclassWindowに渡すハンドルはサブクラス化したいウィンドウのハンドルと思っていましたが何か別のパターンがあるのでしょうか?

79 :デフォルトの名無しさん:2017/03/03(金) 16:16:47.27 ID:Mc9uDdoy.net
>>78
> CMyEdit public CEdit として派生
> CMyEdit* lpCMyEdit = new CMyEdit;
ここでは、まだウィンドウは無い (コンストラクタに小細工がなければ)

> lpCMyEdit->SubclassWindow(...←ここでサブクラス化
もし以下のように書いたとしても、ハンドルは NULL だからサブクラス化できない
lpCMyEdit->SubclassWindow(lpCMyEdit->GetSafeHwnd());

> lpCMyEdit->Create(...←コントロール作成
この中で、ウィンドウが作成されサブクラス化される
なので SubclassWindow() の明示的な呼び出しは不要

80 :デフォルトの名無しさん:2017/03/03(金) 20:49:57.22 ID:GdXfDzVm.net
>>78
CEditをどういう風にカスタマイズしたいのかわからんが
>CEdit派生の独自クラス
の段階でそれを実装できないの?

通常サブクラス化を必要とするのは(通常の手段では)派生クラスを置けないダ
イアログ上のコントロールに対しての場合のみで、そうで無い場合は必要な機
能を実装したCEdit派生クラスをCreate()するだけで実現できると思うんだが・・

MFCでは(メッセージマップの仕掛けによって)ほぼ全てのメッセージを派生ク
ラスで独自処理を行えるので、サブクラス化は必要ないはずです。

81 :デフォルトの名無しさん:2017/03/03(金) 21:07:16.24 ID:4N2nnk0c.net
>>77
>具体的にはエクセルのシートの様な格子形のグラフィックを描画し…
これ自分もやったなー
作り込んで思い通りに動いたときは気持ちいいよね

82 :デフォルトの名無しさん:2017/03/03(金) 23:45:50.26 ID:fzOn+GKU.net
>>79
なるほど、確かに仰る通りです

MFCだと定義済みコントロールを作成したタイミングでサブクラス化が自動的に行われているんですか…知らなかった…

SubclassWindowの戻り値を確認してみます

83 :デフォルトの名無しさん:2017/03/03(金) 23:47:56.70 ID:fzOn+GKU.net
>>80
はい、とりあえずは、WM_CHARとWM_CONTEXTMENUをトラップしたいのです

どうも私の勘違いでサブクラス化は不要なんですかね…

84 :デフォルトの名無しさん:2017/03/03(金) 23:49:20.96 ID:fzOn+GKU.net
>>81
そうなんです
失敗が多い分、成功の歓びがあります

85 :デフォルトの名無しさん:2017/03/04(土) 06:08:14.80 ID:5oPjtzPk.net
>83
不要

86 :デフォルトの名無しさん:2017/03/12(日) 16:57:53.13 ID:L/+Vp36z.net
>>85
はい、SubclassWindowは失敗していました

みなさんの言う通りコントロール作成時に暗黙にサブクラス化が行われているようです
とても勉強になりました
有り難うございます

87 :デフォルトの名無しさん:2017/03/12(日) 20:13:37.36 ID:g7gIuH2o.net
そもそもなぜサブクラス化って言うの?
クラスとは関係ないと思うんですが

88 :デフォルトの名無しさん:2017/03/12(日) 20:23:14.61 ID:DJd+bif5.net
サブクラス化というネーミングはイマイチだとずっと思ってた。
APIの名称から来てるから翻訳者に罪はないが、、

VS2017入れてみたけど_MFC_VERは変化なし。
残念だ。

89 :デフォルトの名無しさん:2017/03/12(日) 20:33:34.83 ID:l5dI0q1q.net
>>87
多分ウィンドウクラスを横取りするからじゃないかな?

90 :デフォルトの名無しさん:2017/04/02(日) 01:00:25.54 ID:4o8Jb7FT.net
実際クラスとは関係ないと思う
ファーストクラスとかも全然クラス関係ないし
英語にそういうニュアンスがあるんじゃないの

91 :デフォルトの名無しさん:2017/04/13(木) 15:17:28.33 ID:O8cH7Ezk.net
Windows1.0のときからあるし、オブジェクト指向の用語とは別路線で発生したもんだしなあ

92 :デフォルトの名無しさん:2017/04/13(木) 21:53:13.05 ID:rVYtPk7E.net
GUI自体がオブジェクト指向の影響下で発展してきたわけで、別路線ってことはないだろう。
ウィンドウクラスごとにそれぞれ異なるWinProcを指す仕組みなんてほとんどv-tableだし。

93 :デフォルトの名無しさん:2017/04/14(金) 10:48:36.47 ID:L6e5ZQwW.net
確かWin32APIはsmalltalk由来のメッセージパッシング式オブジェクト指向を意識して作られたとかなんとか。
んで、C++はメッセージパッシング意識して作られてなかったから、言語自体を拡張されたのがC++Builderで、言語は拡張せず、メッセージテーブル作って無理くり対応したのがVCのMFCって何かで読んだ。

そう考えるとMFC以前はCでどうにかオブジェクト指向と言うより、メッセージパッシングを実現しようとしてWin32APIが出来たんだろね。

94 :デフォルトの名無しさん:2017/04/16(日) 20:06:30.26 ID:5A0Iky+5.net
Win16の存在が消されてる...

95 :デフォルトの名無しさん:2017/04/17(月) 00:21:05.80 ID:6QpAECc+.net
生まれてなかったんで。
そう言えばWin16sとの互換性のためとか勉強した覚えある。

96 :デフォルトの名無しさん:2017/04/17(月) 00:52:44.41 ID:tarAwmvI.net
win32sならやったけど、Win16sは知らないなあ。

97 :デフォルトの名無しさん:2017/04/17(月) 08:58:12.02 ID:V9IKpLf1.net
揚げ足どりにも程があるw

98 :デフォルトの名無しさん:2017/04/27(木) 23:52:23.90 ID:fIPmJDul.net
IT業界を離れて10数年経つ者です。
いまどき高速なアプリを手軽に作りたい場合、現役の方はどういう環境で作っています?
当時は主にMFC、たまにC++Builderでやってました。重くても良い場合はVBも使いました。
出来れば今後10年使えそうな奴をお願いします。今もたまに簡単なツールを作る機会が
ありますが、その際はMFCで作っています。多少勉強する覚悟はあります。
よろしくお願いします。

99 :デフォルトの名無しさん:2017/04/28(金) 01:05:33.78 ID:1gQE0OT9.net
>>98
>出来れば今後10年使えそうな奴をお願いします。

ない。

100 :デフォルトの名無しさん:2017/04/29(土) 20:05:07.24 ID:cs4H/lwY.net
>>98
本当に経験者ならこんな質問はしないやな

101 :デフォルトの名無しさん:2017/04/29(土) 21:27:44.34 ID:p2ephTDn.net
>>98
C#

102 :デフォルトの名無しさん:2017/05/01(月) 17:24:45.69 ID:tRarccr2.net
C#やっときゃなんとかなる

103 :デフォルトの名無しさん:2017/05/01(月) 22:10:24.46 ID:ybWlfBdW.net
WPFやUWPは廃れても、C#とXAMLは残ってそう。
C++とMFCも地味に残ってるだろうけど。。。

104 :98:2017/05/01(月) 23:13:30.10 ID:MV/lR732.net
ご意見ありがとうございます。
参考にします。

105 :デフォルトの名無しさん:2017/05/07(日) 20:46:12.14 ID:904pYcPE.net
C#意外と人気なんだな・・・驚いた

106 :デフォルトの名無しさん:2017/05/10(水) 00:20:17.07 ID:+OKBVlnQ.net
MFCで印刷プレビューのリボンバーってどうやってカスタマイズするの??

107 :デフォルトの名無しさん:2017/05/23(火) 19:47:17.95 ID:U7efYych.net
MDIの子ウィンドウのハンドルはどこですかぁ〜

108 :デフォルトの名無しさん:2017/05/24(水) 06:22:57.52 ID:r4nnDW8T.net
>>107
CDocument::GetFirstViewPosition
CDocument::GetNextView

109 :デフォルトの名無しさん:2017/05/30(火) 19:18:12.89 ID:R0a35IVC.net
> CCriticalSection オブジェクトの使用方式は、2 とおりあります。
> スタンドアロン方式、およびクラスに埋め込む方式です。
>
> スタンドアロン方式
> CCriticalSection オブジェクトをスタンドアロンで使うには、
> 必要が生じたときに CCriticalSection オブジェクトを構築します。
> コンストラクタから正常に戻った後、Lock を呼び出してオブジェクトを明示的にロックします。
> クリティカル セクションへのアクセスが完了したら、Unlock を呼び出します。
> この方法はソース コードを読んだ人にはわかりやすいのですが、
> アクセスの前後でクリティカル セクションをロック、アンロックすることを
> 覚えておかなければならないため、エラーを引き起こす傾向があります。
> より望ましいのは、CSingleLock クラスを使う方法です。
> この場合も Lock メソッドおよび Unlock メソッドを使いますが、
> 例外が発生したときにリソースのロックを解除する必要はありません。
>
> 埋め込み方式
> CCriticalSection 型のデータ メンバをクラスに追加し、
> 必要に応じてロックすると、複数のスレッドでクラスを共有することもできます。

MSDNのCCriticalSectionの説明には、上のように書かれているのですが、
このスタンドアロン方式って、どういう意図なのでしょうか。

普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが、
それだと全く排他制御になっていないのでは?

110 :デフォルトの名無しさん:2017/05/31(水) 00:18:49.47 ID:VxTDzTEq.net
Mutexみたいに名前付きなら上のスタンドアロン方式も理解できるけど名前ないからなー
わかんね

111 :デフォルトの名無しさん:2017/05/31(水) 10:12:23.47 ID:7kWP6r82.net
CCriticalSectionインスタンスが同期オブジェクトなわけではないよ。
クリティカルセクションは名前の通りクリティカルな区間のこと。Win32APIのEnterCriticalSection()からLeaveCriticalSection()の区間。
CCriticalSectionはこれのラッパー。
クリティカルセクションに入るスレッドはプロセスで一つだけになる。
プロセス間排他はできない代わりに軽い。

同期オブジェクトがプロセスで一つだけになのと同義。
マルチコア・マルチスレッドでロック待ちが無視できなくなるようなら他の使う。

112 :デフォルトの名無しさん:2017/05/31(水) 13:08:02.66 ID:ZVZYbrmW.net
>>111
クリティカルセクションという用語は>>111の言う様に元々「クリティカルな区間」のことだが、Win32では
スレッド間排他処理のための同期オブジェクトとして"CRITICAL_SECTION"があり、CCriticalSectionはこのラッパー。
( https://msdn.microsoft.com/ja-jp/library/cc429052.aspx にも"「クリティカル セクション」は、Win32の基本的な同期オブジェクトの1つです。"と書かれている)

>>109
確かにその説明はチンプンカンプンだねえ。
推測だけど、たとえばCStringをスレッド間排他制御するために

CString strFoo ;
CCriticalSection csForFoo ; // 非AUTO
 :
csForFoo.Lock() ;
strFoo += strBar ;
csForFoo.Unlock() ;
 :
みたいに書く(定義上はcsForFooはstrFooと結びついていない)のが、「スタンドアロン方式」で

class CThreadSafeString : public CString {
private:
 CCriticalSection csForMe ;
public:
 void ThreadSafeAppend( LPCSTR p ) {
  csForMe.Lock() ;
  *this += p ;
  csForMe.Unlock() ;
 }
} ;
みたいに書く(クラスに排他処理を埋め込む)のが「埋め込み方式」じゃないかなあ。

で、いずれの方式でも上記のような記述では「クリティカルな区間」で例外が発生するとUnlock()が実行されないので、これを避けるため、CSingleLockクラスを使えと。

113 :デフォルトの名無しさん:2017/06/04(日) 22:05:56.04 ID:rXndkeA4.net
>>110-112
解説ありがとうございます。

> CCriticalSection csForFoo ; // 非AUTO
>  :
> csForFoo.Lock() ;
> strFoo += strBar ;
> csForFoo.Unlock() ;

この使い方が当初の疑問だったのですが、
このローカル変数としての使い方って、意味ありますか?
試しに同じような処理を作って、複数のスレッドから同時に呼んでみても、
全く排他制御されているように見えなかったのですが。

114 :デフォルトの名無しさん:2017/06/05(月) 10:47:00.10 ID:CcS2OTgy.net
>>113

>>112
>CCriticalSection csForFoo ; // 非AUTO
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12140841977?__ysp=QVVUT%2BWkieaVsA%3D%3D

>>109
>普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが、
思えない

ローカル変数にも、ブロックローカル・関数ローカル・ファイルローカルがあり、
ブロックローカル・関数ローカルにも非静的変数と静的変数がある。

115 :デフォルトの名無しさん:2017/06/05(月) 12:03:45.22 ID:umvVrk12.net
>>114
> CCriticalSection csForFoo ; // 非AUTO
>  :
> csForFoo.Lock() ;

ああ、このcsForFooは関数内の自動変数ではなくて、
関数外なり静的変数なりで定義されているものいうことでしたか。

> 普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが

の「ローカル変数」は、「自動変数」の意味でした。
失礼しました。

116 :デフォルトの名無しさん:2017/06/05(月) 19:28:46.05 ID:SdDD09qt.net
>>109の原文(MSDN)には
construct the CCriticalSection object when it is needed.
と書かれているからCCriticalSection objectはオート変数と解釈してもおかしくは無い気がする。
staticならあらかじめになってしまう。

117 :デフォルトの名無しさん:2017/06/06(火) 17:22:09.38 ID:2bddCvIA.net
>>116
「コンストラクタから正常に戻った後、Lock を呼び出して」
とも書いてあるので、普通に読めば自動変数ですよねぇ。
でも、自動変数のCCriticalSectionをロックしても排他制御になっていないはずだし、
これはどういう意図なんだろうか、という質問でした。

118 :デフォルトの名無しさん:2017/11/29(水) 18:24:25.41 ID:HFlnlUlA.net
MFC MDIで2つのメニューを出したいので、mainframeにCMFCMenuBarを2つ作って、2つCreateすると、2つ目のCreateはAssertでとまってしまいます。2つのメニューを表示させる方法はありませんか?

119 :デフォルトの名無しさん:2017/11/30(木) 13:32:53.51 ID:isxZpuq9.net
>>118
「Method should be called once!」
なんてコメントが入ってるくらいだから、メニューは一つという設計なんだろう。

CMFCToolBarにCMFCToolBarMenuButtonを並べたほうが早いかも。
見た目を完全にメニューと合わせるなら、派生クラスを作ってオーバーライドする必要もあるだろうけど。

120 :デフォルトの名無しさん:2017/11/30(木) 20:04:53.18 ID:9ANPxZI+.net
menuボタンを並べるのは良いアイデアだと思います。IEdemoというサンプルを見ていたら、LinkBarというクラスを作って使っていました。2つのメニューは、やはり初期化しないのが良さそうです。1つは別の物にしてみます。ありがとうございます!

121 :デフォルトの名無しさん:2017/11/30(木) 23:13:55.12 ID:9ANPxZI+.net
IEDEMOのMFCコード、なかなか思い道理に動きません。MDIでサンプルを作って、CLinksBarとCLinksButtonを移植しようとしましたが、表示がバグります。バグっているけれどマウスカーソルをあてると、TOOLTIPが表示されます。何かが足りないようです。難しい

122 :デフォルトの名無しさん:2017/12/01(金) 09:35:49.83 ID:/UAM0shb.net
>>121
>>121
実際に見ていないからわからないけど、
ツールバーの情報は標準でレジストリに保存されてしまうから、
開発中は定期的にレジストリを消さないといろいろ原因不明の現象は起こる。
一度消してみたらどうかと。

ちなみに、m_wndToolBar.LoadToolBar()のあとに以下の処理を入れたら、
とりあえずツールバーにメニューを出すサンプルにはなる。
(これも一度レジストリの削除は必要)

CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
for (UINT i = 0; i < menu.GetMenuItemCount(); i++) {
  CString strText;
  menu.GetMenuString(i, strText, MF_BYPOSITION);
  m_wndToolBar.InsertButton(CMFCToolBarMenuButton(-1, menu.GetSubMenu(i)->GetSafeHmenu(), -1, strText));
}

123 :デフォルトの名無しさん:2017/12/01(金) 23:29:26.56 ID:658qbITu.net
>>122さんのおかげで先に進めました。
下記のようにしたら、思い通りのメニューが出て、しっかり動いてくれました。
/*
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
TRACE0("ツール バーの作成に失敗しました。\n");
return -1; // 作成できない場合
}
*/
m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
CMenu menu;
menu.LoadMenu(IDR_MENU_2);
for (UINT i = 0; i < menu.GetMenuItemCount(); i++) {
CString strText;
menu.GetMenuString(i, strText, MF_BYPOSITION);
int menuID;
menuID = menu.GetMenuItemID(i);
m_wndToolBar.InsertButton(CMFCToolBarMenuButton(menuID, menu.GetSubMenu(i)->GetSafeHmenu(), -1, strText));
}
Toolbarはとても難しいですね。私だけではとても思い通りの物は作れませんでした。>>122さんありがとう!

124 :デフォルトの名無しさん:2017/12/09(土) 13:03:41.75 ID:6uVA15bl.net
MDIで色々ウインドウを出すと、チャイルドウィンドウのタイトルバーが:1 :2になったり、消えてしまったりします。特に後ろになったチャイルドウィンドウのタイトルバーが書き換わって、タイトルが消えてしまう問題に頭を痛めております。
CWNDクラス内などにウインドウタイトルの情報を保持していて、時々その保持している情報で書き換えているように思うのですが、保持している情報がどれなのか、書き換えられるのかわかりません。
今の所OnPaint内でGetParent()->SetWindowTextで書き換えているのですが先のようにチャイルドウインドウが後ろに回るとタイトル表示が消えたりします。なにか良いタイトルバーテキストの書き換え方法は有りませんでしょうか?

125 :デフォルトの名無しさん:2017/12/12(火) 18:12:33.03 ID:/EihAdTu.net
124が消したり書き換えているんだと思う。
素のMDIプロジェクト作ってもそういう動きになる?

126 :デフォルトの名無しさん:2017/12/12(火) 22:35:42.07 ID:CKA01eZH.net
 素のMDIプロジェクトだとなりません。素のままだとタイトルバーがチャイルドウインドウの数に応じてプロジェクト名+1,2,3と表示されてしまいます。
 チャイルドウインドウのFormView別にチャイルドウインドウのタイトルを変化させたいのですが、うまくいきません。
 タイトルバーをもっと思うように書き換える方法を探しております。

127 :デフォルトの名無しさん:2017/12/12(火) 23:44:01.59 ID:/EihAdTu.net
CDocumentのサブクラスでSetTitle(LPCTSTR lpszTitle)をオーバーライドして独自のタイトルを付けるのはどうかな。
よく覚えてないけど独自のタイトルじゃなくlpszTitleを加工しようとすると嫌な感じにハマった記憶が、、

128 :デフォルトの名無しさん:2017/12/13(水) 09:22:41.41 ID:lt+jgkVB.net
>>124
CMDIChildWnd::OnUpdateFrameTitle()をオーバーライドしてみては。
何科変化するたびにこの関数が呼ばれるし、
デフォルトの処理だと、ここで":1"とか追加している。

129 :デフォルトの名無しさん:2017/12/13(水) 09:23:33.82 ID:lt+jgkVB.net
× 何科
○ なにか

130 :デフォルトの名無しさん:2017/12/13(水) 12:23:45.29 ID:h/Ab3OoN.net
>>127さん
 CDocumentのサブクラスCDocumentExを作ってSetTitleをオーバーライドしてみました。
 その他、ドキュメントクラスはCDocumentからの継承ではなくCDocumentExから継承させるようにしてみたのですが、CDocumentEx::SetTitle関数は呼ばれないようです。
 CDocumentクラスのオーバーライドではだめかもしれません。
>>128さん
ちょっと試してみます!

131 :デフォルトの名無しさん:2017/12/13(水) 18:07:57.07 ID:xRSHjr6s.net
>CMDIChildWnd::OnUpdateFrameTitle()をオーバーライドしてみては。
 OnUpdateFrameTitleをオーバーライドして、親クラスのメソッドをよびにいく時のパラメーターをfalseにしてみたところ、チャイルドウインドウのタイトルが書き換わらなくなりました。
 ありがとうございます!

132 :デフォルトの名無しさん:2017/12/25(月) 18:31:00.49 ID:1KZX1+KX.net
 mfcで見た目の良い(テーマを適用した)ラジオボタンを出したいと思っています。ところが、ラジオボタンのクラスとして、CMFCRadioButtonというクラスがありません。
 恐らくCMFCButtonクラスのインスタンスを生成してラジオボタンとして用いるのかなと悩み、CMFCButtonクラスの継承でCMFCRadioButtonクラスが作れないものか、考えています。
 CMFCRadioButtonクラスは作ってみた物の、CMFCRadioButtonクラスのOnDrawが呼び出されません。CMFCタイプのラジオボタンを生成する良い方法はございませんか?

133 :デフォルトの名無しさん:2017/12/26(火) 09:21:22.00 ID:pmYcZWoZ.net
>>132
virtual void OnDraw(CDC* pDC, const CRect& rect, UINT uiState);
をオーバーライドしたら、ちゃんと呼ばれているように見えるけど。

134 :デフォルトの名無しさん:2017/12/26(火) 12:13:07.59 ID:SnpEsSKI.net
リソースではラジオボタンを定義しておいて、DDXCONTROLからCMFCRadioButtonクラス(CMFCButtonクラス派生)とひもづけると、外観がボタンになってしまいます。
 外観はボタンですが、確かにCMFCRadioButtonクラスのOnDrawは呼び出されます。
 外観がボタンではなく、ラジオボタンにする方法をご教示下さい。

135 :デフォルトの名無しさん:2017/12/26(火) 12:55:18.72 ID:pmYcZWoZ.net
>>134
CMFCButtonの標準の描画処理がボタン前提になっているので、
ラジオボタンの見た目を表現したいなら、
OnDraw()などをオーバーライドして自分で完全に描画するしかないかと。

そもそも、CMFCButtonではなくCButtonにしてしまえば、
Windowsのテーマに従ったものは描画されるけど、
そうではなく、CMFCVisualManagerのテーマのことでいいんだよね?

最新のMFCは知らないけど、2008で導入されたときのMFCは、
ダイアログや内部のコントロールのテーマ描画は対応してない。

ライブラリの元となったBCG社が、機能を別売りしている。
ttps://www.bcgsoft.com/featuretour/tour240.htm

136 :デフォルトの名無しさん:2017/12/26(火) 19:16:10.15 ID:85Qwpz2C.net
2008年にMSがBCGを買収してCommunityEditionにこれが入っていたら、、と思う。

137 :デフォルトの名無しさん:2017/12/26(火) 20:03:16.51 ID:U4eSFsG2.net
 CMFCVisualManagerでたぶんあっています。
 mfcのコンパイルオプションをUnicodeモードにすると、ラジオボタンの見た目が変わることは分かったのですが、ANSI(ShiftJIS)モードでコンパイルしたいのです。
 今気になっているのは、manifestファイルを追加してみようと思います。
http://gurigumi.s349.xrea.com/programming/visualcpp/sdk_luna.html

138 :デフォルトの名無しさん:2017/12/26(火) 20:28:21.70 ID:SQt/8UlT.net
>>137
それはCMFCVisualManagerではないぞ。
Windowsのテーマのほうだ。

139 :デフォルトの名無しさん:2017/12/26(火) 21:53:49.91 ID:lgrMwj5m.net
マルチバイト文字モードでコンパイルした場合の見た目の違いです。DDXControlで左はCButton右はCMFCButtonとひもづけました。
https://i.imgur.com/4qA7an3.jpg

140 :デフォルトの名無しさん:2017/12/26(火) 22:19:37.75 ID:lgrMwj5m.net
やはりmanifestファイルのようです。マニフェストファイルでラジオボタンは変化しました。
マニフェスト適用後
https://i.imgur.com/JqRoqH4.jpg
マニフェスト適用前
https://i.imgur.com/lC9fLyO.jpg

141 :デフォルトの名無しさん:2017/12/30(土) 19:20:54.71 ID:W7MN//Qp.net
このスレはVisualStudioの使い方、
質問はアプリケーションの作り方
微妙に違うといえば違う。
かといって誘導出来る適当なスレは見当たらない
MFCのスレくらいかな

142 :デフォルトの名無しさん:2017/12/30(土) 20:06:14.31 ID:k3f51DlY.net
mfcのスレでmfcのクラスに関する質問をしていますよ。

143 :デフォルトの名無しさん:2018/01/06(土) 20:47:11.78 ID:wtVvXwwo.net
Excelでキャレットの無い状態から日本語入力をするとテキストボックス?が現れて文字が未確定状態で表示されますが
同様な動きををCViewとCEditでやろうとしています。
以前はViewのOnCharからCEditにWM_CHARをポストすることで普通に動いていたのですが、OSの仕様が変わったのか
最初の1文字が確定状態で表示されてしまいます。ATOKもMS-IMEも同じです。

何かヒントがあれば教えてください。

144 :デフォルトの名無しさん:2018/01/11(木) 02:22:52.84 ID:azQtlc4c.net
excelでキャレットの無い状態というのがわかりません。^が無い状態で入力を開始するのでしょうか?

145 :デフォルトの名無しさん:2018/01/11(木) 22:28:59.70 ID:nH81YmjO.net
>>144
レスありがとうございます。
Excelを起動した直後、あるいはセルへのキーボード入力が完了した直後など、矢印キーでカーソルが動く状態のことです。

146 :デフォルトの名無しさん:2018/01/11(木) 22:30:38.90 ID:nH81YmjO.net
文字入力時に点滅する「I」のような記号がキャレットです。

147 :デフォルトの名無しさん:2018/01/12(金) 22:01:33.38 ID:mgMC0phM.net
回答になっているかどうか分からないのですが、CViewクラスではない場合でCListCtrlクラス内にCEditを貼り付けて、そのCEdit上で編集をする例は有ります。
CView上にCEditを張り付けているような応用にもかなるかもしれませんので、例を上げます。
http://www.softist.com/programming/listctrl-edit/listctrl-edit.htm

148 :デフォルトの名無しさん:2018/01/13(土) 18:52:00.81 ID:CyFncowx.net
>>147
レスありがとうございます。
ダブルクリックでCEditを出して〜という動作は当方でも問題なく出来ています。

149 :デフォルトの名無しさん:2018/01/29(月) 00:24:27.95 ID:lYpQ/Knz.net
すみませんお助けください
親ウインドウにテキストボックスとボタン、ボタンを押すとdomodalでウインドウが呼び出されます
その子ウインドウにはリストボックスがあって、そこには親のテキストボックスに入力された文字が表示される
そういうものを作ろうとしています

親テキストボックスの変数名がm_input
setvalueでプライベートにしてるリストボックス変数にそれを格納しています
ですがこれですとウインドウは表示されてもリストボックスはからっぽです。
一体何が悪いのでしょうか

void 親ウインドウクラス名::OnBnClickedButton1()
{
PopupDlg pdlg;
UpdateData(TRUE);
pdlg.setValue(m_input);
pdlg.DoModal();
UpdateData(FALSE);
}

150 :デフォルトの名無しさん:2018/01/29(月) 09:13:09.91 ID:TsZXtod4.net
>>149
setValueの引数の型や、それをPopupDlgがどのように扱っているのかを見せないと、
それだけではなにもわからないよ。

151 :デフォルトの名無しさん:2018/01/30(火) 19:55:15.15 ID:JKI/Ug3X.net
すっかり遅くなったけど申し訳ない
oninitdialogに処理書いたらなんとかなりました

152 :デフォルトの名無しさん:2018/02/08(木) 23:58:28.60 ID:/8AuktPL.net
MDIウィンドウの場合で、メニューのフォントとフォントサイズは変えられますか?
ツールバーの右端に出てくるボタンの表示非表示を無くすことは出来ますか?

153 :デフォルトの名無しさん:2018/02/09(金) 09:43:56.52 ID:DYanFj/G.net
>>152
MFC Feature Packのメニューやツールバーのことなら、

> メニューのフォントとフォントサイズ
CMFCMenuBar::SetMenuFont

> ボタンの表示非表示
CMFCToolBar::EnableCustomizeButton

154 :デフォルトの名無しさん:2018/02/09(金) 22:24:50.30 ID:n0NVuMox.net
ありがとうございます!試してみます。

155 :デフォルトの名無しさん:2018/02/10(土) 15:55:33.49 ID:AljsEXlF.net
あれ?
CListViewなくなったん?

ウイザードにないw

156 :デフォルトの名無しさん:2018/02/10(土) 19:51:23.23 ID:kahd5R/F.net
SDIかMDIを選んでいれば、ウイザードの最後の項目でViewを選択できるはずです。選ぶ中にCListViewは有るはずです。

157 :デフォルトの名無しさん:2018/02/10(土) 20:30:44.41 ID:9BceoeeN.net
ないんだなーこれが

158 :デフォルトの名無しさん:2018/02/10(土) 23:11:10.45 ID:tnD/bf0m.net
そんなわけ無いだろうと思ったけど、無いね..
CListViewは存在するけどウィザードでは選択できなくなったのか
結構便利なクラスだと思うんだけどな

159 :デフォルトの名無しさん:2018/02/10(土) 23:55:46.38 ID:9BceoeeN.net
だろー
昨日から三回も再インストールしてる

160 :デフォルトの名無しさん:2018/02/11(日) 00:27:35.71 ID:Abk6WT5B.net
確かに2017communityでは、無くなっています。2013Communityには有るようです。

161 :デフォルトの名無しさん:2018/02/11(日) 14:12:45.40 ID:TT4/yggk.net
一応、MSに連絡

162 :デフォルトの名無しさん:2018/02/11(日) 17:09:15.62 ID:NeODdjx3.net
まぁこのへんの仕組みはもう変わらないだろうし、
適当なものを選んでから書き直しても問題ないけどな。

163 :デフォルトの名無しさん:2018/02/12(月) 00:23:21.23 ID:gJKrDJtj.net
TreeViewぐらいで

164 :デフォルトの名無しさん:2018/02/16(金) 06:26:23.85 ID:W1XJdyx1.net
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

165 :デフォルトの名無しさん:2018/02/17(土) 09:44:17.48 ID:skmHixeO.net
ウィザードのCListViewの話
去年にはもうあった話題やん
もうちょっと頑張ってくれよ
https://developercommunity.visualstudio.com/content/problem/135607/vs-1541-vcmfc-application-wizard-cant-select-listv.html

166 :デフォルトの名無しさん:2018/02/28(水) 17:21:10.04 ID:C00JEheo.net
>>153

> >>152
> MFC Feature Packのメニューやツールバーのことなら、
>
> > メニューのフォントとフォントサイズ
> CMFCMenuBar::SetMenuFont
>
> > ボタンの表示非表示
> CMFCToolBar::EnableCustomizeButton
使い方がよくわかりません。適当なパラメーターがよくわからず、CMainframe内で呼び出してはみた物の、うまくフォントのサイズは変わりません。
ボタンの追加も消せませんでした。

167 :デフォルトの名無しさん:2018/02/28(水) 18:28:27.62 ID:8m4UvZqy.net
ソースが付いてるんだから読みなよ

168 :デフォルトの名無しさん:2018/03/01(木) 12:14:56.76 ID:AHCBMzq/.net
>>166
とりあえずこんな感じで書けば変わる。
ただ、あまり大きくすると、縦にドッキングしたときに文字が欠ける。
最新バージョンなら直っているのかもしれないけど、
自分のアプリではメニューは上部固定なので、深くは調べていない。

> メニューのフォントとフォントサイズ
NONCLIENTMETRICS metrics;
metrics.cbSize = sizeof(metrics);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0);
LOGFONT lfMenu = metrics.lfMenuFont;
_tcscpy_s(lfMenu.lfFaceName, _T("MS P明朝"));
lfMenu.lfHeight = -24;
CMFCMenuBar::SetMenuFont(&lfMenu);
lfMenu.lfOrientation = 900;
lfMenu.lfEscapement = 2700;
CMFCMenuBar::SetMenuFont(&lfMenu, FALSE);

> ボタンの表示非表示
m_wndToolBar.EnableCustomizeButton(TRUE, -1, _T(""), FALSE);
もしくは、EnableCustomizeButtonを呼ばない。

169 :デフォルトの名無しさん:2018/03/01(木) 13:10:39.24 ID:txqdSq4Q.net
軽く煽ると答えを書いてくれるこのスレはチョロいよねw

170 :デフォルトの名無しさん:2018/03/01(木) 18:59:24.33 ID:5P8YUW6k.net
自演じゃなければ

171 :デフォルトの名無しさん:2018/03/01(木) 21:28:45.70 ID:qsUh1R3q.net
質問に答えると負けなんだろうか。
他のスレでも、質問に「答えない」ってだけのしょうもないマウントとりにくる人を見かけるね。

172 :デフォルトの名無しさん:2018/03/01(木) 22:57:24.75 ID:txqdSq4Q.net
>>171
君が質問に答えてあげればいいじゃん

173 :デフォルトの名無しさん:2018/03/04(日) 03:39:37.81 ID:dAX9rxSb.net
>>168
ありがとうございます。メニューのフォントサイズを変更でき、ボタンの追加・削除を消せました。
私ではとても考え付かない設定です。ありがとう!!

174 :デフォルトの名無しさん:2018/03/22(木) 07:47:15.16 ID:QjvVr0xE.net
温度情報などをグラフにしてFormView上に描画できないか考え込んでいます。自前でCDCに描いていくのではなく、描くのに適しているmfcのライブラリは無いものか、探しています。どなたか目盛りのついたグラフ描画に良いクラスはご存じないでしょうか?

175 :デフォルトの名無しさん:2018/03/22(木) 10:15:31.03 ID:Q2/ylW7b.net
matlab

176 :デフォルトの名無しさん:2018/03/22(木) 12:52:08.54 ID:nhBJfAJ/.net
>>174
MFC用の有料ライブラリならこのへんがあるけど、使い勝手は知らない
https://www.bcgsoft.com/featuretour/tour270.htm
http://www.codejock.com/products/chart/

無料ならこのへんのソースを読んでみるとか
https://www.codeproject.com/KB/miscctrl/#Charting+Controls

177 :デフォルトの名無しさん:2018/03/22(木) 18:20:31.23 ID:gaCTtyVy.net
matlabはおそらく有料ライセンスですよね。

178 :デフォルトの名無しさん:2018/03/22(木) 18:22:47.87 ID:gaCTtyVy.net
>>176

> >>174
> MFC用の有料ライブラリならこのへんがあるけど、使い勝手は知らない
> https://www.bcgsoft.com/featuretour/tour270.htm
>
グラフとして、このようなグラフが描けると良いなとは思います。 http://www.codejock.com/products/chart/
>
> 無料ならこのへんのソースを読んでみるとか
> https://www.codeproject.com/KB/miscctrl/#Charting+Controls
ちょっと調べてみます。ありがとうございます。

179 :デフォルトの名無しさん:2018/03/22(木) 18:25:07.36 ID:gaCTtyVy.net
昔の話で何ですが、DOSの時代にはMSCなどにグラフ描画ライブラリが付いてきていたような記憶があります。mfcには無さそうですよね。

180 :デフォルトの名無しさん:2018/03/22(木) 19:42:36.73 ID:lw2+9AAf.net
>>179
最新版は知らないが、昔のMFCには無かったと思う。
(昔の) MSDN Library をよく見ているが、発見してない。

でも、グラフ描画って、LineTo() だけでも大体いけると思うんだけど。

181 :デフォルトの名無しさん:2018/03/23(金) 11:19:28.52 ID:WP/XswCx.net
OLE2使ってExcel呼べばいいんじゃね?
MFC関係ないのでスレチだけど

182 :デフォルトの名無しさん:2018/03/23(金) 12:29:30.45 ID:S2qLyUZS.net
>>180
MSC = Microsoft CというDOS用のコンパイラです。1990年代のお話です。

183 :デフォルトの名無しさん:2018/03/23(金) 13:06:50.13 ID:5/36eG7n.net
>>182
知ってるけど

184 :デフォルトの名無しさん:2018/03/23(金) 18:21:05.39 ID:GtydX90K.net
>>174 >>177
matplotlib の python 用 dll を c/c++ から使う手がある

185 :デフォルトの名無しさん:2018/03/24(土) 13:11:04.87 ID:1MnVHuF+.net
.NETのChartコントロールをユーザーコントロールに置いてMFCダイアログでホストってのをやったことあるよ。
MFCビューでのやり方もMSDNに書いてあるからその通りやればできると思う。
MFC、Windowsフォーム、辺りで検索すれば見つかるはず。

186 :デフォルトの名無しさん:2018/03/24(土) 13:59:14.06 ID:5hh+Vua5.net
.NET使いたくないって話では

187 :デフォルトの名無しさん:2018/03/25(日) 01:41:05.54 ID:AJM/AyB8.net
.netはちょっと重いです。それでも参考になります。ありがとうございます。。

188 :デフォルトの名無しさん:2018/04/03(火) 23:45:10.59 ID:aZg1mfkw.net
mfcとexcelの連携が全然分かんない……COM?何それ?みたいな
msdnとかstackoverflowとかいろいろ漁ってもだめ。っていうかそもそもmfc、windowsってよくわかんないクラスとか変数とか多すぎじゃない
もっと簡単にプログラミングさせてよ!って思う

189 :片山博文MZ :2018/04/03(火) 23:46:23.75 ID:GFbsNNGI.net
>>188
VB6でも使ってろ

190 :デフォルトの名無しさん:2018/04/04(水) 02:52:52.55 ID:h2UR4/YM.net
>>188
馬鹿には無理

191 :デフォルトの名無しさん:2018/04/04(水) 23:16:43.35 ID:EgkZfqJG.net
昔、MFCに慣れてきた頃、趣味でMACのプログラミング勉強しようとして挫折したことがある。
Excel連携なら、その箇所だけでもVBでやるのがお勧め。

192 :片山博文MZ :2018/04/05(木) 15:58:24.24 ID:7o7fJyTF.net
http://blog.systemjp.net/entry/20120827/p3

193 :デフォルトの名無しさん:2018/04/06(金) 12:26:46.99 ID:sTfZcU1Y.net
MFC使わなくてもCで良いのに

194 :片山博文MZ :2018/04/06(金) 16:14:35.30 ID:eB6IhESG.net
まずは、OleViewを起動してな。

195 :デフォルトの名無しさん:2018/04/20(金) 12:34:59.85 ID:r2H2v4t5.net
折れ線グラフをMovetoとLinetoで描くことにしました。線分を引くに当たって、GDI+とGDIでの描画速度を検証してみました。
32bit win7 corei5で24×1,024本の線分を描きましたところ
GDI+ drawLine 7300ms
GDI Moveto Lineto 350ms
という結果になりました。
mfcのMoveto Linetoは速いですよね。画面のサイズによって速度はだいぶ変わるようです。

196 :デフォルトの名無しさん:2018/04/20(金) 12:38:07.74 ID:r2H2v4t5.net
c#などのASP.net環境では、グラフを生成するAPIが有るようですね。サーバ上で簡単にグラフを生成し、クライアントのブラウザから見られます。

197 :デフォルトの名無しさん:2018/04/20(金) 22:27:08.54 ID:yO6TKb25.net
>>195
検証おつ。少数派かもしれませんがこういうの好きです。

198 :デフォルトの名無しさん:2018/04/25(水) 12:53:36.78 ID:4obztnoR.net
CFormView内でOnMouseWheelを使っていたのですが、コンボボックスを配置したところ、OnMouseWheelのイベントに飛んでこなくなりました。
今のところ、コンボボックスを継承して、コンボボックス内のOnMouseWheelイベント内で、親クラスへSendMessage(WM_MOUSEWHEEL )する事で動かせるようにしました。

この先、ほかのコントロールが追加されたら、またOnMouseWheelイベントを拾えなくなると思い、もっと良い方法があればと思っています。どなたか良い解決策をご存じですか?

199 :デフォルトの名無しさん:2018/04/25(水) 13:44:01.27 ID:jrjO5Mdd.net
>>198
CFormView派生クラスのPreTranslateMessage()で横取りしてしまうのが簡単かと

200 :デフォルトの名無しさん:2018/04/26(木) 22:30:35.34 ID:tB5nNnhP.net
確かに横取りで解決できました。ありがとうございます。
コンボボックスをドロップダウンリストに設定した場合のフォーカスについても伺いたいのですが、
CFormViewクラス内にドロップダウンリスト型のコンボボックスを配置すると、キーボードのフォーカスがコンボボックスに設定されてしまいます。
CFormViewに対してSetFocus()を呼び出しても、フォーカスがコンボボックスから外れません。
コンボボックスが青く塗りつぶされて選択状態になっているのを解除する方法をご存知ないですか?

201 :デフォルトの名無しさん:2018/04/27(金) 09:24:02.21 ID:V1X+E9CJ.net
>>200
CFormViewのソースを見るとわかるけど、SetFocus()を呼んでも、
OnSetFocus()の中で最後の位置に復元される。

その動きを別なものにしたいのなら、
OnSetFocus()をオーバーライドして、なにかしらの対応が必要かと。

なにもしないようにしてフォーム自身がフォーカスを持ってしまうとか、
サイズ0のダミーのボタンでも置いておいて、毎回そこにフォーカスを移すとか。

202 :デフォルトの名無しさん:2018/04/27(金) 20:15:49.15 ID:Q5E/Se8d.net
ありがとうございます!

203 :デフォルトの名無しさん:2018/04/27(金) 20:26:32.52 ID:Q5E/Se8d.net
ダブルバッファリングについて質問しても良いですか?

ピクチャーコントロールのダブルバッファリングを行いたいと思っているのですが、画面のサイズを大小いじられ続けると、GDIリソースを食いつぶして、アプリケーションが落ちます。

色々試して、画面サイズ変更イベント内のCreateCompatibleBitmapのところで確保したGDIリソースが DeleteObject();されるときに、GDIリソースを一つ多く確保し続けるようです。

CBitmap test;
test.CreateCompatibleBitmap(ピクチャーコントロールのdc,-,-); //GDIリソースが+2される
test.DeleteObject(); //GDIリソースがー1される

差し引きGDIリソースの確保量が+1になります。
そのうち線を書けなくなり、アプリケーションがクラッシュします。

使い方がどこか良くないのだと思うのですが、パラメータ等が良くないのかな。などと考え込んでいます。解決策をご存知ないですか?GDIリソースの確保量はタスクマネージャの設定でGDIリソースを表示できるようにして確認しています。

204 :デフォルトの名無しさん:2018/04/27(金) 21:30:38.89 ID:V9eZGmhL.net
CreateCompatibleBitmapの前後5行ぐらいに原因がありそうな気がする

205 :デフォルトの名無しさん:2018/04/28(土) 06:46:29.77 ID:7taUW+bg.net
>>203
自分で開放しないといけないのを忘れてるだけじゃないかな

206 :デフォルトの名無しさん:2018/04/28(土) 13:43:55.18 ID:RCDKOgRU.net
リソースの解放はDeleteObject();ではないのですか?
CreateCompatibleBitmapの前は、CreateCompatibleDCを呼び出しています。
CreateCompatibleDCのDCパラメータをNULLに設定すると、GDIリソースの浪費は無くなりますが、今度は出てくる画面が白黒になってしまいます。

207 :デフォルトの名無しさん:2018/04/28(土) 15:02:19.62 ID:7HtEIURB.net
>>206
ピクチャーコントロールのDCをGetDC()で取得してしてるのでは

208 :デフォルトの名無しさん:2018/04/28(土) 15:36:31.72 ID:K6dn8QZh.net
スタック上でCBitmap test;とやった場合
関数を抜けるときに勝手にデストラクタでDeleteObjectされると思う。
もう少しコード晒さないと判らない。

209 :デフォルトの名無しさん:2018/04/28(土) 20:43:45.95 ID:RCDKOgRU.net
CreateCompatibleDCでは、ピクチャーコントロールのDCを取得させています。
ピクチャーコントロールのDCを渡すと、CreateCompatibleBitmap時にGDIリソースを消費する量が2となるようです。
CreateCompatibleDCにNULLを指定した場合(確か)CreateCompatibleBitmap時のGDIリソース消費量ばかり1となります(以後の描画は白黒になります)。

今しばらく書いているコードをみられません。
CreateCompatibleDCやCreateCompatibleBitmapをOnSize時に破棄させてはサイズを変えて再生成させると、GDIリソースが消費されて減っていくので、
アプリケーション生成時に画面の最大サイズでCreateCompatibleDCさせておき、あとはCreateCompatibleDCしないように変更することも考えております。

アプリケーション生成時に画面のサイズ分のCreateCompatibleDCさせるようにすると、マルチモニタ環境の時などの動作が正常に動作しないかもしれないと思い、
可能ならOnSize内でDeleteObject();させてCreateCompatibleDCさせたいと思っています。

なお、OnSizeから抜けてもGDIリソース消費量は下がってくれないようです。

210 :デフォルトの名無しさん:2018/04/28(土) 21:09:49.29 ID:K6dn8QZh.net
207が言っているのは
bitmap.CreateCompatibleBitmap(pict->GetDC(), rc.Width(), rc.Height())
してるんじゃないかって事。これだとリークします。

211 :デフォルトの名無しさん:2018/04/29(日) 02:54:49.07 ID:4Tl9MZgN.net
ReleaseDC

212 :デフォルトの名無しさん:2018/04/29(日) 22:23:44.07 ID:dUB73wKv.net
>>212

> 207が言っているのは
> bitmap.CreateCompatibleBitmap(pict->GetDC(), rc.Width(), rc.Height())
> してるんじゃないかって事。これだとリークします。

しています。その上でどのように直すべきか察しが付きません。やはりReleaseDCで直りますか?

213 :デフォルトの名無しさん:2018/04/29(日) 23:00:49.09 ID:azFTonkH.net
ReleaseDCで直る。
私なら 解放不要なCDC::FromHaqndleを使う。

214 :デフォルトの名無しさん:2018/04/30(月) 09:00:09.82 ID:N15MwktU.net
>>212
CClientDCを使うのが一番簡単だけど、
CreateCompatibleDC()のほうは引数はなにを渡しているんだ?

>>213
CDC::FromHandle()はHDCがわかっているときに使うもので、
今回のDCを取得すること自体には使えない。

215 :213:2018/04/30(月) 13:12:38.67 ID:3QBGre+r.net
スマソ勘違いだった

216 :デフォルトの名無しさん:2018/04/30(月) 14:30:59.80 ID:s7QfKdrQ.net
>>216
CompatibleDCの引数はピクチャーコントロール内のDC
memDC.CreateCompatibleDC(ピクチャーコントロール.GetDC(),ピクチャーコントロールのx,y);
だったと思います。
GetDC()でピクチャーコントロールのDCを取得していたか、GetSafeDCでピクチャーコントロールのDCを取得していたかちょっと思い出せません。

217 :デフォルトの名無しさん:2018/04/30(月) 14:32:37.77 ID:s7QfKdrQ.net
CreateCompatibleDCのパラメータはDC一つだけでしたね。ごめんなさい。

218 :片山博文MZ :2018/04/30(月) 14:34:44.36 ID:4AJ8oS6Z.net
GetDCの返り血はReleaseDCしないといけない。

219 :デフォルトの名無しさん:2018/04/30(月) 19:49:57.15 ID:fTg4MTz+.net
返り血こわ

220 :デフォルトの名無しさん:2018/05/01(火) 13:59:06.30 ID:eD8/BCAz.net
ReleaseDCではGDIリソースがー1になりますが、createCompatibleBitmapで+2消費したぶんのすべては解放されてくれません。
releaseDCはおこなっていますが、GDIリソースの消費量は依然として+1になってしまいます。

221 :片山博文MZ :2018/05/01(火) 14:20:07.77 ID:ARev1vvH.net
>>220
ソースきぼお

222 :デフォルトの名無しさん:2018/05/07(月) 12:52:31.69 ID:axInvDCA.net
原因わかりました。
memBmp.CreateCompatibleBitmap(picctrl.GetDC(),x,y);

が良くなかったようです。
GetDC()でGDIリソースを1消費し、解放出来なくなります。

CDC *pDC;
pDC->picctrl.GetDC();
memBmp.CreateCompatibleBitmap(pDC,x,y);
DeleteObject(memBmp);
ReleaseDC(pDC);

に直したところ、ちゃんとGdIリソースが戻りました。

223 :デフォルトの名無しさん:2018/05/07(月) 12:55:07.54 ID:axInvDCA.net
pDC=picctrl.GetDC();
に修正します。
解答いただいた方々、ありがとうございます。

224 :デフォルトの名無しさん:2018/05/07(月) 14:56:30.49 ID:QMgv+0U5.net
>>222-223
最初からみんなそう言ってたのに

225 :デフォルトの名無しさん:2018/05/08(火) 19:14:19.80 ID:c2nzYwoQ.net
> CDC *pDC;
> pDC=picctrl.GetDC();
> ReleaseDC(pDC);

picctrl.GetDC()したものを親がReleaseDC()しているのが気持ち悪いが、
これでも正しく動くのか?

226 :デフォルトの名無しさん:2018/05/11(金) 20:03:19.69 ID:AvqrI8lf.net
GetDC()したらReleaseDC()する必要があるのだと思う。CDC*はデストラクタ処理に入れないからReleaseDCする必要がある。
VC++.net CLRとかなら自動でやってくれるのだろう。

227 :デフォルトの名無しさん:2018/05/12(土) 17:30:06.38 ID:r7l6NWuz.net
>>226
picctrl.ReleaseDC(pDC);
とするべきではということなんだが。

そもそもCClientDCを使えばGetDC()なんて自分で呼ぶ必要はないが。

228 :デフォルトの名無しさん:2018/05/14(月) 21:41:18.68 ID:8B23ox7k.net
そうなんだ。φ(`д´)メモメモ...

229 :デフォルトの名無しさん:2018/05/23(水) 19:28:52.23 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

HQL0Y

230 :デフォルトの名無しさん:2018/05/24(木) 10:17:50.97 ID:0MNYvz/l.net
バイナリデータ(buf)を受け取ってピクチャーコントロール(m_picture)に
描画したいのですがBitBltのところで
"Debug Assertion Failed!"
が発生してしまいます。
何が悪いのか教えていただけないでしょうか?

PAINTSTRUCT ps;
CBitmap bitmap;
CImage image;
CDC *pDC;

pDC = m_picture.BeginPaint(&ps);

pDC->SetBkMode(TRANSPARENT);
pDC->SetStretchBltMode(COLORONCOLOR);

bitmap.CreateBitmap(width, height, 1, 8, (void*)&buf);
HBITMAP hBitmap = HBITMAP(bitmap.GetSafeHandle());

image.Attach(hBitmap);

image.BitBlt(pDC->GetSafeHdc(), CRect(0, 0, image.GetWidth(), image.GetHeight()), CPoint(0, 0));
image.Detach();
image.ReleaseDC();

m_picture.EndPaint(&ps);

231 :デフォルトの名無しさん:2018/05/24(木) 10:22:02.55 ID:fftgGS82.net


232 :放置された蟻人間 :2018/05/24(木) 19:30:21.07 ID:lMOj7i3d.net
ASSERT(IsWindow(m_picture)); してみれ。

233 :デフォルトの名無しさん:2018/05/25(金) 08:35:43.69 ID:0miZfrjS.net
>>232
連絡ありがとうございます。
やってみましたがプログラムが止まらないので問題ないみたいです。

234 :デフォルトの名無しさん:2018/05/25(金) 11:28:17.31 ID:XVxgp9wt.net
まず"Debug Assertion Failed!" が出ているのならちゃんと再試行を押そうよ。
それだけで原因そのものはわかる。

235 :デフォルトの名無しさん:2018/07/04(水) 22:49:24.38 ID:gFgZc5FG.net
EQ8

236 :デフォルトの名無しさん:2018/07/06(金) 12:25:50.03 ID:uTPDH9XV.net
EQ8

237 :デフォルトの名無しさん:2018/07/07(土) 16:23:50.25 ID:BnawPcHi.net
CListCtrでレポート表示のFullRowSelectをカスタムドローを弄ってます。

マウスがアイテムの上に来たら色を変えたいけど、カスタムドローのイベントハンドラだけできますか?
OnMouseMoveでどこにあるか判定してカスタムドローで描画が必要?


ビットマップを3番目のSubItemだけに貼るとか、16x16のSmallサイズ以外だとうまくいかないとか、癖が凄い。

238 :デフォルトの名無しさん:2018/07/23(月) 18:19:00.33 ID:+TIH++V2.net
tooltipの表示内容を一つのピクチャコントロール内で変更したいのですが、マウスカーソルが一端ピクチャコントロールから外れないと、ツールチップの内容が更新されないようです。onmousehoverなどを使わないと駄目でしょうか?

239 :デフォルトの名無しさん:2018/07/24(火) 07:28:28.65 ID:vj16B9du.net
tooltipの解決策を見つけました。
http://www.geocities.jp/sunayamak/study/mfctooltip.html

240 :デフォルトの名無しさん:2018/07/27(金) 23:03:38.30 ID:FVoX1kIB.net
Tooltipの件ありがとうございます。
おかげさまで何とか解決できました。

241 :デフォルトの名無しさん:2018/08/02(木) 20:01:14.70 ID:lFbk57E7.net
datを生成するMFCプログラムがありまして、そのdatからデータを読み込んでexcelの形式に合わせて出力するダイアログベースのMFCプログラムがあります
最初のプログラムから呼び出されて処理をするだけなので、ウインドウの表示とかしないです。ただただ処理して終わりです

それで問題なんですが通常のダイアログを使ったプログラムのように読み込み・変換処理を全部ダイアログ部分に書いてあるんです
ダイアログ使いもしないのにここに書くのおかしくないですか?と聞いたら表示されないんだしいいでしょと。画面表示を行わないMFCプログラムの場合、コードはどこに書くのが自然なんでしょうか?

242 :デフォルトの名無しさん:2018/08/03(金) 10:09:25.61 ID:SxfGFWQF.net
スレッドを別けたいという意味か?

243 :デフォルトの名無しさん:2018/08/03(金) 18:35:46.47 ID:uhu4d/dd.net
あーすいませんわかりにくかったですね
メインプログラムがあってその内部でdatを生成するんですよ
で、そのdatのパスをコマンドライン引数で別のプログラムに渡すんですね
スレッドというかそもそも2つのプログラムですわ

244 :デフォルトの名無しさん:2018/08/03(金) 18:52:53.67 ID:o/XiGXrO.net
MFC関係ないのにここで聞くのおかしくないですか?

245 :デフォルトの名無しさん:2018/08/03(金) 19:53:47.89 ID:82qJLwKQ.net
事情が見えない。

どーーしても別プログラムにする事情があると仮定すれば
DialogやConsoleで構わないと思う。
冗長さを排除したいなら_tWinMainから書く手もあるけど
体感できるような差は出ないかと。表示されないんだしいいでしょw

246 :デフォルトの名無しさん:2018/08/05(日) 03:07:58.27 ID:lHG7kQYc.net
>>241
>ダイアログ使いもしないのにここに書くのおかしくないですか?

じゃぁどこに書けばいいの?

247 :デフォルトの名無しさん:2018/08/05(日) 10:12:06.95 ID:D9xcyyWx.net
>>241
MFCの仕組みを使いつつ、まったくウィンドウ表示が不要なものなら、
アプリケーションクラスのInitInstance()の中で処理して、
FALSEを返してすぐ終了するという流れでよいのでは。

248 :デフォルトの名無しさん:2018/08/06(月) 22:59:00.43 ID:OCzRfTP8.net
>>247
結局それにしました。
あとは処理を分担するふっつーのC++クラスいくつか作ってダイアログは完全に使わない感じで

249 :デフォルトの名無しさん:2018/08/07(火) 05:06:10.31 ID:OlmXtX1U.net
サマータイムも意味がないがそれ以上に意味がない

250 :デフォルトの名無しさん:2018/08/14(火) 16:45:48.75 ID:/E7izJ6Y.net
横から失礼します
InitInstanceの場合は標準出力にメッセージを出せますか?
標準出力に出すmfcプログラムだとすると、_twinmainを使うとどうでしょう。

251 :デフォルトの名無しさん:2018/08/14(火) 19:27:19.22 ID:iucfbso2.net
どちらもやったことありませんが可能だと思います。
私なら _tmain 使うとおもいますが。

252 :155:2018/08/15(水) 09:28:56.94 ID:IMvh29W2.net
CListViewがウィザードに帰ってきた!!
やほーい

253 :デフォルトの名無しさん:2018/09/20(木) 15:00:47.62 ID:i16QdaBT.net
MFCというかプログラミング姿勢に関しての質問かもしれないんですけど
CやC++で標準的に実装されてる機能とMFCクラスで実装されてる機能、どちらを使っても
同じことが実現できる場合、どちらを優先して使っていくべきなんでしょうか
要するに文字列ならchar*かstringかCStringか
ファイル操作ならfopenかstreamかCfileかみたいな

254 :デフォルトの名無しさん:2018/09/20(木) 16:28:00.36 ID:+UNWjTgc.net
MFCはオワコン

C#
使え

255 :デフォルトの名無しさん:2018/09/20(木) 18:01:52.92 ID:TMKaX7fO.net
>>254
そうでもない。

>>253
文字列は、単に文字列を保持したい場合や、文字列連結を行いたいような場合は、CStringが便利だと思う。

パーサーなんかを自作する時は、char *が便利。

256 :デフォルトの名無しさん:2018/09/20(木) 18:03:18.25 ID:TMKaX7fO.net
>>253
ファイル操作は、経験上は、fopen()が便利かな。

CFileは意外と不便だった気がする。


stringは、敢えて使う必要は無いと思う。CStringで十分。

257 :デフォルトの名無しさん:2018/09/20(木) 18:03:55.46 ID:a/ASjwi8.net
俺はできるだけ標準のほうを使うように切り替えた

258 :デフォルトの名無しさん:2018/09/20(木) 22:16:17.61 ID:P1fXZpxD.net
機能が同等なら好みでいいと思うけど、ファイル操作みたいにOS依存が強い機能は
標準ライブラリじゃ足りない場合が多いかな。

259 :デフォルトの名無しさん:2018/09/21(金) 00:47:14.84 ID:fuc3wJjq.net
MFCのGUI特化した本ないのかねー
大概が初心者向けでポインタやら構造体やらMFCと関係ないことが大半を占めてて知りたいことはうすーくしか書いてないのばっか

260 :デフォルトの名無しさん:2018/09/21(金) 06:34:48.10 ID:l8rNCGoZ.net
>>259
20年も前の本だが、お奨めは
ttps://calil.jp/book/475611749X

261 :デフォルトの名無しさん:2018/09/21(金) 08:13:00.69 ID:US5K8oGJ.net
>>260
ありがと
1万くらいなら買うんだけどなぁ

262 :デフォルトの名無しさん:2018/09/21(金) 11:19:39.33 ID:Nv8vO9db.net
本でなくて申し訳ないけど
ヘルプ。
クラスも大幅に拡張されてしまい昔の良書だとツリービュー、リストビュー位まで
最近のリッチな所はヘルプからサンプルソースにたどるのが早いかと

263 :デフォルトの名無しさん:2018/09/21(金) 13:21:21.50 ID:9xBQcUDg.net
Windows本体ってMFCで作ってるの?

264 :デフォルトの名無しさん:2018/09/21(金) 17:59:38.20 ID:/FmUXr1R.net
カーネルという意味では、ないやろな。性能面の要求はそんなに甘くないよ。
周辺の付加的モジュールでは、ATLとかは使ってるかも

265 :デフォルトの名無しさん:2018/09/21(金) 19:07:45.12 ID:M0K6QlhH.net
Windows7のペイントとかワードパッドとかをSpy++で見ると、
Afx〜の付くウィンドウクラス名が使われてるから、
このあたりはまだMFCで作られてたんじゃないだろうか。

266 :デフォルトの名無しさん:2018/09/21(金) 22:10:32.71 ID:Yrc2SKMF.net
なるほど

267 :デフォルトの名無しさん:2018/09/22(土) 09:01:41.72 ID:f3qG2b9t.net
「コンピューターの管理」なんかも、AfxWnd42やAfxFrameOrView42uが出てくる。

268 :デフォルトの名無しさん:2018/09/22(土) 12:43:01.39 ID:xOVRbYWf.net
>>261
>>259
うちにあるよ

269 :デフォルトの名無しさん:2018/09/22(土) 12:44:10.56 ID:xOVRbYWf.net
>>263
あやしいよな

270 :デフォルトの名無しさん:2018/10/02(火) 12:20:10.07 ID:T1hsru+o.net
VC++6.0で作っています。 MFCです。
普通にSDIを作りますが、そこからメニューバー等からダイアログボックスをモードレスで起動します。
すると、ダイアログを起動しながらメインウインドウも触れるようになるのですが、そのフォーカスを
モードレスダイアログとメインウインドウとをマウスを使わずにキーボードで切り替えることって出来ませんか

MSのWindowsOSのAlt+Tabではこれらはひとつとして認識されているようでこれでは切り替えられません
ちなみに、Windows7です

271 :デフォルトの名無しさん:2018/10/02(火) 12:45:27.08 ID:+xKncks4.net
モードレスなら出来るやろ

272 :デフォルトの名無しさん:2018/10/02(火) 14:53:03.01 ID:T1hsru+o.net
>>271
メインウインドウからモードレスダイアログを起動するのですが、すると、Alt+Tabではこれらはひとつとして
認識されますよ

273 :デフォルトの名無しさん:2018/10/02(火) 15:13:04.28 ID:yDKwoLm6.net
Ctrl+TAB

274 :デフォルトの名無しさん:2018/10/02(火) 15:45:33.11 ID:T1hsru+o.net
>>273
Ctrl+TABでは、ダイアログ上のコントロールのフォーカスが変わっていきます
ウインドウの切り替えはできません

275 :デフォルトの名無しさん:2018/10/02(火) 15:50:20.77 ID:yDKwoLm6.net
Ctrl+Alt+TAB

276 :デフォルトの名無しさん:2018/10/02(火) 16:01:18.57 ID:T1hsru+o.net
>>275
やってみましたが、Alt+Tabでアプリを変えていけますが、そこに出てくるアプリの数が減っているのを
除いて、同じ動作です。 アプリが変わります

277 :デフォルトの名無しさん:2018/10/02(火) 16:28:36.02 ID:7CL4bG8Y.net
モードレスの親がメインウィンドウなら切り替えできず、親がない(デスクトップ)なら切り替えできるのでは。
親がメインウィンドウの場合でも、PreTranslateMessageでTABキーを補足してSetForegroundWindowとかすればいいと思う

278 :デフォルトの名無しさん:2018/10/02(火) 16:35:36.67 ID:T1hsru+o.net
デフォルトでは用意されていないのかな
PreTranslateMessageを使えばなんでもできますが、
メインウインドウとダイアログと両方に書かないといけないからなあ。しょうがないのかな

279 :デフォルトの名無しさん:2018/10/02(火) 16:38:35.01 ID:T1hsru+o.net
PreTranslateMessageで書きますか。 キーは何をあてるのが自然でしょうか
Ctrl+Tabあたりかな
タブコントロールは、Tab だけと Shift+Tabで動きますからね

280 :デフォルトの名無しさん:2018/10/02(火) 21:23:19.58 ID:R8M7QKDK.net
vista、vs.net2003 vc++の組み合わせだが
ALT+TABでアプリがきりかわりながら
ふつうにSDIとモードレスのダイアログでトグルする

281 :デフォルトの名無しさん:2018/10/02(火) 21:49:14.12 ID:T1hsru+o.net
>>280
わざわざありがとう。私と環境がちがうからなのかな
PreTranslateMessageを利用して、Ctrl+Tabでプログラムを作りました。これでうまく行きました

282 :デフォルトの名無しさん:2018/10/07(日) 14:30:22.57 ID:stJt0pET.net
>>281
ダイアログをCreateする時、親ウィンドウ(省略時=NULL)を指定していないから、
アプリケーションのメインウィンドウ(=AfxGetMainWnd())が、親ウィンドウが
になっているからでは?

CDialog::Create(CWnd::GetDesktopWindow())

とかでいけるはず。 MFCとは関係なく、Windows APIでは、所有ウィンドウ
(Owner Window)と、親ウィンドウ(Parent Window)は別管理。

283 :デフォルトの名無しさん:2018/10/15(月) 20:08:17.72 ID:xZyzsY81.net
MSDN見ても解決しないのでお願いします。
CMFCColorDialogで作成した色選択ダイアログの動きが少しおかしいです。
どれかの色(六角形)を選択すると[OK]ボタンのフォーカスが当たり、再度
別の色を選択するとフォーカスが外れるんですが、仕様でしょうか??

284 :デフォルトの名無しさん:2018/10/15(月) 20:10:37.85 ID:xZyzsY81.net
.DoModal()を使っています。

285 :デフォルトの名無しさん:2018/10/16(火) 10:55:52.13 ID:gOw5Bgha.net
>>284
VS2008のNewControlsサンプルではそういう動作は見られないけど、
再現できるサンプルでもありますか?

286 :デフォルトの名無しさん:2018/10/16(火) 20:59:43.03 ID:KuFMVrck.net
>>285
わざわざ試していただいてありがとうござます!
こちらの環境、Windows10、VisualStudio2017なのでこれが原因っぽいです。
古いVisualStudioで試してみます。
業務アプリなのでサンプルは出しにくいです。申し訳ないです。

287 :281:2018/11/03(土) 20:11:07.69 ID:FHfXrfBW.net
>>282
おお、今頃ですが、ありがとうございました
これでAlt+Tabでもモードレスウインドウが出てくるようになりました !

288 :デフォルトの名無しさん:2018/11/03(土) 20:17:24.87 ID:FHfXrfBW.net
今まで、VC++6.0でずっとやってきました。特にそれで問題なかったからですが、意を決して、
Visual Studio 2017をインストして、古いソースコードを移植しようと思っています

VS2017に古いVC++6.0のdswファイルを読ませたのですが、うまくj変換できないようですが、どうしたら良いでしょうか
VC++6.0からの変換は出来ませんか

289 :さまよえる蟻人間 :2018/11/03(土) 20:20:22.32 ID:Z2+VfrEc.net
ワークスペースはソリューションに変わった。新しくソリューションファイルを作って、そこにC/C++のファイルを追加してビルドだ。

290 :デフォルトの名無しさん:2018/11/03(土) 20:48:27.94 ID:FHfXrfBW.net
インクルードファイルとかいろいろエラーがたくさん出てきたよ
これ相当無理っぽい???

291 :さまよえる蟻人間 :2018/11/03(土) 20:50:34.93 ID:Z2+VfrEc.net
>>290
エラー貼れ

292 :デフォルトの名無しさん:2018/11/03(土) 21:08:57.06 ID:FHfXrfBW.net
取りあえず、簡単に比較するために、VC++6.0でMFCのSDIのデフォルトを作りました
それと比較するため、VS2017でC++のWindowsデスクトップのデスクトップアプリケーションのデフォルトを作りました

すると、VS2017の方はMFC自身を使わないバージョンなのかな、CMainFrmとかIMPLEMENT_DYNCREATEとかなくて
VC6.0++のMainFrm.cppとかを2017の方に持ってきてコンパイルしたらCMainFrmが定義されてないとか
ずらっとたくさん出てきます

293 :さまよえる蟻人間 :2018/11/03(土) 21:11:31.59 ID:Z2+VfrEc.net
MFCに対応したプロジェクト/ソリューション設定じゃないとダメかも

294 :デフォルトの名無しさん:2018/11/03(土) 21:15:37.09 ID:FHfXrfBW.net
>>293
VS2017で、それを探してるのですが見つからないのですよ
MFCには対応してるのですよね。2015かそれ以前にはすでに対応してると聞いていたのですが
MFCを使ったデフォルトのコード生成はしてくれないとか??? w

295 :さまよえる蟻人間 :2018/11/03(土) 21:19:34.89 ID:uOx37ouV.net
Visual C++の中にMFCがある。Visual C++という項目がなければ、インストールが間違っている。

296 :デフォルトの名無しさん:2018/11/03(土) 21:23:19.86 ID:FHfXrfBW.net
>>295
メニューのファイルから新規作成、プロジェクトを選ぶと、その中にVisual C++はちゃんとありますよ
で、そこでWindowsデスクトップアプリケーションを選んでデフォルトを作ると、コードはSDKみたいなコードを吐きます
で、Windowsデスクトップウィザードってのがあったので、今これを選択してみたのですが、
アプリケーションの種類をコンソールにすると、その右にあるMFCのチェックボックスが有効になるのですが

297 :デフォルトの名無しさん:2018/11/03(土) 21:24:15.77 ID:FHfXrfBW.net
続き
Windowsアプリケーションってのを選ぶと、MFCのチェックボックスが使用不可になってしまいます

298 :さまよえる蟻人間 :2018/11/03(土) 21:27:13.99 ID:uOx37ouV.net
MFCアプリが作れないなら、インストールで追加するしかないぜ。

299 :さまよえる蟻人間 :2018/11/03(土) 21:29:11.91 ID:uOx37ouV.net
https://twitter.com/katahiromz/status/1058697364821528576
(deleted an unsolicited ad)

300 :デフォルトの名無しさん:2018/11/03(土) 21:29:36.23 ID:FHfXrfBW.net
おいおい、なんだこれ
VS2017で、新規作成、プロジェクトで、Windowsデスクトップウィザードで
コンソールアプリケーションでMFCをチェックしてデフォルトのコードを自動生成してみました
そしてソリューションのビルドしたら、CWinAppが定義されてないとかエラーがわんさか出てきたぞ

おいおい、デフォルトの自動生成コードもビルド出来ないじゃん

301 :さまよえる蟻人間 :2018/11/03(土) 21:30:32.78 ID:uOx37ouV.net
左下、「探しているものが見つからないとき」

302 :デフォルトの名無しさん:2018/11/03(土) 21:33:48.34 ID:FHfXrfBW.net
>>299
おや、そこが違う。 私のは、

visual C++の下に
Windowsデスクトップ
クロスプラットフォーム
MFC/ATL
テスト
その他
Extensibility

ってなってて、 MFC/ATLのところは
ATLプロジェクト
ってのだけがあります

303 :デフォルトの名無しさん:2018/11/03(土) 21:37:10.59 ID:FHfXrfBW.net
何かインストを失敗してるのかなあ。 あるいはインストするときに何をインストするのかチェックがあったんだが
それを間違えてるのか。 でも俺がチェックをしなかったのはモバイル関係のところくらいだったんだよねえ

304 :さまよえる蟻人間 :2018/11/03(土) 21:38:58.82 ID:uOx37ouV.net
https://qiita.com/tadnakam/items/042c7a19bf115e3b096f

305 :さまよえる蟻人間 :2018/11/03(土) 21:40:59.04 ID:uOx37ouV.net
VS2017は頻繁に変更されるもんだから、ちょっと混乱してるみたい。

306 :デフォルトの名無しさん:2018/11/03(土) 21:48:14.06 ID:FHfXrfBW.net
>>304
ありがとう。
右側の概要ってとこが、私のでは、インストールの詳細になっていて、
MFCとATLのサポート
ってのが私のでは、
x86用とx64用のVisualC++ATL
x86用とx64用のVisualC++MFC
ってわかれていて、ATLの方にだけデフォルトではチェックが入っていてMFCの方のチェックは
デフォルトでは外れていました。

チェックして再インストしてみますねw

307 :さまよえる蟻人間 :2018/11/03(土) 21:52:26.12 ID:uOx37ouV.net
インストよりもインスコの方が俗語の通りがいい。

308 :デフォルトの名無しさん:2018/11/03(土) 22:01:09.50 ID:FHfXrfBW.net
ただいま、 再インスコ中です
みなさん、 VS2017をインスコするときは、

MFC はデフォルトでは入らない !!!

ことがわかりました
VS2017をインスコするときは、注意しましょう
インスコするとき、オプションをチェックすると入ります、 多分。今やってるところ

309 :さまよえる蟻人間 :2018/11/03(土) 22:07:33.60 ID:uOx37ouV.net
Qiitaの記事、結構役に立ってるじゃん。責任ある情報技術者なら、Qiitaに記事を書ける程になってもらいたいね。

310 : :2018/11/03(土) 22:11:49.30 ID:NHF1sC9n.net
>>309
qitta って査読制ですか?

311 :デフォルトの名無しさん:2018/11/03(土) 22:16:25.81 ID:FHfXrfBW.net
出来ました。
MFCのインストがちゃんとできて、
MFCアプリケーションでデフォルトのMDI作ってみたら、 あら、すげえ

クラスビューなんかが出てくるのねw

312 :さまよえる蟻人間 :2018/11/03(土) 22:18:01.50 ID:uOx37ouV.net
最低限の審査はあると思うぞ。
詳しくは規約を。

313 :デフォルトの名無しさん:2018/11/03(土) 22:30:48.57 ID:FHfXrfBW.net
おや、新しいバージョンだと、
strcpy( a, b )
で、b に CSringとか出来ないんだね。 前の古いバージョンでは出来たのに

CString で返す関数も、char a[10] とかで宣言したのを、古いバージョンでは、retuen a
って出来たんだが、新しいバージョンではエラーになる。 一旦
CString ret;
ret = a;
ってやって、return ret;
ってやったらエラーが消えた

いろいろと細かい修正しないとダメみたいだねえ

314 :さまよえる蟻人間 :2018/11/03(土) 22:35:23.28 ID:uOx37ouV.net
暗黙の型キャストのあいまいさが嫌いな人が存在するらしい。

315 :デフォルトの名無しさん:2018/11/03(土) 22:42:34.44 ID:FHfXrfBW.net
>>314
いろいろとありがとう。 今日はとりあえずここまでにしておきます

316 :デフォルトの名無しさん:2018/11/04(日) 14:43:10.46 ID:5RY1Lh2I.net
>>313
きも

317 :デフォルトの名無しさん:2018/11/04(日) 21:56:04.47 ID:GQHsCvIR.net
>>313
http://gurigumi.s349.xrea.com/programming/visualcpp/unicode.html

318 :デフォルトの名無しさん:2018/11/05(月) 10:05:31.23 ID:iQgkSIfQ.net
>>317
これありがとう。LPCWSTRの関係で、めっちゃ詰まってました

319 :デフォルトの名無しさん:2018/11/05(月) 10:35:49.97 ID:cQLaagjN.net
>>313
そもそも、CStringはTCHARを扱うクラスなのに、
_tcscpyではなくstrcpyを使っていたのが間違い

320 :デフォルトの名無しさん:2018/11/05(月) 12:07:09.35 ID:iQgkSIfQ.net
>>319
今は、_tcscpyを使ってもエラーが出るけどな

321 :デフォルトの名無しさん:2018/11/05(月) 12:15:02.40 ID:mvX3Qu15.net
>>320
それはエラーではなくてセキュリティ上の警告では

322 :デフォルトの名無しさん:2018/11/05(月) 12:20:01.12 ID:iQgkSIfQ.net
>>321
そうです。 _sを付けたのを使えって
警告の設定を変更しないとエラーになってコンパイルが通りません
それをプロパティの設定で、Unicodeからマルチバイトに切り替えてコンパイルしたんだけど、どうも
Unicodeのままでうまく切り替わらないようなんですよねえ。 どうなってるのか。 今は時間がないので
またあとでやってみますが

323 :デフォルトの名無しさん:2018/11/05(月) 12:26:42.35 ID:mvX3Qu15.net
>>322
警告だから、それに関してはコンパイルは通る。
他の場所がコンパイルエラーになっているだけかと。

324 :デフォルトの名無しさん:2018/11/05(月) 16:42:29.67 ID:Lc5ZfJaA.net
VS2017ですが、新規作成で、MFCアプリケーションで作った時、
新規作成途中に出てくるSDLのチェックをつけて作成したときと、はずして作成したときと両方してみました

すると、SDLつきの時は、_tcscpyはエラーになってコンパイルできませんが、
SDLをはずして新規作成したのものは、エラーにならずにコンパイルできて実行できます
デフォルトはSDLつきなので、コンパイルできません

次に、新規作成して出来上がったプロジェクトで、
メニューのプロジェクトから一番下のプロパティに入って、構成プロパティ、C/C++の全般にある
SDLチェックというところで、はい(/sdl) いいえ(/sdl-)を切り替えてやってみると、
この切り替えが動作せず、SDLのオン、オフが効きません。 プロジェクトの新規作成のときに設定したものが
残っていて、あとからここのプロパティで変更ができないようです

同じように、プロパティの構成プロパティの全般で、文字セットがデフォルトではUnicode文字セットを使用する
になってるのですが、これをマルチバイト文字セットを使用するにしても
Unicodeのままでマルチバイトにならないようです

バグですかねえ?

325 :デフォルトの名無しさん:2018/11/05(月) 17:14:38.42 ID:o5QGnfIr.net
新規のプロジェクトにマルチバイト使うのやめようぜ

326 :デフォルトの名無しさん:2018/11/05(月) 20:46:10.49 ID:fgA77wSW.net
>>324
VisualStudioCommunity2017で試したが、普通に設定が反映されたぞ。
DebugとRelease、x86とx64で設定が別なのに気づいてないとかじゃないか?

327 :デフォルトの名無しさん:2018/11/05(月) 21:22:43.21 ID:Lc5ZfJaA.net
>>326
できました。多分それです。ありがとうございました

コードの編集画面の上にあるコンボボックスを見ると、Debugとx86になってるのですが、
その状態でプロパティを開くと、なぜか、x64になってました。
なのでプロパティ画面で、上にあるプラットフォームをアクティブ(Win32)に変えると、画面がおかしくなって
びっくりしましたが、画面の再描画ができなかっただけなようで、再びプロパティ画面を出して
アクティブ(Win32)を確認してから、マルチバイトやSDLの変更をしたら、ちゃんと動いたようです

プロパティ画面を開くときは、連動してないので必ず確認してから変更しないといけないということですね

ちなみになんとか誤魔化せないかと思って、 stdafx.h の最初に
#undef UNICODE
#undef_UNICODE
ってやってみたら、コンパイルまでは全部のcppファイルで出来たのですが、リンクで未解決エラーが出て
出来ませんでした

328 :デフォルトの名無しさん:2018/11/05(月) 22:12:55.20 ID:fgA77wSW.net
さすがにそれはおかしいのでVS2017再インストール推奨

329 :デフォルトの名無しさん:2018/11/05(月) 22:23:54.08 ID:Lc5ZfJaA.net
>>328
マジですか。 再インストしようかな

330 :デフォルトの名無しさん:2018/11/05(月) 23:46:35.28 ID:2AHpASAJ.net
_T() ?

331 :デフォルトの名無しさん:2018/11/06(火) 11:56:33.16 ID:rqFrnjhJ.net
>ちなみになんとか誤魔化せないかと思って

>リンクで未解決エラー

MessageBoxA と MessageBoxW とかを自分で書き分けてみると解決するはず

332 :デフォルトの名無しさん:2018/11/11(日) 14:34:30.31 ID:vUUak6BF.net
http://r2.upup.be/wV2qsULdHm

333 :デフォルトの名無しさん:2018/11/11(日) 17:52:29.57 ID:96wp+TZd.net
しねNG

334 :デフォルトの名無しさん:2018/12/07(金) 17:05:15.69 ID:meFvbPH8.net
MFCのツールバーって、リバーのように、「ツールバーを固定する」の動作はできませんかね。
ユーザーがコマンドを選択したら、その場所から動かすことができなくなるようにしたいのですが。

335 :デフォルトの名無しさん:2018/12/08(土) 16:28:45.38 ID:S81QsiH/.net
subclass化してメッセージループトラップしてmoveをにぎりつぶす

336 :デフォルトの名無しさん:2018/12/17(月) 19:07:24.59 ID:Fq49NMNr.net
HWND hWnd はできるけど、
HDC hDC って、別アプリ(別プロセス)に渡して、書き込ませることは出来ないの?
HDC の識別番号が、プロセスごとに別の「名前空間」みたいなことになってるのかな。

337 :デフォルトの名無しさん:2018/12/17(月) 19:18:47.70 ID:Fq49NMNr.net
GDI objects support only one handle per object. Handles to GDI objects are private to a process.
That is, only the process that created the GDI object can use the object handle.

↑によれば、HDC は、プロセス・プライベートだって、書いてるけど、
たまたますごいことみつけちゃったんだ・・・実は。

みんな知ってる?

338 :デフォルトの名無しさん:2018/12/18(火) 08:47:01.21 ID:G1V4hdx+.net
実は、PrintWindow(HWND hWnd, HDC hDC, DWORD flag) API を使うと、HDC をプロセスの
垣根を越えて渡せるんだ。プロセスA からプロセス B に HDC を渡す場合、
プロセスA で、PrintWindow() API を呼び出す。hWnd にはプロセスBで作成した
Window の HWND を、hDC には、プロセスAに所属している HDC を渡す。

MFCを使って実験してみると、この場合、プロセスBの hWnd にWM_PRINT メッセージが
来るが、OnPrint() ハンドラが BeginPaint(), EndPaint() を使わずに、メッセージから受け取った
hDC を CDC *pDC に入れて、WM_PAINT の時と同じ OnDraw() を呼び出すらしい。
らしいと言ったのは、もしかしたら、MFCが途中で何らかの手を加えている可能性があるから。

で興味深いのは、この時の pDC->m_hDC の値は、プロセスA のオリジナルの値とは
数値的には異なっていると言うこと。

推定ではあるが、PrintWindow() API を使うと、Windows System が、プロセスA での hDC の
識別番号とは異なる識別番号を、WM_PRINT メッセージのの hDC に与える。
これは、>>337 で書いているとおり、HDC は、process private だから、プロセスごとに
「名前空間」が異なるため、プロセスの垣根を越えるときには、同じ値をそのまま使うことは
出来ないため。

でも、結局、「番号」が変わっているだけで、同じ Device Context を「指している」ので、
効率よく 描画動作を行える。

この API を使えば、プロセスA で用意した実DC や メモリーDC に、プロセスB の OnDraw()
によって直接書き込ませることが出来ることを確認済み。

339 :デフォルトの名無しさん:2018/12/18(火) 08:56:36.56 ID:G1V4hdx+.net
この話には続きがある。
Ubuntu Linux の Wine Emulator 3.2 で実験してみると、PrintWindow() が上手くいかないらしい。
なので、誰かに直して欲しい、と言うこと。

直してクレクレ。

340 :デフォルトの名無しさん:2018/12/18(火) 11:55:37.33 ID:/M0/bFGF.net
http://dqmacro.blog.fc2.com/blog-category-5.html

chromeで開くと正常だけど
ffで開くと死ぬな

341 :デフォルトの名無しさん:2018/12/20(木) 16:21:01.93 ID:IGyhJ3NX.net
>>338
さらに実験してみたところ、プロセスA から、プロセスB の HWND に対して、
PrintWindow() した場合、プロセス B には、WM_PRINT も WM_PRINTCLIENT
も送られることなく、WM_PAINT、WM_NCPAINT が送られる。
興味深いことに、MainFrame のような、OVERLAPPEDWINDOW には、
メッセージキューを介すことなく、WM_PAINT、WM_NCPAINT が送られるが、
EditBox などの CHILD WINDOW には、メッセージキューに WM_PAINT が
格納された後、EditBox の WndProc に WM_PAINT、WM_NCPAINT が送られる。

もっと実験してみたところ、普段、PrintWindow() を使うことなく、Winow のサイズ
変更などをして再描画が必要な場合、(スレッド)メッセージキューには
ポストされることなく、直接 WndProc に WM_PAINT、WM_NCPAINT が
送られてくる。

また、PrintWindow() に渡す プロセスA の HDC を、MemoryDC にして、
常に固定のハンドル値を渡してみた。すると、興味深いことに、
プロセスB では、ほぼ毎回異なる値の HDC が渡されることが分かった。
ただし、時々連続して同じ値の HDC が渡されてくる。連続回数は、
2回〜10回くらいまでの開きがある。

なお、PrintWindow() の速度は思ったより遅く、プロセスB側が(敢えて)何も
描画しない場合でも、なぜか、1.3x10^(-4) 〜7.1 x 10^(-3) (sec) 程度かかる。
つまり、50万クロック程度かかってしまう。ただし、有る程度の大きさの
グラフィックを書いても、余り速度は変わらない印象を受けた。環境は書かないが、
余り速くはない 3.0GHz の Dual CPU のマシンでの話。

342 :デフォルトの名無しさん:2018/12/20(木) 17:27:58.15 ID:t8x/0UH1.net
なお予告なく変更されることがあります

343 :デフォルトの名無しさん:2019/02/01(金) 14:28:07.62 ID:Y7K3gTaF.net
MFC アプリケーションのツールバーを移動すると、ツールバーの移動枠とマウスカーソルの位置が離れる
https://social.msdn.microsoft.com/Forums/ja-JP/b47f8e8c-318b-4e7b-a81e-b97f26bffdc0/mfc

344 :デフォルトの名無しさん:2019/02/20(水) 12:07:37.06 ID:6ZQ0VW2w.net
スタティックビルドがうまくできたらうれしかった

345 :デフォルトの名無しさん:2019/03/04(月) 21:22:00.31 ID:w7LKY+n1.net
ウインドウを2枚用意して、片方を表に(上に)表示して、もう片方は裏にして見えないようにしている。で、裏の見えない方を
書き換えて、表のウインドウと入れ替えて、新しい描画のウインドウを出すということをしたいのです
裏メモリに書き込んで一瞬でモニターに出すという普通のやつをウインドウでします
裏でウインドウで書き込むとき、HIDE状態では書き込めないので、MINIMIZEの状態では出来ることがわかったので
そうしているのですが、問題はそれを最大化するときに、どうしても描画に時間がかかるというか、一瞬では出来ないのです
なので、アクティブ化せずに裏で最大化、あるいは、RESTOREする方法を探しているのですが、
APIのShowWindowとかだと、RESTOREもMAXIMIZEも必ずアクティブ化してしまうのですがいい方法はないでしょうか
いろいろとやってみて、2枚のウインドウに違う絵をかいておいて、片方をHIDE、片方をSHOWして、このHIDEと
SHOWと切り替えるってのが一番きれいに切り替わるようなのですが、書き込むとき、HIDEでは書き込めずに
MINIMIZEして書き込まないといけないので、MINIMIZEして書き込んだウインドウを表に出さずに大きくしてHIDE状態に出来れは
いいのですが

346 :デフォルトの名無しさん:2019/03/05(火) 03:38:03.26 ID:VDry4yCP.net
MemoryDCに書き込め

347 :デフォルトの名無しさん:2019/03/07(木) 10:13:48.09 ID:wL/Z2Jw6.net
MFCのSDIアプリケーションで、PCを一定時間操作しなかったときに、
「更新中」のダイアログをDoModal()で出して、内部の情報を更新する動作を作っています。
更新処理はダイアログの中で別スレッドで行っていて、
タイマーで定期的にスレッドを監視して、終わっていたらEndDialog()で閉じます。
他の操作を不可にした上でキャンセルは可能にするために、このように作りました。

ここまでは問題なく動いているのですが、
アプリケーションがアクティブでないときにこの更新処理が走ると、
「更新中」のダイアログが閉じられた後に、アクティブ表示になってしまいます。
表示がアクティブになるだけで、フォーカスまでは奪いません。
二つのアプリケーションがアクティブ表示になってしまう状態です。

不思議に思ってMFCのソースを追いかけたところ、
CFrameWndのOnEnable()やOnActivate()やOnNcActivate()で
WF_STAYACTIVEのフラグを使ってアクティブ表示を強制するような仕組みがあり、
この中の処理を通った結果、アクティブ表示になってしまうようでした。

どうしてWF_STAYACTIVEに引っかかるのかなど、細かい流れは追い切れていませんが、
アクティブでないときに裏でダイアログが出て、その後自動で閉じるような動きを、
CFrameWndは想定していないということになりますでしょうか。

見た目のだけの問題ではありますが、CFrameWndの仕組みを保ったまま、
この現象を回避する方法はありませんでしょうか。

348 :デフォルトの名無しさん:2019/03/07(木) 11:03:18.49 ID:MaxgRiSY.net
ダイアログの前にアクティブだったウィンドウをアクティブにしてから閉じる

349 :sage:2019/03/12(火) 23:39:31.92 ID:5NMUaJ/A.net
VS2019のリリースノートでのMFCへの言及は、廃止予定の機能一覧中にいくつかあるのみ。
MFCをバリバリ使っているわけではないけど、なんか悲しい。

350 :デフォルトの名無しさん:2019/08/09(金) 19:19:23.73 ID:sd7hbGHEW
MFCは、Menuイベントなどを処理する場合、まず、リソースエディタでMenuリソースを編集し、
項目の名前を入れ、そのプロパティーに IDM_XXXX というID名を入れてから、
ClassWizard から、処理するクラス名とこの IDM_XXXX の両方を選んで
「ハンドラ関数の追加と編集」みたいなボタンを押す、という作業になる。

C#だとIDEのFormDesignerから作業したい場合は、メンバ関数ではなくグローバル関数で
イベントを処理するらしい。だから、ID名もクラス名を入れる必要が無く、メニュー項目や
配置したボタンなどをダブルクリックするだけでハンドラ関数の追加と編集が出来る。

ところがこの動作は C#独特のものではなく、古くからVBでの標準的なやり方で
ExcelのVBAでも同様の動作がなされることが分かった。

351 :デフォルトの名無しさん:2019/08/09(金) 19:20:56.48 ID:sd7hbGHEW
>>350
誤:イベントを処理するらしい。だから、ID名もクラス名を入れる必要が無く、メニュー項目や
正:イベントを処理するらしい。だから、ID名もクラス名も入れる必要が無く、メニュー項目や

352 :デフォルトの名無しさん:2019/08/09(金) 19:29:07.90 ID:sd7hbGHEW
MFCのやり方だと、項目名だけを入力したばかりのメニュー・アイテムや配置したばかりのボタンを
ダブルクリックするだけだと、情報が不足してしまう。少なくともクラス名が必要になるから。
それとID名がなぜ必要になるかといえば、ツールバーの中のボタンとメニューのアイテムに
同じID名をつけておけば、プログラムの追加もIDEの操作の追加も全く無しに、
同じハンドラが共通して使えるようになるから。

もしそういうことが必要なければ関数名だけで良くなる。ハンドラの関数名は、ボタンに英語名を付けていれば
そこから導出できる。ただ、ボタンやメニューに日本語名を付けていた場合、それが難しいので
英語でID名を書いていた。ID_ABCDEF に対応したハンドラは、OnAbcdef() という名称にされていた。
C#だと、メニューが日本語名であっても、その日本語を関数名の一部に付けてしまうらしい。
しかし、プログラマーのセンスとしてはひらがなや漢字をそのまま関数名に付ける作法は異論が
出てきそうだ。

353 :デフォルトの名無しさん:2019/09/19(木) 20:20:47.92 ID:h0nmK2Rt.net
空のソリューションを作って既存のAとBのMFCダイアログベースのプロジェクトを追加して、リソースビューでAにBのダイアログをコピペしたらIDが同じという警告が出た。

AのダイアログからBのダイアログをDoModalで呼び出す内容なんですが、ビルドも実行させても問題ないように見えるが大丈夫なんでしょうか?

354 :デフォルトの名無しさん:2019/11/12(火) 03:43:11.18 ID:dQMkkNV/.net
数年前に作ったダイアログのコンボボックスの初期値が反映されなくなってたんだが
CComboBox:: SelectStringの第一引数nStartAfterを0から-1にしたら動作した
でもなんでやろ?0でよさげなのに

355 :デフォルトの名無しさん:2019/11/21(木) 21:56:18.80 ID:z5jykx3Sa
今もMFCを使っている人いるんだ。

新しく作るんじゃなくて、過去に作られたMFCプログラムを
メンテナンスしてるんだろうけど。

356 :デフォルトの名無しさん:2020/02/27(木) 02:47:52 ID:HQmHUU7r.net
いまやCDCといえばアメリカ疾病対策センター(Centers for Disease Control and Prevention)だね

357 :デフォルトの名無しさん:2020/02/27(木) 03:05:08 ID:CxyJejD6.net
>>349
MSは傲慢になっているだけ。

358 :デフォルトの名無しさん:2020/02/27(木) 15:15:55 ID:G6pyHvdg.net
>>356

359 :デフォルトの名無しさん:2020/03/18(水) 18:37:21 ID:7DDJtRdm.net
ローカルディスクの中で、MFCのCWinやCViewなどのソースは見られるのですが、
AfxGetApp()のソースコードだけが見つかりません。
どこにあるのでしょうか?

360 :デフォルトの名無しさん:2020/03/18(水) 18:37:49 ID:7DDJtRdm.net
>>359
誤:CWin
正:CWnd

361 :デフォルトの名無しさん:2020/03/18(水) 22:20:02 ID:rOcYLXbY.net
あなたの心のなかに

362 :蟻人間 ◆T6xkBnTXz7B0 :2020/03/18(水) 22:54:37 ID:k3A1kOjX.net
デバッグすれば見つかると思う。
多分inline だからヘッダにあると。

363 :デフォルトの名無しさん:2020/03/19(木) 02:54:18 ID:VRFqiqhe.net
>>362
拡張子を指定せずに、MFCのソースを含んだ全てのファイルを検索にかけたけど、
AfxGetApp()の定義だけは見つからなかった。
見落としは有るかもしれないが、当然、*.c, *,cpp, *.h, *.inl は全てチェックした。

364 :デフォルトの名無しさん:2020/03/19(木) 16:23:04.81 ID:iZLxCMVs.net
>>363
afxwin1.inlのアタマにあるぞ。
afxCurrentWinAppを返してるだけだが。

365 :デフォルトの名無しさん:2020/03/22(日) 02:44:03.68 ID:HvrypJyW.net
>>364
GUIのgrepで、ファイルマスク欄に *.imp と入れたつもりが *,imp になってました。
orz

366 :デフォルトの名無しさん:2020/04/04(土) 21:35:44.22 ID:chSF5SQRn
ブログで成果が出るまでの期間は「100記事」です【魔法はありません】
https://www.youtube.com/watch?v=-iVkNRvTuPw
月収800万円ブロガーの「1日ルーティン」を公開します【怪しい】
https://www.youtube.com/watch?v=CqD89NXyl0U
【朗報】ブログで「350日」の毎日更新をしたら、生活費は稼げますよ
https://www.youtube.com/watch?v=A_CAOCAQSs8
【最高】ブログで200記事を書くと、月5万円くらい稼げる話【実例あり】
https://www.youtube.com/watch?v=SdtRAEGOcyE
【報告】ブログで「月収1,000万」を達成できました【方法を解説する】
https://www.youtube.com/watch?v=pgjcuLp8wt0

367 :デフォルトの名無しさん:2020/04/16(木) 02:46:25.76 ID:EfWE4HPw.net
KillTimer() という Win32 APIは、MSDN によれば、
The KillTimer function destroys the specified timer.
The KillTimer function does not remove WM_TIMER messages already posted to the message queue.
つまり、既にメッセージキューにポストされてしまった WM_TIMER は、「除去されない」とあります。

ところが、MFC の CWnd::KillTimer() は、MSDN によれば、
Kills the timer event identified by nIDEvent from the earlier call to SetTimer.
Any pending WM_TIMER messages associated with the timer are removed from the message queue.
つまり、どんな pending 状態の WM_TIMER メッセージも、メッセージキューから除去される、
とあります。

となれば、MFC の KillTimer() は、何か自分で処理を付け加えているのかと思って、
MFC のソースを grep検索してみると、AFXWIN2.INL に
_AFXWIN_INLINE BOOL CWnd::KillTimer(int nIDEvent)
{ ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }
となっているだけで、単に Win32 の KillTimer() を m_hWnd に対して呼び出している
に過ぎません。

これはどういうことでしょうか??

368 :デフォルトの名無しさん:2020/04/16(木) 10:10:01 ID:przIFznP.net
そりゃ発行済でキューに入ったメッセージはそのままになる罠
自分で読んでしまえば消えるだけのこと

369 :デフォルトの名無しさん:2020/04/16(木) 10:35:53.84 ID:midwC3ZA.net
>>367
https://docs.microsoft.com/ja-jp/cpp/mfc/reference/cwnd-class?view=vs-2019#killtimer
こっちには削除されないと書いてあるので、昔のMFCの説明が間違っているのでは

370 :デフォルトの名無しさん:2020/04/16(木) 14:17:36.18 ID:EfWE4HPw.net
>>368
ただ、WM_PAINT や WM_TIMER は、他のメッセージとは異なる処理を
されています。
Win32のメッセージキューは、1つのキューに見えるものが、OSの内部では
複数本持っているか、描画のDirtyフラグなどでなんらかの特殊な扱いを
しているようです。

371 :デフォルトの名無しさん:2020/04/16(木) 14:26:57 ID:przIFznP.net
WM_PAINTは優先度最も低いので常に後ろに行くってどっかで観た

372 :デフォルトの名無しさん:2020/04/16(木) 14:46:13.29 ID:EfWE4HPw.net
実際には、WM_TIMER は、WM_PAINT以上に優先順位が低いです。
なので、PeekMessage()しても、他のメッセージがあれば WM_TIMERメッセージを
拾えるかどうかは余り定かではないと思います。
もしかすると、その場合には KillTimer()の処理に置いては、WM_TIMERが
メッセージキューに「ポストされて無い」とみなされるのかもしれません。
解釈が難しいです。

373 :デフォルトの名無しさん:2020/04/28(火) 14:27:43 ID:lEsMK9s4.net
いやー仕事でいじることになったんだけどぜんっぜんわからんわなんじゃこりゃ
独自定義の型山盛りでおまけにドキュメントも少ない。いやこれめちゃくちゃ難易度高くない

374 :デフォルトの名無しさん:2020/04/28(火) 16:08:22 ID:rYh8BUkN.net
俺は昨年からC#のwinformに移行してメチャ楽勝です。
もうMFCに戻りたくないです。
でもthreadで動かすのはこっちの方が分かりやすい。

375 :デフォルトの名無しさん:2020/04/28(火) 22:00:28.21 ID:jwgdFc00.net
>>373
仕事でってことだがMFCで書かれた既存のプログラムの更新とかなのかな?
そうで無いなら今更MFCなんか使わないことを強く薦める。

MFC必須と言う事ならお奨めの本は、
「MFCによるWindowsプログラミング」ISBN 475611749X
なんだが、古本でもAmazonで\36,000とかしてる。
https://www.amazon.co.jp/s?k=475611749X

東京在住なら国会図書館にあるみたい
https://iss.ndl.go.jp/books/R100000002-I000002930291-00

自分は、これの前の版の
「MFCによるWindows95プログラミング 」ISBN 4756119158
を今でも使ってる。

376 :デフォルトの名無しさん:2020/05/08(金) 00:23:39 ID:IXHJYCls.net
だめだー格闘したけどビルドすらできない
どうもvc++6.0以前のやつはvc2005以降とだいぶ違う?変換でエラー出るどころか文法もエラー出まくりでどうしようもならん。古い開発環境なんて無いし

377 :デフォルトの名無しさん:2020/05/08(金) 09:59:42 ID:oIDbptWL.net
_s 使えとかいっぱいでてうざいのは判る

378 :デフォルトの名無しさん:2020/05/08(金) 12:48:05 ID:IXHJYCls.net
それは確かプロパティで無視するようにできたよーな

379 :デフォルトの名無しさん:2020/05/08(金) 13:09:30 ID:V0PZ5eCc.net
無視したら、当時の脆弱性を認めることにはなるけどな。
あと forのカッコの中で宣言したループ変数のスコープとかも、6の時代とは違ったと思う。

380 :デフォルトの名無しさん:2020/05/08(金) 16:54:57 ID:iOEjZYuS.net
判らないなら VC6 使うべき
上位互換でも VC6 モードにするべき

381 :デフォルトの名無しさん:2020/05/08(金) 22:24:15 ID:kRmZw1lO.net
>>379
はぁ?

382 :デフォルトの名無しさん:2020/05/09(土) 05:00:08 ID:TVkAIoUw.net
MSと契約してたらVS6は手に入るはずだが。

383 :デフォルトの名無しさん:2020/05/09(土) 05:13:30 ID:wZuQoznS.net
XPまでしかインストールできなかった気がする

384 :デフォルトの名無しさん:2020/05/09(土) 06:25:10 ID:J9L1oHhf.net
仮想使えば?

385 :デフォルトの名無しさん:2020/05/09(土) 07:40:51 ID:TBKnesgm.net
古いWindowsならここにあるぞ
https://winworldpc.com/library/operating-systems

386 :デフォルトの名無しさん:2020/05/09(土) 09:44:57 ID:3rxWY8lS.net
MSDN なら XP も VS6 も入手してるはず

387 :デフォルトの名無しさん:2020/05/09(土) 09:47:30 ID:3rxWY8lS.net
>>385
なるほど
https://winworldpc.com/product/msdn/vs-60
https://winworldpc.com/product/microsoft-visual-stu/60

388 :デフォルトの名無しさん:2020/05/09(土) 13:24:52 ID:740LYA9f.net
えぇこんなサイトあるのと思ってググったけど著作権的にグレイゾーンというかブラックでは

389 :デフォルトの名無しさん:2020/05/09(土) 16:09:17 ID:TBKnesgm.net
ちゃんと線引きしてるよ
https://winworldpc.com/product/windows-xp/final

390 :デフォルトの名無しさん:2020/05/09(土) 19:31:34 ID:740LYA9f.net
要するにmicrosoftが黙認というか放置してるだけというか
権利を放棄してないのは確かだから使うならこっそりやりなさいよくらいのレベルなのかね
いずれにせよグレーなのは間違いない。仕事じゃ使えないね

391 :デフォルトの名無しさん:2020/05/09(土) 21:03:53 ID:TBKnesgm.net
仕事に使うって発想はなかったw
MSDNのCDをiso化して保存してるからな

392 :デフォルトの名無しさん:2020/05/09(土) 23:05:48 ID:VZmAPRaM.net
仕事につかえないっ(キリっ)て話なら
純正のVC6でももう使うなよωって思うωωω

393 :デフォルトの名無しさん:2020/05/09(土) 23:40:20.22 ID:TVkAIoUw.net
仕事したことない子供かよw

394 :デフォルトの名無しさん:2020/05/10(日) 00:08:40 ID:lS9VwhWL.net
仕事で使うなら再現可能性は大切だからな
従業員が違法行為をしていたら、懲戒免職で済めば良い方で
損害賠償請求されたっておかしくはない

395 :デフォルトの名無しさん:2020/05/10(日) 08:12:18 ID:HcnV9o5e.net
MFC保守なんていう面白そうな案件を当時を知らない若者にやらせるとかどうかしてる。

396 :デフォルトの名無しさん:2020/05/10(日) 08:30:33 ID:Pcmn53iK.net
隔離VMで昔を懐かしむなんて楽しみ方はしてるよ
今のハードウエアなら神速かと思いきや期待ほどではない

397 :デフォルトの名無しさん:2020/05/10(日) 08:46:41 ID:B13Er8N9.net
でもネットに情報一杯あるから苦労でもないね。

398 :デフォルトの名無しさん:2020/05/10(日) 15:21:27 ID:JjPR8mXC.net
過疎スレなのに無駄に伸びすぎ

399 :デフォルトの名無しさん:2020/05/10(日) 16:01:33.51 ID:nv4IBqVl.net
若かった頃を思い出すノスタルジースレ

400 :デフォルトの名無しさん:2020/05/10(日) 18:00:45.83 ID:Pcmn53iK.net
OS/2 1.0なんか楽しくて仕方なかった

401 :デフォルトの名無しさん:2020/05/11(月) 22:03:48 ID:qSq1/7+a.net
mfcのコードってどれもこれもハンガリアンな印象なんだけど新し目のmfcコードだとその悪習から脱却されてたりする?
前世紀から連綿と受け継がれてきたようなのしかまだ見たことがないんだけど。いやそもそも新し目のmfcなんて存在するのかという問題もあるが

402 :デフォルトの名無しさん:2020/05/11(月) 22:19:49 ID:lKGFrGqg.net
べつにハンガリアンが嫌なら自分のコードでは使わなきゃいいだけ。
使うライブラリのネーミングルールが気に入らないとか言うのは相当偏屈な奴だろう。

403 :デフォルトの名無しさん:2020/05/14(木) 05:37:45.19 ID:IJMYY156.net
型が分からなくても平気な人はプログラマに向いてない。

404 :デフォルトの名無しさん:2020/05/14(木) 09:52:03.18 ID:tvxDWcUo.net
ハンゲリアンは百害あって一利なし

405 :デフォルトの名無しさん:2020/05/14(木) 10:26:21 ID:IJMYY156.net
UNIX勢のGUIが不安定だった頃、
MFCアプリが高機能てんこ盛りで安定してたのはハゲリアンのおかげである。

406 :デフォルトの名無しさん:2020/05/14(木) 18:37:36 ID:8JWtj6XY.net
APIのリファレンスの記述用としては秀逸だと思うけどなあ

407 :デフォルトの名無しさん:2020/05/15(金) 07:34:00 ID:QqRlTuRs.net
MFC製アプリはMSに数兆円の利益をもたらした。

ハゲリンは100害あっても兆利あった。

408 :デフォルトの名無しさん:2020/05/15(金) 11:29:35.02 ID:QE59VEMD.net
> 安定してたのはハゲリアンのおかげ

関係ないと思うが

409 :デフォルトの名無しさん:2020/05/15(金) 18:17:59 ID:sHW7IJmG.net
理由も書かずに否定した気になってるという謎の万能感の持ち主w

410 :デフォルトの名無しさん:2020/05/15(金) 19:43:56 ID:mq4q1sRg.net
アンガリアン

411 :デフォルトの名無しさん:2020/05/16(土) 06:06:50 ID:VIJekRbB.net
>>409
変数名と高機能てんこ盛り安定は関係ない
そんなこともわからんのかバカ

412 :デフォルトの名無しさん:2020/05/16(土) 06:23:09.44 ID:Os/XxFcn.net
>>411
何の話をしてんの?

413 :デフォルトの名無しさん:2020/05/18(月) 10:37:08.40 ID:pyEiFhlF.net
90年代に書かれたのを最新のvisual studioで動くようにしてという仕事が降ってきて絶望している

414 :デフォルトの名無しさん:2020/05/18(月) 10:39:08.65 ID:XEI7YtdQ.net
全面的に描き治しになりますって見積もり出せ

415 :デフォルトの名無しさん:2020/05/18(月) 15:47:40.36 ID:0/z3ChKA.net
普通に動くんじゃないの?

416 :デフォルトの名無しさん:2020/05/18(月) 16:40:43 ID:E4/AoY55.net
90年台のVCだとfor文の初期化式のスコープでまず引っかかりそう

417 :デフォルトの名無しさん:2020/05/18(月) 18:08:37 ID:u5vOaLys.net
ソースコードの量より多いワーニングが出そう

418 :デフォルトの名無しさん:2020/05/18(月) 19:31:30 ID:knarOBVn.net
自分の作ったプログラム(MFC使用)でVC++4.0からVC++2008の移行を行ったけど、
(文法的に)エラー・ワーニングが出るところを機械的に修正していくだけで、プログラ
ムのアルゴリズムや構造を変えなければならないようなところは無かったから、
それほど手間はかからなかったよ。

419 :デフォルトの名無しさん:2020/05/18(月) 20:32:49.43 ID:u5vOaLys.net
2008はな。
でも今や2008もサポート停止。

420 :デフォルトの名無しさん:2020/05/19(火) 18:02:40 ID:kOq4o5Tk.net
>>414はマジ
信じられない工数がかかるなら
きちんと比例する費用をもらうことが
今後の仕事の単価を守ることでもある

421 :デフォルトの名無しさん:2020/05/19(火) 20:37:52 ID:AC8jjF95.net
>>419
うちでメインに使ってるのはまだVC2015だけど、2008ならもう
それ以降の最新VCに上げたからと言ってCソースの修正が
必要になる事ってほとんど無いやろ

422 :デフォルトの名無しさん:2020/05/20(水) 14:51:41 ID:Mh8h++lf.net
>>411
ハゲリン

423 :デフォルトの名無しさん:2020/05/23(土) 20:13:33 ID:a3FMTFIp.net
IE用の古いCHtmlViewで表示されているページを拡大縮小することは可能でしょうか?
MFCIEというサンプルもビルドしてみたのですが、CTRL+ + などは効かないようです。
プログラムからコントロールできるのでしょうか?

424 :デフォルトの名無しさん:2020/05/24(日) 05:40:28.33 ID:J6IYypHJ.net
MFCでAppWizardでひな形を作って色々試してるのですが、ツールバーのアイコンって
どうすればいいのでしょうか??
visual studio imaging libraryのアイコンを試しにツールバーのボタンに追加(コピー&ペースト)しようとしても背景がおかしくなります。
imaging libraryのアイコンが32bppのBGRAで、ツールバーのアイコンが24bpp。

425 :デフォルトの名無しさん:2020/05/24(日) 08:45:30.47 ID:576Jhui6.net
>>424
ツールバーのエディタではビットマップのままで作っておいて、
それと同じ並びのPNG画像を用意して、ソースコードで指定する。

426 :デフォルトの名無しさん:2020/05/24(日) 19:44:20 ID:J6IYypHJ.net
なんか、ツールバーエディタが32bppに対応してないっぽいですね...
>>425
ありがとうございます。試してみます。

427 :デフォルトの名無しさん:2020/05/24(日) 20:21:20 ID:J6IYypHJ.net
ツールバーエディタ使えないの死ねるな...
エディタ上でボタンの位置D&Dでかえれば、ビットマップも変わってくれるに
これを手動でしょうやるのか..

みんなさんどんなツール使ってるんでしょうか

428 :デフォルトの名無しさん:2020/05/25(月) 13:53:34 ID:5DfBXHrq.net
>>427
個人的には ToolBar のクラスを独自に改造したり、似たものを独自に作ったりしてる。

429 :デフォルトの名無しさん:2020/05/25(月) 20:02:58 ID:DlrmGgO8.net
>>428
自分もちょっとしたツール作って対応してみます
32bpp?のイメージリストをpngか32bppで書き出せるツールあたりを作ればいいのか?
もちろんイメージリストにイメージの追加とD&Dで移動

ありがとうございます

430 :デフォルトの名無しさん:2020/05/25(月) 21:52:48.92 ID:lY/wsl2a.net
>>429
今のツールバーは、グレー化の状態とか、メニュー用の小サイズとか、
一つのツールバーに対して複数の画像を持たせられるので、
そのへんも想定した方がよいかと

431 :デフォルトの名無しさん:2020/05/26(火) 08:52:20 ID:j6nucCxO.net
>>429
ちなみに、MFCが買い取ったBCGのライブラリには、
32bitのPNGやSVGに対応したツールバーエディタも入ってるみたい
https://www.bcgsoft.com/doc/ToolbarEditor.htm

432 :デフォルトの名無しさん:2020/05/26(火) 17:18:06.42 ID:cHOadEfk.net
>>429
昔から、MFCのToolBarには色々な問題点があったので、
仕組みの簡単さから言えばCToolBarクラス自体を自分で作り直したほうが
便利。

433 :デフォルトの名無しさん:2020/05/26(火) 20:10:43.66 ID:S7BwoTkr.net
とりあえず、上手くいくかわかりませんが
Delphi/C++Builderの方に32bppのImageListをD&Dで移動など編集できる機能があるので、
そこでビットマップ管理して、後はPNGもしくは32bppのBMPで書き出すコードを
追加して、それをMFCの方で利用

>>432
そうなんですか。でも、その場合、ツールバーの移動とかカスタマイズ機能を付けるとなると
大変?

434 :デフォルトの名無しさん:2020/05/26(火) 20:16:29.74 ID:cHOadEfk.net
>>433
そういえば、移動というか、Docking機能の実装は結構難しかったな。
MFCのバージョンによって容易さは違ってくると思う。
恐らく、新しいMFCはだいぶ楽になってる気がする。

435 :デフォルトの名無しさん:2020/05/26(火) 21:00:42.32 ID:S7BwoTkr.net
>>434
それなんですね。ツールバーやウィンドウのドッキング機能がほしかったので、とりあえず、MFCを使ってる次第です。
QtやDelphi/C++Builderの方にもウィンドウのドッキング機能があるっぽいですが、MFCが一番良さそうだったので

436 :デフォルトの名無しさん:2020/05/26(火) 21:05:12 ID:S7BwoTkr.net
後、今どきHigh DPIは必須なので、ちゃんとMFCのドッキングがHigh DPIで動くのか...AppWizardで造った雛型はデフォルトで、アプリのレイアウトの復元を行ってくれますが

そこら辺を考慮して最終的にMFCにするかQtにするかはたまたDelphi/C++Builderにするか

437 :デフォルトの名無しさん:2020/05/26(火) 21:09:08.37 ID:pBlDnMjv.net
4k非対応と明記すればOK

438 :デフォルトの名無しさん:2020/06/02(火) 19:44:26.62 ID:heENVoK9.net
ちょっと聞きたいんだけどMFCを使用してCUIアプリを書くことってある?
メインのプログラムがMFCでそれに関連するC++のCUIアプリ書いて言われて純C++で書いたらMFC使えって
CUIにMFC使うって発想がまったく無かったんだけどありえなくもないんかな

439 :蟻人間 :2020/06/02(火) 20:05:25.08 ID:8ohcub0U.net
>>438
コンソールでMFC使うのはアホだろ。メリットが一つでもあるのか?

440 :デフォルトの名無しさん:2020/06/02(火) 20:14:01.52 ID:YBBIGuS6.net
>>438
自分はCUIアプリでもMFC使う事が多いね。
MFCはGUI関連以外でも汎用的な処理がクラス化されていて便利な物が多数あるからね。
CUIアプリでも良く使うのはCStringとかCxxArrayとかCFileFindとかかなあ。
これらの大部分はATLでも実現できるけど、普段GUIアプリをMFCで作ってるからCUIでも
ATLよりMFCを好んで使ってる。

441 :デフォルトの名無しさん:2020/06/02(火) 20:33:53.79 ID:YBBIGuS6.net
>>438
あと、企画・開発から保守まで自分一人で行う物なら何をどう使っても良いけど、大き
なアプリの一部の開発なら、使うライブラリや記述・処理の作法なんかを他の人が作る
部分に合わせておくことは非常に重要。

442 :デフォルトの名無しさん:2020/06/03(水) 00:04:37.57 ID:RCJMsJJI.net
>>438
CString受け以外では使わないなあ
APIのラッピングは結局APIのリファレンスも読まないとだめだし

443 :デフォルトの名無しさん:2020/06/03(水) 09:22:52 ID:wbZbutmL.net
MFCは糞
もちろんGTKは糞だが
GTKよりも糞

444 :デフォルトの名無しさん:2020/06/03(水) 14:36:40.34 ID:cGkVHonE.net
C++Nativeの今風なGUIライブラリ作って欲しいわ
そこ得意分野のはずなのにな
もうC++には興味ないのか

445 :デフォルトの名無しさん:2020/06/03(水) 14:43:37 ID:UHE1JPNz.net
COMベースになるだろうな

446 :デフォルトの名無しさん:2020/06/03(水) 17:07:37.39 ID:RCJMsJJI.net
.netでc#でって感じで、俺らの欲しいものじゃない奴を作っては消えていく
未だにMFCの方が安泰な気がするんだけどなあ

447 :デフォルトの名無しさん:2020/06/03(水) 17:43:55 ID:z01mcF4V.net
>>444
winui 3...

448 :デフォルトの名無しさん:2020/06/03(水) 20:46:57 ID:EILm6QOX.net
TuneBrowserとか見ると、MFCも捨てたもんじゃないと思うけどな

449 :デフォルトの名無しさん:2020/06/03(水) 20:49:52 ID:PFUYBSjI.net
C++/CLIをもっと延命してくれればよかったんだがなぁ

450 :デフォルトの名無しさん:2020/06/03(水) 21:39:23.49 ID:cGkVHonE.net
>>447
C#側の都合を押し付けられる予感しかしない
C#やクロスプラットフォームとは縁を切って欲しい

451 :デフォルトの名無しさん:2020/06/03(水) 21:59:01 ID:z01mcF4V.net
fluent designが問題なんだよ。タッチフレンドリなアプリ作るならfluent designでもいいが、もっとマウス入力前提のデスクトップアプリ作る場合なfluentだとスペースが多すぎてダサくなる
もっと、Visual Studio IDEみたいな情報密度のアプリにFluent Design(WinUI)が対応してくれれば

452 :デフォルトの名無しさん:2020/06/03(水) 22:02:34 ID:z01mcF4V.net
Tunebrowser見てみたけど、おしゃれやな
こういうの簡単に..っていうかMFCのビジュアルテーマもっと用意しろよって...

453 :デフォルトの名無しさん:2020/06/04(木) 01:27:30.90 ID:pF3mhOuv.net
>>451
その路線windows8で失敗してるのにまた蒸し返すのかよって思ったな

454 :デフォルトの名無しさん:2020/06/04(木) 22:17:47.91 ID:x+eVDE0s.net
本当は実用性とデザイン性は相反することが多いんだよ。
なぜかというと今まで見たことも無いものが良いデザインに見えるからだ。
人間は見たことも無いことに驚く。そして驚きこそが良いデザイン本質だからだ。
便利だったり識別し易いものは既に多くある。それが実用性が高いものだ。
ところがよくあるものは陳腐に見えるため、良いデザインに見えない。
だからSF映画の世界では実用性のないUIを持ったコンソールパネルが宇宙船や
ロボットの中に描かれている。
見たことが無いのでかっこよく見えるのだ。
Windowのデザインも、4隅を丸くしたりするとかっこよく見えるが、
面積が無駄になるので実用性には乏しい。
だから、Windowの中の境界線を見えなくするものが流行っているが、めったに採用されてこなかった
ために驚きがあるため一部の人にはデザイン性が高く見える。
ところが、採用されてこなかったのは実用性が無いからであって、結局使いにくい。

455 :デフォルトの名無しさん:2020/06/05(金) 15:01:07.01 ID:WSRdRexs.net
馬鹿っぽい文章

456 :デフォルトの名無しさん:2020/06/05(金) 15:42:17.35 ID:gDPlzIqp.net
うん、まれに見る駄文だ

457 :デフォルトの名無しさん:2020/06/05(金) 16:06:30 ID:2cqRue0Q.net
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

458 :デフォルトの名無しさん:2020/06/10(水) 17:28:34.23 ID:zGKCrjfQ.net
MFCのせいでC++/CLIのGUIが衰退したのは本当ですか?
C++/CLIのGUIはもう終わりなのですか?

459 :デフォルトの名無しさん:2020/06/10(水) 17:49:50.64 ID:V+CQutVh.net
MFCはC++98すら未制定の時代に作られたライブラリだけど
C++17前提で作り直すとどんな感じになるかな

たとえば
RUNTIME_CLASS(hogehoge)

typeid(hogehoge)
みたいに

460 :デフォルトの名無しさん:2020/06/10(水) 21:15:41 ID:FCXoWDTQ.net
>>458
どっちかというと逆だと思う。C++/CLIがこけたせいでMFCが延命した。

461 :デフォルトの名無しさん:2020/06/10(水) 21:31:05.00 ID:zGKCrjfQ.net
>>460
なるほど。C++/CLIだと、C++言語の高速性が活かせなかったのかな?

462 :デフォルトの名無しさん:2020/06/10(水) 22:36:21.96 ID:AiHbZWJh.net
最近MSが出したTerminalのソースみたらゴリゴリのモダンなC++の中でWindows API使ってて震えたね
何とかしてくれよ本当

463 :デフォルトの名無しさん:2020/06/11(木) 10:03:27.11 ID:Th6rh/3U.net
>>462
なんで?、Win32 API 使っても別に問題ないじゃない。

464 :デフォルトの名無しさん:2020/06/11(木) 11:41:53.07 ID:DcPEy/qZ.net
MFCはゴミ
当時のMSの過学習の成果物

465 :デフォルトの名無しさん:2020/06/11(木) 15:06:27.47 ID:OAAeiR/0.net
>>464
と言ってもC++のクラスライブラリがこれしかない現実

466 :デフォルトの名無しさん:2020/06/12(金) 05:06:01.94 ID:mUcvmKZk.net
APIの極薄ラッパーなところが有り難いんだよ
余計なことを押しつけずAPIを使いやすくすることに徹してくれていて

467 :デフォルトの名無しさん:2020/06/12(金) 08:17:50 ID:70FlsBsC.net
MFCもFeature Packの後 更にBCGSoft買収して全部無料にするとか、
WPFもどっかのライブラリ買収して無料にするとかカッコいいアプリ作れるようにすれば開発者の意欲も沸くのにな
xamarinとか糞は買収するくせに

468 :デフォルトの名無しさん:2020/06/12(金) 09:43:15.85 ID:F8A7CVPb.net
使い安くなってるか?
余計な手間が増えてるだけだろ?

469 :デフォルトの名無しさん:2020/06/12(金) 15:34:56.34 ID:bpI5hVyH.net
>>463
GUIを作るにはあまりに低レベルなAPIしかなくて
今の時代にそこから書くのは辛すぎる
もう一段上の抽象化レイヤーなりMFCみたいなクラスライブラリが欲しいところ

470 :デフォルトの名無しさん:2020/06/12(金) 15:41:17.48 ID:6Yfh5mGy.net
ココはMFCの相談室ではないのか・・

471 :デフォルトの名無しさん:2020/06/12(金) 15:48:58.95 ID:1pXOSbLZ.net
Win32APIに対してのMFCは一段上に行ってない
抽象レイヤですらない

472 :デフォルトの名無しさん:2020/06/16(火) 01:13:30.22 ID:0JLXIDEj.net
>>471
薄いラッパーみたいなものかねえ

473 :デフォルトの名無しさん:2020/07/06(月) 15:47:04 ID:Sr9djJNI.net
「東京版CDC」設立準備と小池都知事
https://this.kiji.is/652740458292626529
2020/7/6 14:16 (JST)

474 :デフォルトの名無しさん:2020/07/09(木) 02:40:38.41 ID:DFLe4YjA.net
MFCの勉強する前にWindows SDKの勉強した方がいいってまじ?

475 :デフォルトの名無しさん:2020/07/09(木) 02:48:49.25 ID:sSml3bMj.net
物理を学ぶ前に数学を学んだ方がいい、という程度には。

476 :デフォルトの名無しさん:2020/07/09(木) 06:41:13.42 ID:jzluGOwX.net
MFCとAPIは同時に憶えられるよ
MFCはAPIの極薄ラッパーだかんね

MFC独自の概念、シリアル化とかドキュメントビューとか
APIあんまり関係ないのもあるけどね

477 :デフォルトの名無しさん:2020/07/09(木) 07:45:04.33 ID:dSC6yVgi.net
Win32 APIという超レガシーを今更勉強する気が起きるかどうか
昔はこれしかなかったからみんな頑張って勉強したけど

478 :デフォルトの名無しさん:2020/07/09(木) 08:04:06.42 ID:jzluGOwX.net
昔からあるというだけ
それで済む用事をわざわざ難しくする必要はない

479 :デフォルトの名無しさん:2020/07/09(木) 08:40:17.74 ID:sSml3bMj.net
勉強って言ったって、一々全部覚える必要はない
昔はgoogleとかないから名前覚えないと探せない問題はあったけど
今はよく使うものはなんとなく名前を覚えてしまう程度で充分だ
どうせエラーが発生したら調べることになるんだし
頑張るような要素はないと思うが

480 :デフォルトの名無しさん:2020/07/09(木) 09:37:01.56 ID:vrNDocOm.net
>>474
むしろMFCの勉強はしない方が良い
というかMFCの勉強はしてはいけない

481 :デフォルトの名無しさん:2020/07/09(木) 09:44:03.82 ID:jzluGOwX.net
大きなお世話ってやつ

482 :デフォルトの名無しさん:2020/07/09(木) 11:43:28.91 ID:x9sAwct8.net
MFCやWin32APIの勉強なんてさほど必要ないよ。
英単語の暗記のようなものだから。
電話帳を勉強する必要ないのと同じ。
公式ドキュメントに書かれていない問題点や誤解しやすい点など、
先人の労苦をネットで調べるのは意味がある。

483 :デフォルトの名無しさん:2020/07/09(木) 11:48:46.31 ID:TlzlBxT2.net
MFCに関わることで起きる問題は
MFCと関わらなければ回避可能

484 :デフォルトの名無しさん:2020/07/09(木) 12:42:41.81 ID:jzluGOwX.net
女に関わることで起きる問題は
女と関わらなければ回避可能
だろ? おまえの人生は

485 :デフォルトの名無しさん:2020/07/09(木) 13:02:23.02 ID:vrNDocOm.net
その発想は無かった

486 :デフォルトの名無しさん:2020/07/09(木) 13:40:50.75 ID:g4bG+/bQ.net
言い当て妙

487 :デフォルトの名無しさん:2020/07/09(木) 18:36:04.35 ID:DFLe4YjA.net
>>480
それを言ったら終わりだよー

488 :デフォルトの名無しさん:2020/07/09(木) 18:59:07.47 ID:jzluGOwX.net
本当にそう思ってるやつがこんなとこに来るのは荒らし目的

489 :デフォルトの名無しさん:2020/07/22(水) 22:44:03.42 ID:HWpUtmNc.net
うちの会社新人に研修でMFCやらせるんだけど大丈夫かな……多分創業当初から同じ課題渡してるんじゃないかな……

490 :デフォルトの名無しさん:2020/07/23(木) 00:35:10.40 ID:4rdlbzE6.net
本番で使ってたらおぞましいが
研修なら反面教師に最適

491 :デフォルトの名無しさん:2020/07/23(木) 01:36:12.34 ID:5yzO6ql9.net
C++使いがMFC使いたくないのは理解できるが、JavaとかPythonのようなモダン言語使ってる層ならわかりやすくて良いんじゃないの。

492 :デフォルトの名無しさん:2020/07/23(木) 03:32:15 ID:5ehZlcbf.net
>>490みたいなのはMFCすら使いこなせなかった人だし、
>>489の会社は潰れてないんだから問題ないのでは?

493 :デフォルトの名無しさん:2020/08/06(木) 01:38:43.65 ID:FpfultlR.net
ほかのC++のGUIライブラリ、例えばATL/WTLが
MFCに比べてそこまで使い勝手いいわけでもないけどな
些細なレベルで文句言ってただけ

494 :デフォルトの名無しさん:2020/08/06(木) 04:10:33.67 ID:yO4VBBsb.net
OWLは良かったんだけどな

495 :デフォルトの名無しさん:2020/08/06(木) 10:59:01 ID:6QU45l4b.net
OWL>>>越えられない壁>>>MFC
だったよな
どうしてこうなった

496 :デフォルトの名無しさん:2020/08/07(金) 12:50:43.79 ID:vhK9mMAk.net
これからはWinUI 3が標準になっていきそうだな

497 :デフォルトの名無しさん:2020/08/31(月) 00:12:50.36 ID:FOGtRXGJ.net
C++/CLIとC++/MFCのどちらがいいのだろうか?
C++/CLIはあまりメンテナンスされていないと聞くが

498 :デフォルトの名無しさん:2020/08/31(月) 07:16:24.51 ID:tHgQtCtq.net
その2つは比べるようなものでもないが?C++/CLIはFormsとMFCどちらも使える。
ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。

499 :492:2020/08/31(月) 14:05:28.74 ID:FOGtRXGJ.net
>>498
Σ( ̄ロ ̄lll) ガビーン
C++/CLIでMFCも使えるのですか!?

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

これってMSが推奨していないのですか?

500 :デフォルトの名無しさん:2020/09/01(火) 14:19:37.57 ID:/FoUQJki.net
今からMFCを勉強する方法ってありますか?
古い情報で学習しようとしても今と違いすぎていて無理ゲー
http://www.kumei.ne.jp/c_lang/indexmfc.html

501 :デフォルトの名無しさん:2020/09/01(火) 15:20:10.83 ID:fuWow3G5.net
無駄
tcl/tk とか Qt とか wxWidgets やれ

502 :デフォルトの名無しさん:2020/09/01(火) 15:55:24.00 ID:226bbKWF.net
>>500
そんなに違うか?
俺、win95時代にmsuセミナーで憶えたけど
大筋は変わってないぞ

503 :デフォルトの名無しさん:2020/09/01(火) 16:08:34.04 ID:/FoUQJki.net
>>501
そ・・・そんな・・・
C++で書いたコマンドラインツールをGUIにしたいので、MFCがいいと思ったんですけど
tcl/tkはC++で使えないみたいなので、Qt とか wxWidgets がいいのですか?
しかし、長生きするのはMFCってことはないでしょうか

504 :デフォルトの名無しさん:2020/09/01(火) 16:09:14.58 ID:/FoUQJki.net
>>502
最初のサンプルからしてVS2019で全然ビルドできないのですけど

505 :デフォルトの名無しさん:2020/09/01(火) 16:11:59 ID:/FoUQJki.net
>>502
つーかWindows95の時代って何年前ですか?
今の話をしているのですよ?

506 :デフォルトの名無しさん:2020/09/01(火) 17:04:32.66 ID:fuWow3G5.net
>tcl/tkはC++で使えないみたい

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

MFC は無駄

507 :デフォルトの名無しさん:2020/09/01(火) 17:08:44.94 ID:/FoUQJki.net
>>506
そうだとしても何を使えばいいのかわからないよ

508 :デフォルトの名無しさん:2020/09/01(火) 17:20:12.54 ID:ABFUDvdT.net
このサイトの「Win32 Application」でMFCを使うという例はいくらなんでも古すぎるのでは。
Unicodeも一切想定されていないから、標準設定ではコンパイルエラーになりそうだし。

509 :デフォルトの名無しさん:2020/09/01(火) 17:25:26.19 ID:vLz2GEqc.net
普通に今でも MFC 使ってるぞ。

510 :デフォルトの名無しさん:2020/09/01(火) 18:12:23.98 ID:/FoUQJki.net
>>508
他に良いMFCの教材があればいいのですが

511 :デフォルトの名無しさん:2020/09/01(火) 18:33:46.17 ID:vLz2GEqc.net
>>510
まず、VS2019で、MFCのHello World的なものはビルドできる。
そっかっら後は、MSDN の英語版を読むといい。
日本語版は駄目。

512 :デフォルトの名無しさん:2020/09/01(火) 18:48:11.66 ID:/FoUQJki.net
>>511
そうだとすると学習コストが尋常じゃなくなりそうですね
Windows SDKで作るのは大変だし、MFCは学習が辛いし、どうしたものか

513 :デフォルトの名無しさん:2020/09/01(火) 18:48:53.85 ID:vLz2GEqc.net
>>508
MFCがWin32のラッパなのだから、別に不適切ではない。
afxwin.h
などのヘッダファイルが、新しいMFCでは名称変更になっているが。

514 :デフォルトの名無しさん:2020/09/01(火) 18:49:44.51 ID:vLz2GEqc.net
>>512
Windowsプログラムとはそういうもの。
結構大変なんだぞ。

515 :デフォルトの名無しさん:2020/09/01(火) 19:26:13.61 ID:x63jWwwu.net
MFC は、unmanaged だろ。
まだ、存在するのか

VC++ か何かで、managed(.NET)から、unmanaged(.NET以外)を呼び出す機構があったような。
.NETのunmanaged拡張(C++/CLI)

516 :510:2020/09/01(火) 19:30:28.41 ID:x63jWwwu.net
C++/CLI は、非推奨か

最近のWindows では、C/C++ を、どうやってプログラミングするのだろう?

517 :デフォルトの名無しさん:2020/09/01(火) 20:33:34.93 ID:i5n1f2G3.net
>>516
コマンドラインならいくらでもC++を使える。
C++のGUIは選択肢が少なくなっている。
MFCも将来性なさそうだからWindows SDKしか残らなくなるかもね。
あるいは上の方に書かれているサードパーティのGUIを使うか。

Windowsの主要言語はC#やVBになってしまった。

518 :デフォルトの名無しさん:2020/09/01(火) 20:50:25.12 ID:z4ASdXsC.net
>>515
それ用のDLLが用意されていて、MFCのアプリケーションがほんの少しの変更で
C++/CLIでビルドできたよ。

519 :デフォルトの名無しさん:2020/09/01(火) 21:27:13.55 ID:vLz2GEqc.net
C++/CLI は非推奨でも、本物の C++ は非推奨な訳ではないだろう。

520 :デフォルトの名無しさん:2020/09/01(火) 21:27:53.58 ID:vLz2GEqc.net
>>516
C++ は、普通に

521 :デフォルトの名無しさん:2020/09/01(火) 21:28:30.81 ID:vLz2GEqc.net
>>516
C++は普通にMFCをVS2019と共に使ってプログラミングすればよい。

522 :デフォルトの名無しさん:2020/09/01(火) 22:08:28.50 ID:bSJmfpdA.net
.NET のアプリで定番のものって何があるかな
よく使うアプリはネイティブなのばかり
MFC 使ってるのか Win32 直叩きかは知らんけど

523 :デフォルトの名無しさん:2020/09/02(水) 10:34:38.82 ID:1e/YSh87.net
WindowsでC++アプリの定番はWin32ではなくMFC。
日本ではMFCが普及すべき時期に無料のVS Expressが出てきて、
それがWin32のみでMFCには対応してなかった状態で、後から
無料のVS Communityが出てきて、今度は、C++よりC#が
前面に押し出されてしまったため、C++使いがMFCでプログラム
する機会を逃してしまっただけ。

524 :デフォルトの名無しさん:2020/09/02(水) 10:37:42.15 ID:1e/YSh87.net
なお、C++の場合、VSの力が最大に生かせるのはMFCであって、Win32ではない。
メニューを処理する関数の作成なども、MFCだとVSによって自動化されているが、
Win32だとされていない。
ダイアログで文字列や数値を扱うDDEも、MFCではVSのサポートを得られるが、
Win32では得られない。
WM_CREATE, WM_SIZE, WM_LBUTTONDOWNなどのメッセージのハンドラ作成も、
MFCだとVSのサポートを得られるが、Win32だと得られない。

525 :デフォルトの名無しさん:2020/09/02(水) 11:33:30.85 ID:hzf0dQWg.net
オートマとマニュアルみたいなもん

526 :デフォルトの名無しさん:2020/09/02(水) 12:19:41.42 ID:kh3zUZ72.net
Win32だと手間がかかりすぎる

527 :デフォルトの名無しさん:2020/09/02(水) 13:08:08.39 ID:YtNHOpgs.net
>>512
VSで、MFCのプロジェクトを新規作成すれば、HelloWorld的な
アプリは出来ているのだから、>>500で入門することも可能なはず。
今のMFCと違いがあるなら、それをGoogle検索で調べる。
たとえば、#includeされているヘッダファイルの名前が違っていると思ったら、
二つのファイル名とMFCというキーワードを半角スペースで区切って入れて、
英語モードのGoogleで検索すれば出てくる。
英語モードで検索して出てきたページを、Chromeの右クリックメニューで
出てくる日本語翻訳機能で日本語にして読み、意味が分かりにくければ、
URL欄の右隣に有るボタンから英語に戻して、辞書を引きながら読めばよい。

528 :デフォルトの名無しさん:2020/09/02(水) 14:16:19.49 ID:+vFHXeZw.net
MFCでツイッタークライアントアプリ作ります

529 :デフォルトの名無しさん:2020/09/02(水) 15:26:47.53 ID:2IzEXmVe.net
>>527
VS2019のウィザードを使うとかなり大層なアプリが生成されるぞ
Hello world的なアプリってどうやって生成するんだ?

530 :デフォルトの名無しさん:2020/09/02(水) 16:27:22.64 ID:Wngy4TOD.net
>>529
「新しいプロジェクトの作製」で 「MFC アプリ」を選ぶと、「新しいプロジェクトを構成します」が出てくるので、右下の「作製」ボタンを押すと「MFC アプリケーション - アプリケーションの種類のオプション」
のダイアログが出てくるので、

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

アプリケーションの種類: は、デフォルトのままでも良いが、昔から作りたいものによって、
よく変更されていたものだから、変えて試して見るといい :
・単一のドキュメント : SDI アプリケーション
・複数のドキュメント : MDI アプリケーション (default)
・ダイアログベース : ダイアログベースアプリケーション

531 :デフォルトの名無しさん:2020/09/02(水) 16:37:24.58 ID:kh3zUZ72.net
>>530
MDIって推奨されてなかったのでは?
それが今でもデフォルトなのか?

532 :デフォルトの名無しさん:2020/09/02(水) 16:44:32.58 ID:nYKoGcM/.net
推奨されてないね、太古の昔から
俺が参加したmsuセミナーで既にそう言ってた

533 :デフォルトの名無しさん:2020/09/02(水) 17:04:58.98 ID:PicHUi2j.net
いまさらMDI
いまさらMFC

534 :デフォルトの名無しさん:2020/09/02(水) 17:22:46.76 ID:4SrpfbWk.net
タブのアプリだって、やってることはMDIなのでは?

535 :デフォルトの名無しさん:2020/09/02(水) 17:45:32 ID:2IzEXmVe.net
>>530
VS2019でそれをやってもさほど変わらないのだが?
Hello worldと比べると比較にならないくらい複雑なプログラムが生成される

536 :デフォルトの名無しさん:2020/09/02(水) 17:46:20 ID:kh3zUZ72.net
>>533
それを言ったらこのスレッドが不要ってことになるw

537 :デフォルトの名無しさん:2020/09/02(水) 17:52:02.17 ID:Wngy4TOD.net
>>535
最初にソースを見ると複雑に見えるが、慣れてくるとそんなに複雑ではなく、
>>500 のような解説サイトは、それで理解できるはず。

538 :デフォルトの名無しさん:2020/09/02(水) 18:16:21.96 ID:nYKoGcM/.net
>>534
MDIの悪いところを学んで改善したのがタブ

539 :デフォルトの名無しさん:2020/09/02(水) 18:53:59 ID:nd/1idBj.net
>>538
MFCのMDIにもタブ機能はあるぞ

540 :デフォルトの名無しさん:2020/09/03(木) 00:15:47.29 ID:fIWixQ3j.net
>>516
最近だとC++ WinUIに持っていきたい感じはするね
そのためかMSの中でC++の地位が上がってるような気がする
MFCはこのまま廃れていくんじゃないか

541 :デフォルトの名無しさん:2020/09/03(木) 00:27:42.71 ID:u9Xqc0gc.net
>>540
C++/WinRTのことかな?
これってまだ普及していないのはなぜ?

542 :デフォルトの名無しさん:2020/09/03(木) 00:38:52.17 ID:Fm+qdV+I.net
>>541
別物だけど...

543 :デフォルトの名無しさん:2020/09/03(木) 01:12:37.27 ID:u9Xqc0gc.net
>>542
別物かよwww
Windows上のC++開発環境っていくつあるんだ?

544 :デフォルトの名無しさん:2020/09/03(木) 01:14:14.89 ID:u9Xqc0gc.net
C++/WinRTもオワコンってことなのか?

545 :デフォルトの名無しさん:2020/09/03(木) 05:52:40.39 ID:yk4FSoXe.net
UWPはオワコンだろうがWinRT自体は普通のデスクトップアプリでも使えるはずだしな。

546 :デフォルトの名無しさん:2020/09/03(木) 11:40:53.69 ID:u9Xqc0gc.net
>>545
Win/UIが登場したらWin/RTがオワコンにならないの?
よーわからん

547 :デフォルトの名無しさん:2020/09/03(木) 13:04:18.42 ID:Ai/K3M0v.net
今後はWinUI一択だろうね
流行るかどうか次第だと思うけど
C++をまともにサポートしてるのは大きい

548 :デフォルトの名無しさん:2020/09/03(木) 13:25:24.02 ID:sVY42MJD.net
fzf をコマンドプロンプトにネイティブ対応したほうがはるかに幸せになれる。

549 :デフォルトの名無しさん:2020/09/03(木) 15:54:33 ID:fIWixQ3j.net
>546
完全にUWPの時代になるよ
.NET Frameworkが始まった時ってC++がおまけの扱いされてけど、
今回はWindows上にC++のアプリ作ってもらおうとしてる感じがする
乗り遅れるなよ

550 :デフォルトの名無しさん:2020/09/03(木) 20:15:13.46 ID:yk4FSoXe.net
UWPが全然人気ないから方向転換したんだろうが
https://ascii.jp/elem/000/004/014/4014034/

551 :デフォルトの名無しさん:2020/09/03(木) 20:29:01 ID:fIWixQ3j.net
方向転換したことに気付かないままMFCを使い続ける人も多いだろう
情報を拡散する人がいないのかな

552 :デフォルトの名無しさん:2020/09/03(木) 21:02:21 ID:uE1ENArI.net
>>550
その方向転換がされたらMFCとWinRTと別の環境ができるのかな?

553 :デフォルトの名無しさん:2020/09/03(木) 21:24:49.19 ID:sVY42MJD.net
トグルボタンよりもチェックボックス、という猛者はいないのか

554 :デフォルトの名無しさん:2020/09/04(金) 06:41:17.66 ID:lJr2idgkp
SIer業界がブラックな理由を解説する。エンジニアは自社開発をしているWeb業界がオススメ!
https://www.youtube.com/watch?v=iy4nnAI9og4
エンジニアの仕事が稼げる理由とは?プログラミングスキルと
仕事の需要は比例しないので、実は技術力が低くても稼ぐことができる!
https://www.youtube.com/watch?v=82Bs-NH8jAM
通勤時間が長い人ほど無能説。家賃節約とか言っている暇があったら、
会社の近くに引っ越して浮いた時間に副業したほうがお金も貯まるし強くなれる。
https://www.youtube.com/watch?v=mt6K1RJnk6I
プログラミングに英語は必要か?に対する明確な答え
https://www.youtube.com/watch?v=WWULJbVECKU
私がヤフーを辞めた理由
https://www.youtube.com/watch?v=-G-7Hc3rJw8
【業界研究】IT業界でひと括りにするのは危険。SIer、Web制作、
アプリ開発で仕事内容が全く違います。【就活・転職】
https://www.youtube.com/watch?v=_IJQ2iBkf4w

555 :デフォルトの名無しさん:2020/09/09(水) 16:47:17 ID:MbQfEtJP.net
WindowsのC++開発環境

Win32 : 情報はそこそこあるけど扱いが面倒
MFC : 今から勉強すると時間をドブに捨てる可能性あり
C++/CLI : 死亡
C++/CX : 死亡
WRL : 死亡
C++/WinRT : MSはこれを推奨しているが、UWPの開発環境なので人気なし

556 :デフォルトの名無しさん:2020/09/09(水) 17:12:57.59 ID:mnONwWHj.net
C++ で、GUI は作れない

DLL しか作れない

557 :デフォルトの名無しさん:2020/09/09(水) 19:56:59 ID:eJCpqUcY.net
いくらMFCの設計がいまいちだからといってもさすがに素のwin32でGUIやる方がよっぽど時間の無駄だわ。
けっきょくC++だと消去法でMFCになるんだよな。

558 :デフォルトの名無しさん:2020/09/09(水) 20:05:21 ID:RLRFnFcj.net
>>557
しかし、今からMFCを勉強するのも現実的なのか?
相当な時間がかかるのではないか?

559 :デフォルトの名無しさん:2020/09/09(水) 20:21:09.51 ID:XZ4eRuJ2.net
今ならより軽量なWTLって手もある。MFCはC++コンパイラのtemplate対応が不十分だった時代の遺産だから。

560 :デフォルトの名無しさん:2020/09/09(水) 20:40:15.31 ID:eJCpqUcY.net
>>558
だから消去法だよ。いまさらwin32でやろうとする方がもっと非現実的。

561 :デフォルトの名無しさん:2020/09/09(水) 20:48:18.25 ID:p4Sr79GR.net
まあ、知っておいて損は無いけどな。
じゃないと議論が出来ないからな。

562 :デフォルトの名無しさん:2020/09/09(水) 20:52:30.25 ID:XZ4eRuJ2.net
Win32は古典のようなもんだからWindowsアプリ開発初心者なら少しはやっておかないと。
ほんの少しでいい。電話帳を暗記する必要ないのと同じだから。公衆電話のかけ方を学ぶ感じ。

563 :デフォルトの名無しさん:2020/09/09(水) 21:23:11.56 ID:6BCsKsVr.net
>>558
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倍有って、開発効率は格段に上がる。

564 :デフォルトの名無しさん:2020/09/09(水) 21:25:27.57 ID:6BCsKsVr.net
>>563
他にも、
WM_LBUTTONDOWN が、OnLButtonDown()
WM_MOUSEMOVE が、OnMouseMove()
WM_NCPAINT が、OnNcPaint() または、OnNcDraw()
に対応している。
WM_COMMANDは、OnCommand()も有ったかも知れないが、
メッセージマップと言う仕組みで、IDEと組み合わせてもっと効率よく
ハンドラを作製できるようになっている。

565 :デフォルトの名無しさん:2020/09/09(水) 21:28:56.62 ID:6BCsKsVr.net
>>555
Win32より、MFCの方が後発で、C++でWindowsアプリを作るには、後者の
方が定番で、開発効率も高い。
MFCは未だに改良が進んでいる。
たとえば、ドッキング、自動レイアウト関連、リボンなどは、Win32にはなく、
MFC独自。
また、Windowsアプリらしいアプリは、Win32より、MFCの機能を使っている。
商用やプロが作るnativeアプリは、ほとんどがWin32ではなくMFC製。

566 :デフォルトの名無しさん:2020/09/09(水) 21:36:29 ID:MqfHYfA6.net
>>559
軽量かもしれんがWTLも全然お手軽ではない
何十年も期間はあったのにMFCの代わりにATL/WTL使うようにはなってない

567 :デフォルトの名無しさん:2020/09/09(水) 21:40:13 ID:MqfHYfA6.net
ってかこんな書き込みあるスレじゃなかったけど
なにが紛れ込んだんやろか?
ATL/WTLのスレは2年ほど書き込みないがあっちが正常やで

568 :デフォルトの名無しさん:2020/09/09(水) 21:49:28.18 ID:MbQfEtJP.net
>>565
自分の場合、MFCを始めようとしても何から始めればいいのか分からないし、もはやMFCをちゃんと解説した本もない。勉強する時間もない。
Win32の方がある意味わかりやすい。オブジェクト指向ではないので、クラス構成を把握する必要もない。小規模な開発なら何とかなると思う。

569 :デフォルトの名無しさん:2020/09/09(水) 21:54:12.58 ID:L9rnU3We.net
今からだと WTL/ATL の情報はあまり拾えないのでは

wxWidgets のようなクロスプラットフォーム狙うか、
いっそ C++ から離れるか

570 :デフォルトの名無しさん:2020/09/09(水) 22:08:55.04 ID:XZ4eRuJ2.net
>>567
最後に書き込んだの私だった(笑)

324 自分:デフォルトの名無しさん[] 投稿日:2018/12/02(日) 09:05:18.31 ID:pHBSzoap
最近、頻繁にWTL10のmasterブランチが更新されているね。
https://sourceforge.net/p/wtl/git/ci/master/tree/

571 :デフォルトの名無しさん:2020/09/09(水) 22:12:49.72 ID:eJCpqUcY.net
5chでWTL推してたのは実は一人だけだったと?

572 :デフォルトの名無しさん:2020/09/10(木) 02:25:17.80 ID:h1l1ZP9+.net
>>568
MFCの場合、まず、IDEを使って、MFCプロジェクトを作るところから始める。
後は、Menuリソースに1つメニュー項目を追加して、それに対するハンドラを作成し、
中でAfxMessageBox()などを使って、ハンドラが呼び出されるのを確認する。
画面は、OnDrawの中でpDC->MoveTo(), pDC->LineTo()で直線を描いてみる。
それが出来たら、さっきのハンドラの中で、Invalidate()を呼び出すテスト。
Invalidate()を呼び出すと、メッセージがメッセージキューにたまりまくっている
場合以外は、比較的即座にOnDraw()が呼び出される。
それで色々いじって試してみるといい。

573 :デフォルトの名無しさん:2020/09/10(木) 06:03:07.80 ID:zeENOEPq.net
そもそも、もうWindows専用アプリを新しく作る事自体、ほとんど需要ないだろ・・
だから、メインとしてAndroid/iOS向けに開発したクロスプラットフォーム向けのアプリで
Windows向けもビルドできるというおこぼれをもらうしかない。

574 :デフォルトの名無しさん:2020/09/10(木) 06:32:05 ID:O4HBWdjE.net
FAの世界にはあるんだな。

575 :デフォルトの名無しさん:2020/09/10(木) 07:10:35.50 ID:wdhKSMlq.net
>>560
いや、そんなでもないよ
Win32の手順や概念をクラス化なんて秒殺でできるからな
普通にCで書いてる感覚でクラス化したほうがいいところがあればひょいと
んで、毎度おなじみのコードが出てきたら再使用できるように括り出しておく
それだけのことで非現実的というほど大変なことではない

576 :デフォルトの名無しさん:2020/09/10(木) 07:14:58.32 ID:cx/3z2qx.net
Windowsアプリの需要がないって話はエンドユーザー向けパッケージソフト市場しか見てないんじゃないかな。

577 :デフォルトの名無しさん:2020/09/10(木) 07:39:42.50 ID:zeENOEPq.net
ごめん。そうだな。一般消費者向けの事しか考えてなかった。で、それ以外向けのWindowsアプリの需要はどれくらいあるのか知らんが。

578 :デフォルトの名無しさん:2020/09/10(木) 11:03:35.58 ID:QWaq+avL.net
CADツールとかオープンソースのもいれたら
いまだに新しいものが出てきてるからね
Webだとパフォーマンス出ない分野のツールはまだまだ有効

579 :デフォルトの名無しさん:2020/09/10(木) 11:12:12.76 ID:YCiClA3r.net
本板のWin32API質問箱スレがいまも活発であることがすべてを物語っているね。

580 :デフォルトの名無しさん:2020/09/10(木) 12:25:31.10 ID:ypm5ktrY.net
MFC とか、Jeffrey Richter とか、何十年前の話

今でも、医療用・産業用ソフトなどは、Windows 限定かも

581 :デフォルトの名無しさん:2020/09/10(木) 12:31:20 ID:cx/3z2qx.net
>>579
年寄りのマウント合戦で盛り上がっているようにしか見えないが。

582 :デフォルトの名無しさん:2020/09/10(木) 12:42:04.34 ID:PEh+sMxn.net
一太郎やPowerDirectorは、今でもMFCアプリだな
昔から大して変わっていないとも言えるが

583 :デフォルトの名無しさん:2020/09/10(木) 14:48:35 ID:h1l1ZP9+.net
MSがOfficeやVisioみたいなもので、大半の需要を独り占めしてしまっているので
desktopアプリを食っていくために作ることが難しくなった。
MSが手を出してない分野では、ぎりぎりなんとかなっていることもある。
でも2DグラフィックはAdobe、3DはAutoDeskなんかが強い。
最近は、3Dは、OSSのBlenderもあるから生半可には参入できないが。

584 :デフォルトの名無しさん:2020/09/10(木) 14:52:02 ID:h1l1ZP9+.net
でも、たとえ、有名ソフトと「かぶっていても」、欲しくなるソフトはある。
でも、有名ソフトが無料化してる場合は辛い。
本等は、完全なダンピングだから、法的な取締りの対象にならなければならないのだが。
Visual Studio Communityはダンピングだから、罰するべきだ。

585 :デフォルトの名無しさん:2020/09/10(木) 14:58:29.69 ID:wdhKSMlq.net
一太郎みたいに学割を設定すればいいのにね

586 :デフォルトの名無しさん:2020/09/10(木) 14:59:16.88 ID:YCiClA3r.net
そんなこといったらAndroid StudioやEclipseもダンピングにならないか?

587 :デフォルトの名無しさん:2020/09/11(金) 14:33:21.36 ID:TREPbbxK.net
Win32は非効率というが、自分には一番理解しやすかった。
C言語なので、Windowsの知識がなくても地道に積み上げながら理解できる。

他の開発環境だとC++クラスライブラリなので、クラスの役割の全体像を把握するまで何もできない。しかもWindowsの前提知識が必要。

588 :デフォルトの名無しさん:2020/09/11(金) 14:58:07.59 ID:Pv6SYq8F.net
>>587
実は、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でこれに相当する作業を手作業でするのはとても効率が悪い。

589 :デフォルトの名無しさん:2020/09/11(金) 15:55:14.24 ID:chzJA6nh.net
>>588
Win32+MFCを習得するのに何年かかるんだ?

590 :デフォルトの名無しさん:2020/09/11(金) 16:04:18.58 ID:Cxw4gZ+X.net
俺はこんなだった
win32: Petzoldの本で1ヶ月
mfc: msuセミナーで2週

win32は少しでもかじってれば、あやふやでもmfcは何とかなる

591 :デフォルトの名無しさん:2020/09/11(金) 16:09:34.01 ID:xLNh1C0u.net
Win32API
Cの理解が先に出来てたから
イベントドリブンとかメッセージループとか
典型的な描きかただけなら1日で充分理解出来た
全体理解なんて今でもムリポ

MFCも秒
C++とWin32APIを理解してたらそもそも勉強の必要すら無い

592 :デフォルトの名無しさん:2020/09/11(金) 16:09:39.60 ID:GJKjt1p6.net
>>589
何を持って習得と言うかわからないが、
1. HelloWorldは、IDEが作ってくれる。
2. Menu項目の作り方と、ハンドラの作り方は、ネットで検索すると
 解説されたものがいくつかあるはず。
3. OnDraw()の中の書き方は、Win32のGDIとCとC++の書き方程度の違い
 で、基本的に変わらない。
4. WM_LBUTTONDOWNとOnLButtonDown()などは一対一に対応しているだけで、
 Win32と同じ。
5. Dialogのデータ交換DDEは、チュートリアルを読まないと難しい。
解説サイトを読むのは人によるが、速い人は20分とかでも読めるのではないか。

593 :デフォルトの名無しさん:2020/09/11(金) 16:11:21.83 ID:GJKjt1p6.net
>>591
MFCは、習得すれば効率は良いが、IDEとの連携を習得するのに時間が掛かる。
IDEは、かなり使い込んでも、知らない機能は多い。

594 :デフォルトの名無しさん:2020/09/11(金) 16:37:04.91 ID:TREPbbxK.net
>>592
今のVSはMFCのHello worldを作ってくれない
最新情報じゃないと意味ないよ

595 :デフォルトの名無しさん:2020/09/11(金) 16:46:49.13 ID:TREPbbxK.net
>>591
>C++とWin32APIを理解してたらそもそも勉強の必要すら無い

俺はVS2019が新規作成で生成した複雑なプログラム(VS2019はHello worldを生成しない。いきなり複雑なものを生成する)を見て途方にくれたがなー
何から始めればいいのか全く理解できない

596 :デフォルトの名無しさん:2020/09/11(金) 17:13:09.59 ID:GJKjt1p6.net
>>594
作り方がこのスレッドにも出ていたぞ。

597 :デフォルトの名無しさん:2020/09/11(金) 17:14:10.08 ID:GJKjt1p6.net
>>595
MFCプロジェクトを作る際、「Visual Studio」となっているところを、
「MFC Standard」に変えれば MFC の Hello Worldが出来るぞ。

598 :デフォルトの名無しさん:2020/09/11(金) 17:32:38.43 ID:TREPbbxK.net
>>597
VS2019でその通りにやってみたけどできなかったよ

599 :デフォルトの名無しさん:2020/09/11(金) 17:59:56.28 ID:+RJnbz7u.net
ID:TREPbbxK の脳内にあるHello Worldアプリが何を指すのか次第な気がする

600 :デフォルトの名無しさん:2020/09/11(金) 18:06:29.86 ID:Cxw4gZ+X.net
mfcは単純にwin32の極薄ラッパーかというとそうでもない
ドキュメントビューとかシリアル化、DDX/DDVなんてのは独自の概念だ

601 :デフォルトの名無しさん:2020/09/11(金) 19:04:14.74 ID:Y8ERPbJh.net
MFCを新たに勉強するのが無理とか言っているような人は他のどの開発環境・
言語でも使えるようになるのは無理だろうし、プログラミングに限らず何をやっても
ダメな人間だと思う。

602 :デフォルトの名無しさん:2020/09/11(金) 19:10:08.33 ID:+RJnbz7u.net
今さら公衆電話の使い方なんて覚える必要ないでしょ(キリッ

603 :デフォルトの名無しさん:2020/09/11(金) 19:33:09.27 ID:TREPbbxK.net
>>599
少なくともHello Worldは表示できなかった
非常に複雑なものが生成された

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

ただ急にWindowsでプログラミングをしないといけなくなって困っているだけだが?
組み込みのプログラミングと違ってフレームワークが全てを支配するというのが苦手なので仕方がない。

604 :デフォルトの名無しさん:2020/09/11(金) 19:50:12.24 ID:+RJnbz7u.net
>>603
プログラマがすべてを把握する責任を負わなくていい。それがフレームワークの恩恵。
WindowsだろうがmacOSだろうがスマホだろうがこれは同じ。

605 :デフォルトの名無しさん:2020/09/11(金) 20:10:36.37 ID:GJKjt1p6.net
>>598
できた結果を書いている。
Hello Worldというのは、なにも、Hello Worldと表示するプログラムの事を
意味しているわけではなく、最初に学習し易いサンプルの事だぞ。

606 :デフォルトの名無しさん:2020/09/11(金) 20:10:37.20 ID:GJKjt1p6.net
>>598
できた結果を書いている。
Hello Worldというのは、なにも、Hello Worldと表示するプログラムの事を
意味しているわけではなく、最初に学習し易いサンプルの事だぞ。

607 :デフォルトの名無しさん:2020/09/11(金) 20:14:22.27 ID:GJKjt1p6.net
>>603
ちゃんと「Standard MFC」に変えた場合、
Hello World という文字は表示されないが、MFCにとっては、それ以上減らせない
程度にシンプルなサンプルが作製される。
オイラもアセンブラでプログラムしていた口だから、人が勝手に用意した
型枠を使うのは余り好きではなかったし、気持ちは分かる。
しかし、MFCでは、原則的にはあれ以上は減らせない。

608 :デフォルトの名無しさん:2020/09/11(金) 20:39:40.32 ID:+RJnbz7u.net
開発環境が勝手に作った数々のファイルに埋もれてしまう体験は、なにもMFCに限った話じゃないだろう。

609 :デフォルトの名無しさん:2020/09/11(金) 20:49:11.08 ID:+RJnbz7u.net
Hello Worldの問題点は、出力しか試せないところだね。
ユーザーからの入力がプログラムに反映されるところまで試さないと
プログラマとしてはひと安心できないはず。

610 :デフォルトの名無しさん:2020/09/11(金) 21:01:25.87 ID:nAPZqh6B.net
そもそもGUIアプリでHello,worldって何?w

611 :デフォルトの名無しさん:2020/09/11(金) 21:20:39.55 ID:DA1blzOi.net
SDI形式で、ドキュメント・ビューの仕組みは使わない方が、よりわかりやすいとは思うけどな

612 :デフォルトの名無しさん:2020/09/11(金) 21:27:53.38 ID:+RJnbz7u.net
C#でアプリを作ろうものなら、意味不明なXMLファイルが一緒に生成される気持ち悪さに耐えなければならない。
気持ち悪いのはMFCだけじゃないってこと。こういうもんだと慣れるしかない。

613 :デフォルトの名無しさん:2020/09/11(金) 23:00:46.72 ID:dNbZ7rGGn
挑戦する馬鹿として生きるか?批判だけする雑魚として死ぬか?
https://www.youtube.com/watch?v=4jlQlo1oC3E
奴隷職に就く★自ら奴隷を選んで不満を言う愚かさ
https://www.youtube.com/watch?v=loD5ukKsZOk
バカは騙され最低賃金でコキ使われる★物価とか関係なし
https://www.youtube.com/watch?v=sQMrMfqdgrQ
勉強しないから奴隷人生★実業と人を残す人生哲学
https://www.youtube.com/watch?v=on2gURXi4Ks
正社員特権が「ブラック社員」を生む★正社員は訴え放題
https://www.youtube.com/watch?v=lSW1vc8-qMg
「で、年収は?」と聞くバカとは合わない社長業
https://www.youtube.com/watch?v=nEELEUhBLDk

614 :デフォルトの名無しさん:2020/09/11(金) 22:50:01.30 ID:3mrNom4D.net
C# も普通のテキストエディタと csc だけ使えば
hoge.cs と hoge.exe しか造られないからすっきり

615 :デフォルトの名無しさん:2020/09/16(水) 14:43:10.77 ID:3ja5x8/R.net
CrystalDiskMark はMFC採用で独自コントローラー(Project Priscilla)まで実装しとる
MFCバリバリ現役じゃん

616 :デフォルトの名無しさん:2020/09/16(水) 15:11:51.04 ID:zy/NdAsc.net
ライブラリの新旧だけで優劣だと思っちまう
浅はかなやつってライブラリで仕事してる人の
苦労が何も解ってないんだろうな

617 :デフォルトの名無しさん:2020/09/16(水) 15:43:04.37 ID:wZC9/K7G.net
MFCの衰退を見守るスレ
MFCの最期を暖かく見送るスレ
MFC利用者をdisるスレ

618 :デフォルトの名無しさん:2020/09/16(水) 17:39:55.40 ID:ZQue+HKY.net
必死に現役アピールするからおもちゃにされてしまっているw

619 :デフォルトの名無しさん:2020/09/16(水) 17:57:07.68 ID:K+FHyBLB.net
>>615
現役なのは確かだけどオワコンでもあるんだよね

620 :デフォルトの名無しさん:2020/09/16(水) 18:02:53.43 ID:iyuoEKtv.net
TortoiseGit とかもmfc使ってる。

621 :デフォルトの名無しさん:2020/09/16(水) 18:56:19.61 ID:g8ss57Sd.net
良くない側面も持っているが、C++でWindowsプログラムをしようと思ったら、MFCが一番良い選択肢だと思う。

622 :デフォルトの名無しさん:2020/09/16(水) 18:57:29.78 ID:g8ss57Sd.net
仮にMFCを使わないとなると、VisualStudio を使うとなれば、Win32とC#しか選択肢がなくなる。
それは困る。

623 :デフォルトの名無しさん:2020/09/16(水) 19:28:09.07 ID:ZQue+HKY.net
他にもあるだろw

624 :デフォルトの名無しさん:2020/09/16(水) 19:37:21.63 ID:lYPT6/er.net
>>623
UWP系は避けたい

625 :デフォルトの名無しさん:2020/09/16(水) 20:01:26.47 ID:ZQue+HKY.net
もっと情報収集しよ?

こんなんだからMFCじゃなくてMF爺って呼ばれてるんだぞ

626 :デフォルトの名無しさん:2020/09/16(水) 20:49:32.03 ID:0cbcGKkw.net
>>625
おすすめは?

627 :デフォルトの名無しさん:2020/09/16(水) 21:09:42.50 ID:hOjYK7uQ.net
>>623
でも実例は挙げないで、訊かれても「自分で調べろ」一点張り

628 :デフォルトの名無しさん:2020/09/16(水) 22:18:56.07 ID:iyuoEKtv.net
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

629 :デフォルトの名無しさん:2020/09/16(水) 22:23:13.67 ID:1VQgoPvh.net
>>625
具体例をあげよ

630 :デフォルトの名無しさん:2020/09/17(木) 04:59:15.63 ID:SW6+Z1Cs.net
>>628
Visual Studioが使えなくなる。

631 :デフォルトの名無しさん:2020/09/17(木) 12:47:47.90 ID:OW2OZx8D.net
Visual Studio で造れるもの
Tcl/Tk
wxWidgets
Qt
その他

632 :デフォルトの名無しさん:2020/09/23(水) 14:11:24.89 ID:L2u4imFE.net
「かんたんVisual C++ 改定2版」という本を見つけたのだが、ダイアログベースのアプリの説明がほとんどでSDIとMDIの説明はちょっとだけ。

MFC Tutorial
https://www.tutorialspoint.com/mfc/index.htm

上の海外のページでもダイアログベースの説明なんだよなあ。

SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
もしかしたらCMultiDocTemplateクラスのせいで自由にレイアウト変更できないの?

633 :デフォルトの名無しさん:2020/09/23(水) 14:13:15.44 ID:YfY3TQQ4.net
>業務

ωωω

634 :デフォルトの名無しさん:2020/09/23(水) 15:16:33.25 ID:wtMA3RXJ.net
結論的に言えば、以下の本を買えば、昔ながらの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章 デバイスコンテキスト

635 :デフォルトの名無しさん:2020/09/23(水) 15:37:00.18 ID:+91dLPIP.net
>>634
>>632を読んでないなw

636 :デフォルトの名無しさん:2020/09/23(水) 15:45:17.15 ID:wtMA3RXJ.net
>>635
この本は、ちゃんと、1つの章を割いているので、別の本のことかと思った。
そもそも、MFCのSDI/MDIは、そんなに高機能ではないので、質問者は勘違いしている
かも知れない。
MFCは、ダイアログベースにすると、割とIDEの機能が強く働いて、
C#のWinFormsと似たようなポトペタ的なプログラミングに近くなるが、
SDI/MDIは、メニュー以外には余り支援が無い。
SD/MDIでも、ダイアログを使えば、ポトペタ的になる。
というか、「Win32 Control」と呼ばれているものは、もともと、
ダイアログに入れた場合にちょうどよく機能するように設計されている。
だから、「ダイアログリソース」なるものがあるが、それ以外では、
独自に全て座標やサイズを指定して出すしかない。

637 :デフォルトの名無しさん:2020/09/23(水) 15:49:14.69 ID:wtMA3RXJ.net
>>636
普通、どのアプリを見ても分かるが、メインメニューとツールバーがあり、
一行のテキストフィールド(EditBox)や、ボタン、チェックボックス、
コンボボックスなどは、全てダイアログの中に収められていることが多い。
だから、SDI/MDIアプリも、IDEの支援は、ダイアログ以外は、
メニューとツールバーが中心で、後は関数の作製・削除、検索、置換、
デバッグなどに限定される。
というわけで、SDI/MDIプログラムを学ぶと言っても、ポトペタ的な
ものは、ダイアログの部分を学べばよいだけ。
そしてそれに関係するのが、ダイアログデータエクスチェンジ(DDE)。

638 :625:2020/09/23(水) 16:22:00.82 ID:L2u4imFE.net
>>636-637
625です。
その本を立ち読みしたのですが、SDI/MDIの部分は本当にペラペラです。

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

個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
最悪、Win32で作るしかないとは思っていますが。

639 :デフォルトの名無しさん:2020/09/23(水) 17:53:31.35 ID:YfY3TQQ4.net
wxWidgets

640 :デフォルトの名無しさん:2020/09/24(木) 09:52:03.03 ID:ipSsIIJF.net
>>638
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から
サンプルとして利用できるプロジェクトが作られる。
Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに
分からない部分をネットで検索して調べるのが基本。
全くサンプルが無いと作るのはほとんど不可能な場合があり、
「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても
過言ではない。

641 :デフォルトの名無しさん:2020/09/24(木) 09:58:05.46 ID:ipSsIIJF.net
>>638
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
>自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ
は、言語が違うだけで理念はほぼ同じ。
しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。
「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、
SDI/MDIアプリでも生かせる。
SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ
と同様の作法が使えるから。
ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。

642 :625:2020/09/24(木) 12:34:17.45 ID:CT30hZB8.net
>>641
>ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。

CTreeViewは知っているけど、VSが生成したプログラムにどうやって入れるのかがわからないんですよ。
検索してもちっとも出てこない。英語で検索しても出てこない。
日本語でも英語でもダイアログベースの解説しか出てこないので、ツールボックスからツリービューをダイアログにドラッグ・ドロップしてしか出てこない。
こんなのじゃ役に立たない!

643 :デフォルトの名無しさん:2020/09/24(木) 12:49:59.87 ID:J7wU0H86.net
>>642
VSが生成する前のアプリケーションウィザードのところで
基本クラスをCViewからCTreeViewに変更できる

644 :625:2020/09/24(木) 13:35:34.64 ID:CT30hZB8.net
>>643
できましたけど、VIEW/DOCモデルを選択した時しかできないですよね。
VIEW/DOCモデルを使うと、ファイル読み込みと書き込みの対称関係が強制されるので、これも困るというか。
自分が作りたいアプリは、メモリに絶対入らない巨大なファイルを少しずつ処理してエクスポートするものなので、読込・保存の概念がない。
やはりMFCは使わない方がいいのだろうか。Win32にした方がいいかもしれない。
どうしてMFCはWin32みたいに部品を組み合わせていくように作れないのだろう。

645 :デフォルトの名無しさん:2020/09/24(木) 13:52:29.54 ID:0BhvwOmc.net
class設計がタコだから
class library と名乗るのがそもそも詐欺
ただの win32api wrapper あるいは劣化版

646 :625:2020/09/24(木) 14:08:51.69 ID:CT30hZB8.net
>>645
それは一般的な見解なのでしょうか?
ここだと「Win32は手間がかかりすぎる。MFCにしないとだめ」的な書き込みも多々見かけるので混乱します。

647 :デフォルトの名無しさん:2020/09/24(木) 14:30:44.47 ID:J7wU0H86.net
>>644
別に、ドキュメント/ビューの仕組みを使ったら
ファイル全体をメモリ上に読み込まないといけないわけではないけど、
そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、
内部の仕組みを理解する必要が出てくる。

ドキュメント/ビューが抵抗あるなら、使わずにSDIを作成して、
CChildViewの中にCTreeCtrlを載せたりすることもできるけど。

648 :デフォルトの名無しさん:2020/09/24(木) 14:31:42.32 ID:ipSsIIJF.net
>>644
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との対応関係が分かる。

649 :デフォルトの名無しさん:2020/09/24(木) 14:37:46.49 ID:ipSsIIJF.net
>>646
MFCは、Win32の軽いラッパーであることは、標準見解。
ただし、IDEとの連携がWin32より上手くできているので開発効率は上がる。
理解するのは、実はWin32より難しくなってしまっている部分もある。
しかし、イベントハンドラやメニューハンドラをどんどん追加していく場合の
効率がとても良い。
また、新しいWindowを作る際も、ClassWizardから作るとWin32で自分で
作るより速いことが多い。
メニューにチェック記号を付けたり、グレイ表示にしたい場合も、
MFCは、CCmdUI や、ON_UPDATE_COMMAND_UI()などを自動生成できるので、
効率が良い。
また、Win32だとswitch文でメニューを処理するが、MFCだと、自動生成された関数
で処理するので、大規模なアプリの場合、コードが整理される。

650 :デフォルトの名無しさん:2020/09/24(木) 14:44:39.87 ID:ipSsIIJF.net
>>644
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて
MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。
それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて
通れないこともある。
基本的には、フレームワークが想定しているファイルオープンの概念を、
如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。
最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている
かが分かるので、「安全に無視する方法」を探るといい。

651 :デフォルトの名無しさん:2020/09/24(木) 15:01:57.18 ID:n05mXSO9.net
Docを無視してViewだけ使うってのは俺もよくやるw

652 :デフォルトの名無しさん:2020/09/24(木) 15:35:28.03 ID:A/uKUrmH.net
>>647-651
うーむ・・・
結局、MFCが提供する仕組みを無視しないと自由にプログラムを組めないのか。
しかも安全に無視するにはMFCの仕組みを熟知しないといけないと。
そんなこと組込一筋の自分にはできそうにないなあ。
今作りたいプログラムを作ったらMFCを使うことは二度となさそうだし、やはりMFCは回避するべきだろうか・・・
頭痛いよ

653 :デフォルトの名無しさん:2020/09/24(木) 15:40:13.30 ID:ipSsIIJF.net
>>652
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、
それを守っても余り良いこと無いので、無視してよい、ということ。
なにも、アメリカ人の考えた思想に従う必要は無いのだから。
その当時の彼らはそれが理想だと考えたかも知れないが、それも
どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。

654 :デフォルトの名無しさん:2020/09/24(木) 15:50:00.97 ID:n05mXSO9.net
>>652
いやいや、別に邪道なことをしているわけではない
Docを使う/使わないを任意に選べるようになっているというだけ

655 :デフォルトの名無しさん:2020/09/24(木) 16:08:29.20 ID:0BhvwOmc.net
>>652
無駄に覚えることが増えるし
しかもバッドノウハウで
他に何の役にも立たん
深入りする意味が無い

656 :625:2020/09/24(木) 16:14:40.31 ID:CT30hZB8.net
>>653-654
>>647に「そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、内部の仕組みを理解する必要が出てくる。」と書かれているので、難しいはずです。簡単に無視できないはず。

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

>>655
バッドノウハウ=MFCってことですか?

657 :デフォルトの名無しさん:2020/09/24(木) 16:33:16.74 ID:n05mXSO9.net
>>656
> SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
こう言ってた人が

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

組み込みが本業の人がMFCを何に使うんだろう
基板から送られてくるデータを可視化とか?
シミュレーションや回路設計は専用ソフト使うだけだし

658 :625:2020/09/24(木) 16:40:57.87 ID:CT30hZB8.net
>>657
要は力を入れないで業務で使えるGUIのプログラミングをしないといけないということです。
何も分かっていない上司に言われてやっているので、仕方がないのです。

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

企業秘密なので、詳細は書けない。
データの可視化の一種と言っておく。

659 :デフォルトの名無しさん:2020/09/24(木) 16:49:31.37 ID:ipSsIIJF.net
>>658
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。
それをいじくれば、TreeViewは制御できる。
後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。

660 :625:2020/09/24(木) 16:50:34.31 ID:CT30hZB8.net
個人的にはGUIは不要だと思っているのですけどね。
現場で働く派遣社員や外注などのレベル低下でCUIのツールが受け入れられなくなっているってだけでGUIのプログラミングをやるはめになった。

661 :625:2020/09/24(木) 16:51:57.29 ID:CT30hZB8.net
>>659
問題は>>656ですよ

662 :デフォルトの名無しさん:2020/09/24(木) 16:53:39.81 ID:n05mXSO9.net
>>660
裏でCUIツールを起動するだけ、みたいのだとダイアログベースで充分じゃね?

663 :625:2020/09/24(木) 16:56:46.90 ID:CT30hZB8.net
>>662
それは上司にダメって言われたんですよ

664 :デフォルトの名無しさん:2020/09/24(木) 17:07:39.97 ID:n05mXSO9.net
いちおーSDI用のスケルトンを使って
内容的にはダイアログベースなやつにするとか
ログを記録したり終了時に使用状態をファイルに記憶させるのにDoc使いましたよって

665 :625:2020/09/24(木) 17:26:50.28 ID:CT30hZB8.net
>>664
そこまでは知識不足で判断できません。
どちらにしても>>647の言うように使わない機能を無視するのも簡単ではないようですが。

666 :デフォルトの名無しさん:2020/09/24(木) 18:13:53.22 ID:luF9hMVl.net
ダイアログベースがダメだと言うなら、>>647の言うように、
Doc/Viewを使わないSDIで、CChildViewに処理を全部入れてしまうのが一番シンプルでは?

667 :デフォルトの名無しさん:2020/09/24(木) 18:19:58.65 ID:VqYlbH9U.net
>647の前段は「ドキュメント/ビューの仕組みを使ったら」だ
ドキュメント/ビューを一切使わないのは簡単
使わないだけ

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

そんなにWin32API直でやりたいならそうすればいいけど
どっちにしろ、猫でものWindows SDK編でも一通りやっといた方がいいよ
MFC使うにしても、「ドキュメント/ビュー」とかのMFC独自のとこ以外は
よく言われるようにWin32APIの薄いラッパだから

668 :625:2020/09/24(木) 18:59:32.67 ID:CT30hZB8.net
>>666
そこまで判断する知識はまだなくて

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

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

Win32についてはそこである程度勉強したのですが、部品を組み立てるような感覚で自由にできるので、下手にMFCに手を出すよりはマシかと思ったわけです。

669 :デフォルトの名無しさん:2020/09/24(木) 19:15:13.93 ID:ipSsIIJF.net
>>665
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。
勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。
Doc/Viewモデルを使うとしても、
CDocument::OnOpenDocument(const char *pszFilename)
が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に
データを読み込めばよい。
CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、
CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。
本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、
好き放題出来る。

670 :デフォルトの名無しさん:2020/09/24(木) 19:16:51.84 ID:ipSsIIJF.net
>>668
MFCも、本等は好き放題出来る。
個人的には、大改造して使ってる。

671 :デフォルトの名無しさん:2020/09/24(木) 19:36:48.02 ID:CT30hZB8.net
>>669
>>670
お二人のようになれればいいのですけどね

672 :デフォルトの名無しさん:2020/09/24(木) 20:48:36.72 ID:anZxJGRt.net
>>648
単一ドキュメント複数ビューはできないわけじゃないよ。
DocTemplateを派生させる必要があるというだけ。

673 :デフォルトの名無しさん:2020/09/24(木) 21:07:02.77 ID:sDDeHHJX.net
>>671
「MFCによるWindowsプログラミング」ISBN 475611749X

首都圏在住なら国会図書館で見てこい
ttps://iss.ndl.go.jp/books/R100000002-I000002930291-00

田舎住まいなら尼(ISBNで検索)で\32,580で売ってるから上司に頼んでこれ買ってもらえ

674 :デフォルトの名無しさん:2020/09/24(木) 21:20:33.40 ID:qMR+aI5t.net
>>648
> 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
CDocumentには、UpdateAllViews()という名前の関数があるように、
複数のビューを関連付けられるぞ。

>>669
わざわざDoc/Viewを選んでおいてDocクラスを放置するくらいなら、
印刷プレビューでも使わない限り、Doc/Viewを使わない形式で
CMainFrameとCChildViewだけを使うほうが楽だと思うけどな。

675 :デフォルトの名無しさん:2020/09/24(木) 21:45:13.19 ID:bZ1sVv66.net
SDIでもCFromViewしか使ったことないナ

676 :デフォルトの名無しさん:2020/09/25(金) 00:33:44.17 ID:mGml3uVc.net
MFC は、数十年前w
Jeffrey Richter とかの時代

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

MFCって、まだ存在するのか

677 :デフォルトの名無しさん:2020/09/25(金) 00:48:06.02 ID:nCkagqzh.net
WindowsでC++とVisual Studioを使ってデスクトップのプログラムするなら、
今でもMFC以外の選択肢はほぼ無いはずだが、

678 :669:2020/09/25(金) 02:04:10.72 ID:mGml3uVc.net
かんたん Visual C++[改訂2版]、堀義博、2017

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

MFC ではなかった気がする

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

スマソ。記憶違いがあった。
1つのDocに対して複数のViewは、一応は関連付けられる。
しかし、それはどれも1つのCFrameWndの中に入れておかないといけなくなって
しまっているため、WzEditorの「テキストの二重化」のように、
1つのテキストファイルの別の場所を複数のFrameWndの中に表示するという
ようなことが、MFCでは基本的に出来ないハズ。

680 :デフォルトの名無しさん:2020/10/16(金) 18:08:33.74 ID:wvravRFo.net
CTreeCtrlクラスでツリー表示の文字色を部分的に変えたいけど、Windows SDKみたいにカスタムドローしないと無理ゲー?

681 :デフォルトの名無しさん:2020/11/05(木) 19:43:36.56 ID:qAuQqgNSU
副業、大手も制度着々…コロナ禍、働き手は空き時間活用
https://www.itmedia.co.jp/business/articles/2009/07/news111.html
富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」
https://www.itmedia.co.jp/business/articles/2008/21/news031.html
東大の起業ラッシュは本物か、大学発ベンチャー数日本一の実力
https://business.nikkei.com/atcl/NBD/19/special/00448/
AI研究の第一人者、東大・松尾研でも起業ラッシュ
https://business.nikkei.com/atcl/gen/19/00158/051900002/?i_cid=nbpnb_arc
失敗は認める、多数決はダメ。拡大する「社会起業家集団」の作り方
https://newswitch.jp/p/23033
新卒“即”起業せよ。社会起業家への最短距離に挑む若者たち
https://newswitch.jp/p/23020
人々の共感を得られないと潰される時代。
https://news.yahoo.co.jp/articles/37aef71415e8181ce8451e27feb3983bf1f6f9cd
ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由
https://honsuki.jp/pickup/17323.html
「エース人材だって起業OK」、NECは挑戦者が集う場をつくる
https://business.nikkei.com/atcl/gen/19/00106/012900003/
NECなど「出向起業」 大企業人材、起業しやすく
https://www.nikkei.com/article/DGXMZO61733720Q0A720C2TJ1000/

682 :デフォルトの名無しさん:2020/11/20(金) 05:11:03.85 ID:lrgUTmYU.net
実際にウィンドウ上に表示している画面をBitmapに画像保存するんじゃなくて、
表示させないで、データだけを元に、連続的に画像保存するってどうやるのかな?

例えば、ボタン1つで、円の位置を連続的に動かしたデータを、
それらをわざわざ画面に表示させないで、連続的に画像に保存したいんだけど、
やり方がわからない。

683 :蟻人間 :2020/11/20(金) 05:14:55.72 ID:7Y8jq4/V.net
>>682
CreateCompatibleDC(NULL)とCreateDIBSectionだろう。DIBビットマップオブジェクトを作成し、DCでそれを選択し、DCで描画する形になる。

684 :デフォルトの名無しさん:2020/11/21(土) 18:08:17.32 ID:DvxemaNf.net
>>683
ありがとう、教えてもらったキーワードをググってみます。

685 :デフォルトの名無しさん:2021/01/18(月) 23:31:44.08 ID:zaIVxsp1.net
DialogにCMFCFontComboBoxを張り付け
プロパティの「フォントを使用して描画」をTrueにすると
コンボボックスの行の高さを無視して大きく描画されます。
XX明朝とXXゴシックが縦に重なって描画される感じです。
(ディスプレイ設定で拡大表示している場合のみ)
以前は普通に表示されていた気がするのですが。
良いアイデアがあればお願いします。

686 :デフォルトの名無しさん:2021/01/21(木) 23:11:43.50 ID:CyPBYCkQ.net
あきらめて素のComboboxで作り直しました。

687 :デフォルトの名無しさん:2021/01/22(金) 18:33:44.53 ID:WeFjBpWyB
怒る・叱る文化は、安月給&長時間労働の証
https://www.youtube.com/watch?v=-FZ-W08t9vM&t=173s
勉強しない社員★仕事のための投資をしない人たち
https://www.youtube.com/watch?v=Zg6N7a_h8AE
バカが起業したんです★バカが社長になる過程
https://www.youtube.com/watch?v=WT3pvyhpazk
時給10倍差は勉強と努力だけで差がつく★最大100倍差!
https://www.youtube.com/watch?v=AHZjacip9Y4
ドリームキラー★夢の実現を応援する人、阻止する人
https://www.youtube.com/watch?v=ZoVXtIxhqTU
年収1億円は「できっこない」をやり遂げた人★10万人、銀の盾来た!
https://www.youtube.com/watch?v=3t9nQgcIzLw

688 :デフォルトの名無しさん:2021/01/24(日) 03:51:03.29 ID:YBQN8nSGf
フリーランス向け報酬即日払いサービス『先払い』が、オンライン資金調達プラットフォーム『資金調達freee』β版に掲載開始
https://prtimes.jp/main/html/rd/p/000000037.000047439.html
フリーランスやパラレルワーカー同士のマッチングプラットフォーム「conema」が、
案件依頼・仲間募集を中心とした掲示板機能(β版)をリリース!
https://prtimes.jp/main/html/rd/p/000000004.000059389.html
フリーランス薬剤師専門エージェントサービス「きょうりょく薬剤師」、リリース開始。薬剤師の新しい働き方を提唱。
https://prtimes.jp/main/html/rd/p/000000002.000058526.html
中卒、新聞配達員から月収4億の不動産王へ。姫路の不動産王の投資哲学
https://hbol.jp/184178
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
副業を認める企業に対して「より魅力的に感じる」人は6割以上。
一方、副業を認めない企業に対する魅力度は6割超が「低下した」と回答
https://prtimes.jp/main/html/rd/p/000000016.000040832.html
みんなが知らない「サラリーマンの生存戦略」副業年収1億円!motoさん伝授
https://diamond.jp/articles/-/247070
2021年はこれに頼ろう!<フリーランス・副業向けサービス カオスマップ2020年完全版 2枚組リンク付>を公開
https://ascii.jp/elem/000/004/038/4038531/

689 :デフォルトの名無しさん:2021/02/19(金) 22:39:02.63 ID:Igsf+004.net
>>444
> C++Nativeの今風なGUIライブラリ作って欲しいわ

禿しく同意

690 :デフォルトの名無しさん:2021/02/20(土) 00:53:43.48 ID:NHEiPkLm.net
WinUI3ってc++で書かれてるからc++ nativeじゃね??

691 :デフォルトの名無しさん:2021/02/21(日) 22:41:37.64 ID:sZqIhPVp.net
>>689
それだけのことなのにそれをやらないマイクロソフト

692 :デフォルトの名無しさん:2021/02/22(月) 07:01:41.68 ID:1ohBYlrZ.net
Direct3Dは違うのか?

693 :デフォルトの名無しさん:2021/03/01(月) 23:14:22.24 ID:L7jyZAdw.net
昔あったCFrameWndのLoadBarStateとSaveBarStateは
何に置き換わったのでしょうか?
CMF…系のツーツバーやステータスバーでは保存&復元されないようです。

694 :デフォルトの名無しさん:2021/03/26(金) 13:13:22.16 ID:zWEWautG.net
MFCより先進的なGUIフレームワークを使いたいならQtとかwxWidgetsを使えってことなのかねえ?

695 :デフォルトの名無しさん:2021/06/19(土) 20:11:27.16 ID:Obm1tdWY.net
>>693
m_pszProfileNameを初期化してる?

696 :デフォルトの名無しさん:2021/06/22(火) 01:17:37.30 ID:jHGnhlRq.net
>690
WinUI3には期待している。

697 :683:2021/06/28(月) 15:55:19.44 ID:yWrL1Flg.net
>>695
レスサンクス
明示的には初期化はしていませんが
CWinApp::SetRegistryKey(...
を呼んでるのでその中でm_pszAppNameがセットされているようです。

698 :デフォルトの名無しさん:2021/06/28(月) 16:12:02.63 ID:DiM7L1Ie.net
>>693
CWinAppEx::LoadStateやCWinAppEx::SaveStateが勝手に呼ばれるはずだけど

699 :683:2021/06/28(月) 17:55:27.02 ID:yWrL1Flg.net
解決しました
VS2005で作ったソースをVS2019に移植する際
CWinAppをCWinAppEx
CToolbarをCMFCToolBar
のような作業をやったんだけど
CMainFrameからCFrameWnd::(Exなし)の関数を呼んでたのが原因でした
お恥ずかしい。レスくれた方、ありがとうございました。

700 :デフォルトの名無しさん:2021/09/15(水) 12:15:47.57 ID:jggBe0Ff.net
>>694
WinUI 3がネイティブ
XAMLの部分はC++コードになる

701 :デフォルトの名無しさん:2021/09/15(水) 21:06:18.05 ID:u4qV17E7.net
WinUIは普通にXAML使うが。

702 :デフォルトの名無しさん:2021/09/16(木) 19:46:16.94 ID:yaf4gWdF.net
WPFでもXAMLからコード吐いてるぞ?

703 :デフォルトの名無しさん:2021/09/16(木) 22:38:06.15 ID:vfYN11/r.net
bamlになるだけでコードを吐いたりはしないと思うが?.xaml.cs と混同してる?

704 :デフォルトの名無しさん:2021/09/19(日) 17:56:08.37 ID:k97hf5Wx.net
そうか勘違いか

705 :デフォルトの名無しさん:2021/09/25(土) 10:57:19.73 ID:jFY/PXLr.net
せめてダークモードのテーマ用意して下さい

706 :デフォルトの名無しさん:2021/10/30(土) 10:54:38.33 ID:MPYyHG36.net
BCGのほうはダイアログや埋め込みスクロールバーもダークテーマにできるんだよなぁ

707 :デフォルトの名無しさん:2022/03/15(火) 08:26:51.33 ID:RM1ltBr1.net
BCGはロシアのセンペテロブルグだったね。
ドル建てで売ってるからウクライナ侵攻の対ロ経済制裁の影響を受けて倒産とかはなさそうだな。

708 :デフォルトの名無しさん:2022/03/31(木) 10:44:02.36 ID:Jyr8BV0e.net
>>707
VisaやMasterのカード決済ができなくて、売れないのでは? ロシア国外のWeb
サイトで決済して、ドルをロシアへ送金しようにも、SWIFTからの排除で銀行間
送金もできないし。

709 :デフォルトの名無しさん:2022/04/02(土) 21:39:19.21 ID:1+ihffDV.net
>>708
それもそうか〜。次の更新料支払いまで10ヵ月近くあるけど、どうなるのかなぁ。
BCGライブラリはMFCでアプリ作るならやっぱり便利だし、メンテ続けてほしい。

710 :デフォルトの名無しさん:2022/04/03(日) 10:10:08.68 ID:cIyOxh+4.net
BCGは次のバージョンでPer Monitor DPIに対応すると予告していて、ちょっと興味ある

711 :デフォルトの名無しさん:2022/04/28(木) 07:46:47.14 ID:2+PIOWFw.net
BCGは新バージョンのベータ版アナウンスしたし、経済制裁の影響は大してないのかも。

712 :デフォルトの名無しさん:2022/05/19(木) 18:06:24.38 ID:VJOjo1jQ.net
ツベルクリン反応

713 :デフォルトの名無しさん:2022/06/01(水) 11:16:30.11 ID:ENbHFSWO.net
マイクロソフト社がフライドチキン業界に進出したらどんな略称になるんだろう?

714 :デフォルトの名無しさん:2022/06/05(日) 21:36:12.13 ID:re3nd4/n.net
サッカークラブも含めてMSFCの可能性もあり得た

715 :デフォルトの名無しさん:2022/06/27(月) 13:08:04 ID:Yq/DwuXq.net
mfcのactivexコントロールの良書教えて下さい

716 :デフォルトの名無しさん:2022/10/26(水) 22:05:25.04 ID:IeA8a0h8.net
MFCで画像閲覧ソフトを作成しています。
ウィンドウのサイズを変更すると画像が消えてしまいます。
なぜなのかさっぱり検討が付きません。

https://ideone.com/Gn0AsK

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

なにか良い手はないかご提示宜しくお願い致します。

717 :706:2022/10/26(水) 22:08:37.07 ID:IeA8a0h8.net
すいません、環境を書くのを忘れていました。

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

何卒宜しくお願い致します。

718 :デフォルトの名無しさん:2022/10/27(木) 01:28:58.14 ID:6HC7kWqW.net
「mfc onpaint WM_PAINT」で検索してみれば?

MFC とか、こういうのは初心者がやるものじゃない。
たぶん、仕組みを理解するだけでも、10年以上掛かる

719 :デフォルトの名無しさん:2022/10/27(木) 03:07:34.48 ID:niMWpG44.net
良い手も何も、そういうものだと思うしかない
OnPaint()で描けばいいだけ
いつウインドウがinvalidateされるのか、アプリケーションプログラマが完璧に把握することはたぶんできないし
しても意味はあまりない

720 :デフォルトの名無しさん:2022/10/27(木) 05:57:41.65 ID:+UGgATct.net
10年のうち、もう8~9年経っている感じだね

721 :デフォルトの名無しさん:2022/10/27(木) 22:03:00.16 ID:gaUWFwsd.net
>>718->>10
レスありがとうございます。

そういうものなのですね。
そういうものだと思って諦めます。
ありがとうございました。

722 :デフォルトの名無しさん:2022/10/27(木) 22:03:59.35 ID:gaUWFwsd.net
>>ミスりました…
>>718-720

723 :デフォルトの名無しさん:2022/10/31(月) 11:29:06.13 ID:ENWdRL/8.net
>>716
そもそも、
cbmp = CBitmap::FromHandle(m_image);
で取得したものを
cbmp->DeleteObject();
で破棄しているのが原因では。

これだと1回目の描画のときにm_imageが破棄されて、
2回目以降は描画されないかと。

724 :デフォルトの名無しさん:2023/07/08(土) 11:21:56.83 ID:UoEVlKLQl
デ夕ラメ爺7地球破壊税金泥棒殺人サミッ├を非難しよう!核カ゛―だの嘘ハ百ほざきながら.多くの国か゛締約している核兵器禁止条約すら拒み
莫大な石油無駄に燃やしまくってる税金泥棒クソポリ公ク゛儿ク゛儿騷音ヘリ含むクソ航空機を全廃すれば原発全廃しても余裕て゛電力価格下落する
ほど余裕がて゛きるものを白々しく原発稼働して被爆利権確保、多くの国民か゛反対してる中,日本に原爆落とした世界最惡のならず者国家やら核
保有国の税金泥棒どもと国民から強奪した莫大な税金て゛飲み食い観光、警備た゛のとクソシナ顔負けの私権侵害にバ力丸出しの茶番,法の支配
カ゛一た゛のほざきなか゛ら憲法カ゛ン無視て゛都心私有地まで数珠つなぎで天下り賄賂癒着クソ航空機に侵略させて他人の権利強奪して私腹を肥やす
強盗殺人を繰り返して莫大な温室効果ガスまき散らして気候変動させて曰本どころか世界中で土砂崩れに洪水.暴風.猛暑、干ばつ.大雪にと
災害連発させて、核か゛おもちゃに思えるほどの大量殺人を続ける世界最悪の地球破壊殺人テロを繰り返しながら他国非難とか、世界的に滑稽に
思われ非難されてる岸田腐敗異次元増税軍國主義殺人テ口リス├文雄を討ち取らないと、益々お前らの私権は奪われ生活は破壊され殺されるそ゛

創価学會員は.何百萬人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まて゛出てる世界最悪の殺人腐敗組織公明党を
池田センセ━が□をきけて容認するとか本氣で思ってるとしたら侮辱にもほと゛か゛あるぞ!
hΤТРs://i,imgur.сοm/hnli1ga.jpeg

725 :デフォルトの名無しさん:2024/03/30(土) 12:52:50.32 ID:11acCEHmX
防衛大臣の木原稔やら大多数の議員が統−教会の集會に出席して褒め称えて会費まで払って祝電送って会長を官邸にまで招待してた
統一教会と一心同体の自民党が白々しく口先だけで関係を断つだのほざいて解散云々税金免除の対象から外す話しか出てこないあたり
分かりやすいよな、私腹を肥やしたいだけの世界最悪の殺人腐敗利権集団公明党も石川博崇、高木陽介、佐藤茂樹か゛統ー教會と繋がってたし
政教分離など宗教全体の問題になることを必死に姑息に阻止して統━教会を擁護してるあたりも分かりやすいだろ>創価学会員
都心まで数珠つなぎでクソ航空機に騒音に温室効果ガスにコロナにとまき散らさせて旅行支援もとい人殺し支援だのと税金で気侯変動させて
地球破壊して日本どころか世界中て゛土砂崩れに洪水、暴風、熱中症、森林火災にと災害連発させて世界中の住民の生命と財産を
賄賂癒着組織に強奪させてる世界最悪のテロ組織自民公明に乗っ取られた腐敗テロ国家の暴走を止めるには民主主義の教祖
山上大先生みたいなのが大勢出てこないとどうしようもないな
(ref.) ttps://www.call4.jp/info.phΡ?type=items&id=I0000062
ttps://haneda-project.jimdofreе.com/ , Ttps://flight-route.com/
ttps://n-souonhigaisosyoudan.amebaownd.Сom/

215 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★