Microsoft Foundation Classライブラリ専用スレです。
■MFC相談室 mfc21d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1250919279/l50
■MFC リファレンス■
http://msdn.microsoft.com/ja-jp/library/d06h2x6e(v=VS.100).aspx
探検
MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2016/09/21(水) 00:20:48.44ID:OfO+mYkd2デフォルトの名無しさん
2016/09/21(水) 02:30:56.74ID:5qi85AkV < `∀´>ニダー
2016/09/21(水) 13:22:08.79ID:QlBymPtT
?
2016/09/21(水) 13:34:34.78ID:lqTjg4Df
>>1 乙
ここは即死あるんだっけ?
ここは即死あるんだっけ?
2016/09/21(水) 14:32:51.99ID:ib8am8Zc
1年くらい前から即死しない仕様になってる
2016/09/21(水) 15:00:46.64ID:DJrsIBwc
即死なんて見たこと無い
2016/09/23(金) 17:10:11.66ID:1AYxo37g
ひでぶ
2016/09/24(土) 19:06:33.61ID:vAKGJfNO
いや即死あるぞ
俺が今月立てたスレなくなってる
俺が今月立てたスレなくなってる
2016/09/25(日) 15:44:56.16ID:fXLErY67
1000いったんでないの?、、ないかw
2016/09/26(月) 22:01:57.62ID:TukXLw2X
ドトネに負けたのか?
2016/10/11(火) 01:01:55.41ID:XtQ45pny
ネタくれ
2016/10/11(火) 19:51:53.66ID:XtQ45pny
質問しろ〜
なんでも答えてやんぜって思ったら、俺c++できないんだったw
なんでも答えてやんぜって思ったら、俺c++できないんだったw
2016/10/15(土) 18:29:48.76ID:gqlXN5xD
そろそろ埋めようぜ
2016/10/17(月) 00:02:34.42ID:rdSWZXJ7
埋め
2016/10/17(月) 16:06:58.50ID:rrzVlL3A
産め
2016/10/17(月) 17:53:44.29ID:WLzPflAs
梅
2016/10/17(月) 18:21:19.26ID:WLzPflAs
そろそろ本気で埋めるか
2016/10/18(火) 13:35:30.77ID:w7Iv1X0L
埋める前に次スレ立ててくれ
2016/10/18(火) 21:44:51.96ID:ZG7+Cw8s
最新のMFCはコンストラクタでメンバ変数初期化サボってるクラスないよね
2016/10/22(土) 20:44:20.18ID:cpluUqjP
過疎ってるな〜
2016/10/26(水) 17:50:00.81ID:K3buMdl9
いつの間にかMFCでもDirect2Dがサポートされてたんだね
ちょっとサンプル見たけどGDIと比べると複雑だな
ちょっとサンプル見たけどGDIと比べると複雑だな
2016/11/01(火) 21:11:07.99ID:fAr6l5+l
保守
2016/11/03(木) 14:33:38.93ID:kJS9Zyl0
CStdioFile::ReadStringでshiftjisのファイルをバッファに読み込んだんですが、
テキストファイルの内容は「あ」のみ
バッファの内容は
82 00 A0 00
でした。
unicodeなら
30 00 42 00
か
00 30 00 42
になると思うのですが、なにか勘違いしていますかね?
テキストファイルの内容は「あ」のみ
バッファの内容は
82 00 A0 00
でした。
unicodeなら
30 00 42 00
か
00 30 00 42
になると思うのですが、なにか勘違いしていますかね?
24片山博文MZ ◆T6xkBnTXz7B0
2016/11/03(木) 14:52:47.88ID:bkzCM1IA >>23
テキストファイルをUTF-16にするか、UTF-8にしてUTF-16に変換する。
テキストファイルをUTF-16にするか、UTF-8にしてUTF-16に変換する。
2016/11/03(木) 15:09:32.76ID:s4829peE
setlocaleしてないからascii-8bitとして読み込まれたと予想。
26片山博文MZ ◆T6xkBnTXz7B0
2016/11/03(木) 15:43:52.99ID:bkzCM1IA そのテキストファイル、シフトJISになってるぜ
2016/11/03(木) 16:27:10.81ID:kJS9Zyl0
2016/11/03(木) 16:40:23.70ID:s4829peE
>unicodeなら
>30 00 42 00
>か
>00 30 00 42
てのがおかしい。
>30 00 42 00
>か
>00 30 00 42
てのがおかしい。
2016/11/03(木) 19:17:37.78ID:Vul1aP3I
盛り上がってきましたw
2016/11/03(木) 19:25:00.47ID:bkzCM1IA
レス番消えてる。。。荒らしか
2016/11/03(木) 19:31:17.07ID:bkzCM1IA
片山ウザい氏ね
2016/11/03(木) 21:26:45.01ID:HYN+5xRW
たしかにマジウゼー
2016/11/06(日) 23:23:45.08ID:5/z3Ppl4
嫌われ者w
2016/11/07(月) 21:17:10.96ID:71HmpZSZ
プロセスが起動した状態で、
ツールバーのツールチップの文字列を取得、変更したいのですが
ちょっと手こずっています。アドバイスお願いします
以下の方法ではツールチップではなくボタン文字列が対象になるようです
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(...);
ツールバーのツールチップの文字列を取得、変更したいのですが
ちょっと手こずっています。アドバイスお願いします
以下の方法ではツールチップではなくボタン文字列が対象になるようです
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(...);
2016/11/08(火) 07:56:03.76ID:Dir9NEfz
>>34
動的な変更は、やった事ないけど、このあたりでは?
ttp://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc22/
アプリを普通に作っていれば、取得はボタンのリソースIDと同じIDを持つSTRINGリソース
動的な変更は、やった事ないけど、このあたりでは?
ttp://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc22/
アプリを普通に作っていれば、取得はボタンのリソースIDと同じIDを持つSTRINGリソース
2016/11/08(火) 22:03:34.52ID:fDzF2sx9
2016/11/16(水) 21:31:23.35ID:7nJMKxmy
ちょっとiconの相談です
MFCでプロジェクト作った際、アプリのicon(IDR_MAINFRAME)にいろんなイメージタイプ
(サイコロ3つ)が作られるけど私は全部設定するの面倒なので32x32 8bit bmpだけ
作って他全部消すようにしてます。皆さんはどうしてます?
いろんな環境に対応するためにあ-いうことしてるのかなーとは思うんだけど..
MFCでプロジェクト作った際、アプリのicon(IDR_MAINFRAME)にいろんなイメージタイプ
(サイコロ3つ)が作られるけど私は全部設定するの面倒なので32x32 8bit bmpだけ
作って他全部消すようにしてます。皆さんはどうしてます?
いろんな環境に対応するためにあ-いうことしてるのかなーとは思うんだけど..
38片山博文MZ ◆T6xkBnTXz7B0
2016/11/16(水) 21:43:12.65ID:qcIR6hue >>37
アイコンのイメージ作成にはInkscapeを使ってるよ。
お金に余裕があればAdobe Illustrator使えばいいんじゃないかな。
32x32だけだとユーザーに汚い画像を見せることになる。
アイコンのイメージ作成にはInkscapeを使ってるよ。
お金に余裕があればAdobe Illustrator使えばいいんじゃないかな。
32x32だけだとユーザーに汚い画像を見せることになる。
2016/11/16(水) 22:59:39.33ID:qcIR6hue
>>38
Inkscape(笑) ダセーw
Inkscape(笑) ダセーw
4137
2016/11/16(水) 23:54:39.55ID:7nJMKxmy > 32x32だけだとユーザーに汚い画像を見せることになる。
解像度を変えてのテストはある程度してるけどあまり気になったことないなー
私の想定を超えたデバイスだと汚くなるのかな?Inkscapeは落とした。勉強してみます。
片山博士は大きく&色彩豊かなicon作った後でInkscape使って縮小/減色してるの?
解像度を変えてのテストはある程度してるけどあまり気になったことないなー
私の想定を超えたデバイスだと汚くなるのかな?Inkscapeは落とした。勉強してみます。
片山博士は大きく&色彩豊かなicon作った後でInkscape使って縮小/減色してるの?
42片山博文MZ ◆T6xkBnTXz7B0
2016/11/17(木) 00:07:27.86ID:TXdVmO9D Inkscapeで256x256ピクセル(Vistaサイズ)にしてから図形を描いてとりあえず保存すればSVG形式ファイルになる。
「ファイル」メニューの「PNG形式でエクスポート」を選べばPNG画像が吐き出される。
それを16x16,32x32,48x4864x64に縮小して、見辛いピクセルを細かく補正してからアイコン作成ソフトに取り込むとアイコンができる。
「ファイル」メニューの「PNG形式でエクスポート」を選べばPNG画像が吐き出される。
それを16x16,32x32,48x4864x64に縮小して、見辛いピクセルを細かく補正してからアイコン作成ソフトに取り込むとアイコンができる。
43片山博文MZ ◆T6xkBnTXz7B0
2016/11/17(木) 00:15:30.72ID:TXdVmO9D Inkscapeは図形の合成などの強力な編集機能があるが、
図形が足りなければワード、エクセルの図形をコピペすればいい。
図形が足りなければワード、エクセルの図形をコピペすればいい。
44片山博文MZ ◆T6xkBnTXz7B0
2016/11/17(木) 00:23:23.58ID:TXdVmO9D 時間がないときは文字アイコンだね。1文字をアイコンにするだけで
インパクトあるかもしれない。
インパクトあるかもしれない。
45片山博文MZ ◆T6xkBnTXz7B0
2016/11/17(木) 00:29:46.37ID:TXdVmO9D 「アンチエイリアス」がかかると、どうしても細部がぼやけてしまう。
小さいアイコンでは、ユーザーにはっきり見えるように微細な加工をした方がいい。
小さいアイコンでは、ユーザーにはっきり見えるように微細な加工をした方がいい。
2016/11/17(木) 07:07:34.33ID:gXcsVs3+
片山ueeeeeeeeeeeeeeee
4737
2016/11/17(木) 07:08:48.33ID:0g51nw+9 詳しい説明ありがとう
2016/11/18(金) 16:59:51.57ID:+QqWh5ch
片山先生はアイコン一つにも手を抜かないんだな。
お前らも見習うべき
お前らも見習うべき
2016/12/20(火) 20:31:33.27ID:TcHawI4o
CListView(LVS_OWNERDATA style指定)で特定の行の選択を禁止したいのですが
LVN_ITEMCHANGINGはOWNERDATAの場合は送られない様です。by msdn
何か良い方法は無いでしょうか。
クリックやENTERを潰すしかないんでしょうか?
LVN_ITEMCHANGINGはOWNERDATAの場合は送られない様です。by msdn
何か良い方法は無いでしょうか。
クリックやENTERを潰すしかないんでしょうか?
5049
2016/12/26(月) 20:33:00.82ID:LBPR2r0v 選択禁止は諦めました。
選択された後、近くの行を強制的に選択状態にするようにししたら、あまり違和感がなかったので、これでごまかします。
選択された後、近くの行を強制的に選択状態にするようにししたら、あまり違和感がなかったので、これでごまかします。
2017/01/17(火) 18:47:51.47ID:BjvebHTO
CArrayの質問なんですが、
CArray<int> test;
test.SetSize(10);
とやった場合、test[0]〜test[9]までの値は、
0で初期化されていることは、前提として良い動作ですか?
ソースを見たところ、SetSize()で確保したバッファをいったんゼロクリアして、
その後、各要素に対してコンストラクタが呼ばれるようなので、
C++のintのコンストラクタが「なにもしない」という仕様なら大丈夫そうですが。
CArray<int> test;
test.SetSize(10);
とやった場合、test[0]〜test[9]までの値は、
0で初期化されていることは、前提として良い動作ですか?
ソースを見たところ、SetSize()で確保したバッファをいったんゼロクリアして、
その後、各要素に対してコンストラクタが呼ばれるようなので、
C++のintのコンストラクタが「なにもしない」という仕様なら大丈夫そうですが。
2017/01/18(水) 20:04:22.77ID:dWVIY9sh
intのようなプリミティブな型にもコンストラクタってあるの?
知らなかった
知らなかった
2017/02/06(月) 23:41:58.25ID:sJV81fCO
MFCでリボンアプリケーション組もうとしてるんですけど、
リボンデサイナでダイアログボックス起動ツールのボタンは
付けられないのでしょうか?
例えばWORDとかでフォントグループの右下にある小さい四角いボタンです。
リボンデサイナでダイアログボックス起動ツールのボタンは
付けられないのでしょうか?
例えばWORDとかでフォントグループの右下にある小さい四角いボタンです。
2017/02/15(水) 15:11:12.80ID:WDBEc38A
MFCでCEditをサブクラス化したいと思うのですがうまくいきません
サブクラス化時にFromHandlePermanetと言う関数が呼ばれてそこでASSERTに引っ掛かってしまいます
MSDNによると「SubclassWindowを呼び出す時、ウィンドウがMFCオブジェクトに結びつけられていないようにしろ」とあります
馬鹿で申し訳ないのですが、ウィンドウがMFCオブジェクトに結びつけられるのはどのタイミングなのでしょうか?
今はCEdit::Create後にサブクラス化を試みています
サブクラス化時にFromHandlePermanetと言う関数が呼ばれてそこでASSERTに引っ掛かってしまいます
MSDNによると「SubclassWindowを呼び出す時、ウィンドウがMFCオブジェクトに結びつけられていないようにしろ」とあります
馬鹿で申し訳ないのですが、ウィンドウがMFCオブジェクトに結びつけられるのはどのタイミングなのでしょうか?
今はCEdit::Create後にサブクラス化を試みています
2017/02/15(水) 15:59:13.06ID:IaTHaUdU
>>53
ああ、あの2ミリ角くらいの小さな四角ね。
ああ、あの2ミリ角くらいの小さな四角ね。
56片山博文MZ ◆T6xkBnTXz7B0
2017/02/15(水) 16:57:51.66ID:sI0w68I357デフォルトの名無しさん
2017/02/15(水) 17:29:15.59ID:WDBEc38A >>56
ありがとうございます
しかしながらCEditから派生させたクラスをnewを使用して動的に作成しています
newによりインスタンスを動的に作成
↓
Createメンバ関数を呼び出しコントロールを作成
↓
サブクラス化
↓
ASSERT
ありがとうございます
しかしながらCEditから派生させたクラスをnewを使用して動的に作成しています
newによりインスタンスを動的に作成
↓
Createメンバ関数を呼び出しコントロールを作成
↓
サブクラス化
↓
ASSERT
2017/02/15(水) 17:43:20.32ID:WDBEc38A
途中で送信してしまいました
現状はこんな感じでアサートに引っ掛かってしまいます
デバッガで追うとウィンドウのMAP(?)にサブクラス化対象のウィンドウが既に存在しているとアサートされるようなのですが、このウィンドウマップにどこで登録されるのかが解りません
マップに登録される=MSDNの言う「ウィンドウをMFCオブジェクトに結び付ける」と言うことなのかと推測しています
現状はこんな感じでアサートに引っ掛かってしまいます
デバッガで追うとウィンドウのMAP(?)にサブクラス化対象のウィンドウが既に存在しているとアサートされるようなのですが、このウィンドウマップにどこで登録されるのかが解りません
マップに登録される=MSDNの言う「ウィンドウをMFCオブジェクトに結び付ける」と言うことなのかと推測しています
2017/02/15(水) 17:49:31.94ID:urFAvqLF
その工程ならサブクラス化はいらないはず
でもウィザードを使わずにクラスを作ったら
おまじないマクロがついてこないんじゃないかな
後始末のときにオブジェクト開放が先かウインドウ破棄が先かってのも迷う
でもウィザードを使わずにクラスを作ったら
おまじないマクロがついてこないんじゃないかな
後始末のときにオブジェクト開放が先かウインドウ破棄が先かってのも迷う
60デフォルトの名無しさん
2017/02/15(水) 19:18:20.41ID:WDBEc38A >>59
ありがとうございます
説明不足で申し訳ありません
そもそも何故エディットボックスをサブクラス化したいかというとエディットボックスのコンテキストメニューを改造したいためなのです
エディットボックスにくるWN_RBUTTONDOWNをトラップするため、サブクラス化が必須になっている次第です
ありがとうございます
説明不足で申し訳ありません
そもそも何故エディットボックスをサブクラス化したいかというとエディットボックスのコンテキストメニューを改造したいためなのです
エディットボックスにくるWN_RBUTTONDOWNをトラップするため、サブクラス化が必須になっている次第です
2017/02/15(水) 19:36:45.27ID:sI0w68I3
2017/02/15(水) 19:40:04.43ID:8VpWPRqB
Createするから既存になってしまうんじゃないの?
>>57でいうサブクラス化ってSubclassWindow? SubclassDlgItem?
CEditのサブクラスは時々使うけどSubclassWindow経由では使ってないので
外してたらスマソ
>>57でいうサブクラス化ってSubclassWindow? SubclassDlgItem?
CEditのサブクラスは時々使うけどSubclassWindow経由では使ってないので
外してたらスマソ
6362
2017/02/15(水) 19:46:05.27ID:8VpWPRqB2017/02/15(水) 19:51:10.47ID:uPR4+QIT
自分でサブクラス化したときはDDX_Controlを削らないとうまく動いてくれなかったような気がする。
正解は知らんが。
正解は知らんが。
2017/02/15(水) 19:57:49.61ID:IaTHaUdU
66デフォルトの名無しさん
2017/02/15(水) 20:56:19.16ID:WDBEc38A67デフォルトの名無しさん
2017/02/15(水) 20:58:48.04ID:WDBEc38A68デフォルトの名無しさん
2017/02/15(水) 21:01:57.77ID:WDBEc38A >>65
エディットボックスのマウス右クリックはサブクラス化が必要なようです
でも確かになにかコンテキスト〜というメッセージがあったような気もしないでもないのですが…
WEBで調べた限りですと右クリックメッセージをフックしているのしか出てきませんでした
エディットボックスのマウス右クリックはサブクラス化が必要なようです
でも確かになにかコンテキスト〜というメッセージがあったような気もしないでもないのですが…
WEBで調べた限りですと右クリックメッセージをフックしているのしか出てきませんでした
6962
2017/02/15(水) 21:37:49.75ID:8VpWPRqB 回答ではなく代替案ですが
1. CEditのサブクラスでOnContextMenuをオーバーライドしてメニュー処理を記述。
2. https://support.microsoft.com/ja-jp/help/403856
中の
また、CDialog::DoDataExchange() で DDX を使用して..
のやりかたで CEditをCYourEditに変更。
で独自のコンテキストメニューは出ますよ。
1. CEditのサブクラスでOnContextMenuをオーバーライドしてメニュー処理を記述。
2. https://support.microsoft.com/ja-jp/help/403856
中の
また、CDialog::DoDataExchange() で DDX を使用して..
のやりかたで CEditをCYourEditに変更。
で独自のコンテキストメニューは出ますよ。
2017/02/15(水) 21:47:42.01ID:WDBEc38A
2017/02/20(月) 02:48:59.49ID:oIbcE82M
明日もあさっても過ぎたんだけど、どうなったんだろうね。
2017/02/22(水) 11:13:17.19ID:T1tKwjPz
事務所をロックアウトされて入れません
2017/02/27(月) 15:33:23.44ID:APOfiEEu
>>71
これは失礼しました
解決しましたのでご報告致します
結果的にはサブクラス化出来ました
動的にCEditを生成した際、実際のコントロールをCriateメソッドで生成すると思いますが一旦生成してしまうとサブクラス化できないようです
CMyEdit pualic CEdit として派生
CMyEdit lpCMyEdit = new CMyEdit;
lpCMyEdit->SubclassWindow(...←ここでサブクラス化
lpCMyEdit->Crate(...←コントロール作成
上記の手順でサブクラス化できましたのでWM_CONTEXTやWM_CHARに対してメッセージトラップが可能になりましたので全て実現できました
MFCのいう、ウィンドウの関連付けというのは恐らくコントロール作成時にWindowMapというMFCのクラスに登録されることかと思われます
改めて色々と相談に乗っていただき有り難うございました
また何かありましたら質問させて頂きます
>>72
間一髪間に合いました
これは失礼しました
解決しましたのでご報告致します
結果的にはサブクラス化出来ました
動的にCEditを生成した際、実際のコントロールをCriateメソッドで生成すると思いますが一旦生成してしまうとサブクラス化できないようです
CMyEdit pualic CEdit として派生
CMyEdit lpCMyEdit = new CMyEdit;
lpCMyEdit->SubclassWindow(...←ここでサブクラス化
lpCMyEdit->Crate(...←コントロール作成
上記の手順でサブクラス化できましたのでWM_CONTEXTやWM_CHARに対してメッセージトラップが可能になりましたので全て実現できました
MFCのいう、ウィンドウの関連付けというのは恐らくコントロール作成時にWindowMapというMFCのクラスに登録されることかと思われます
改めて色々と相談に乗っていただき有り難うございました
また何かありましたら質問させて頂きます
>>72
間一髪間に合いました
2017/02/27(月) 15:36:16.33ID:APOfiEEu
>>73
誤字が…多かったです、すみません
誤字が…多かったです、すみません
2017/03/02(木) 18:53:27.03ID:5095SEQp
>>73
リソースにエディットがないのに、SubclassWindow()を呼び出したって…
一体何をサブクラス化したんだろう…
リソースにエディットがなければ Create() だけでいい
リソースにエディットがあるなら SubclassWindow() だけでいい
(この場合は、69さんの2のやり方が普通だと思う)
リソースにエディットがないのに、SubclassWindow()を呼び出したって…
一体何をサブクラス化したんだろう…
リソースにエディットがなければ Create() だけでいい
リソースにエディットがあるなら SubclassWindow() だけでいい
(この場合は、69さんの2のやり方が普通だと思う)
7662
2017/03/02(木) 19:31:25.20ID:icVxeh77 改めてよく読んだらおかしいねw
SubclassWindowのパラメータに何を渡したんだろう
本人が解決したって言ってるんだから別にいいけど
SubclassWindowのパラメータに何を渡したんだろう
本人が解決したって言ってるんだから別にいいけど
2017/03/02(木) 19:58:19.05ID:i8opxKVO
>>75
MFC使い方がよくわかってなくて混乱させているようで誠に申し訳ないです…
CEditをnewにて動的に作っていますのでリソースは一切使っていないです
具体的にはエクセルのシートの様な格子形のグラフィックを描画し、そのカラムをクリック等された際にエディットボックスを動的にカラムの座標に作っています
MFC使い方がよくわかってなくて混乱させているようで誠に申し訳ないです…
CEditをnewにて動的に作っていますのでリソースは一切使っていないです
具体的にはエクセルのシートの様な格子形のグラフィックを描画し、そのカラムをクリック等された際にエディットボックスを動的にカラムの座標に作っています
2017/03/03(金) 12:50:31.31ID:fzOn+GKU
>>76
SubclassWindowにはCEdit派生の独自クラスを渡しています
自分は普段SDKしか使わないためSDKの感覚なのですが、ウィンドウのサブクラス化とは、サブクラス化したいウィンドウハンドルのウィンドウプロシジャのアドレスを別途作成した独自ウィンドウプロシジャのアドレスと差し替える事と認識しています
ですのでSubclassWindowに渡すハンドルはサブクラス化したいウィンドウのハンドルと思っていましたが何か別のパターンがあるのでしょうか?
SubclassWindowにはCEdit派生の独自クラスを渡しています
自分は普段SDKしか使わないためSDKの感覚なのですが、ウィンドウのサブクラス化とは、サブクラス化したいウィンドウハンドルのウィンドウプロシジャのアドレスを別途作成した独自ウィンドウプロシジャのアドレスと差し替える事と認識しています
ですのでSubclassWindowに渡すハンドルはサブクラス化したいウィンドウのハンドルと思っていましたが何か別のパターンがあるのでしょうか?
2017/03/03(金) 16:16:47.27ID:Mc9uDdoy
>>78
> CMyEdit public CEdit として派生
> CMyEdit* lpCMyEdit = new CMyEdit;
ここでは、まだウィンドウは無い (コンストラクタに小細工がなければ)
> lpCMyEdit->SubclassWindow(...←ここでサブクラス化
もし以下のように書いたとしても、ハンドルは NULL だからサブクラス化できない
lpCMyEdit->SubclassWindow(lpCMyEdit->GetSafeHwnd());
> lpCMyEdit->Create(...←コントロール作成
この中で、ウィンドウが作成されサブクラス化される
なので SubclassWindow() の明示的な呼び出しは不要
> CMyEdit public CEdit として派生
> CMyEdit* lpCMyEdit = new CMyEdit;
ここでは、まだウィンドウは無い (コンストラクタに小細工がなければ)
> lpCMyEdit->SubclassWindow(...←ここでサブクラス化
もし以下のように書いたとしても、ハンドルは NULL だからサブクラス化できない
lpCMyEdit->SubclassWindow(lpCMyEdit->GetSafeHwnd());
> lpCMyEdit->Create(...←コントロール作成
この中で、ウィンドウが作成されサブクラス化される
なので SubclassWindow() の明示的な呼び出しは不要
2017/03/03(金) 20:49:57.22ID:GdXfDzVm
>>78
CEditをどういう風にカスタマイズしたいのかわからんが
>CEdit派生の独自クラス
の段階でそれを実装できないの?
通常サブクラス化を必要とするのは(通常の手段では)派生クラスを置けないダ
イアログ上のコントロールに対しての場合のみで、そうで無い場合は必要な機
能を実装したCEdit派生クラスをCreate()するだけで実現できると思うんだが・・
MFCでは(メッセージマップの仕掛けによって)ほぼ全てのメッセージを派生ク
ラスで独自処理を行えるので、サブクラス化は必要ないはずです。
CEditをどういう風にカスタマイズしたいのかわからんが
>CEdit派生の独自クラス
の段階でそれを実装できないの?
通常サブクラス化を必要とするのは(通常の手段では)派生クラスを置けないダ
イアログ上のコントロールに対しての場合のみで、そうで無い場合は必要な機
能を実装したCEdit派生クラスをCreate()するだけで実現できると思うんだが・・
MFCでは(メッセージマップの仕掛けによって)ほぼ全てのメッセージを派生ク
ラスで独自処理を行えるので、サブクラス化は必要ないはずです。
2017/03/03(金) 21:07:16.24ID:4N2nnk0c
2017/03/03(金) 23:45:50.26ID:fzOn+GKU
>>79
なるほど、確かに仰る通りです
MFCだと定義済みコントロールを作成したタイミングでサブクラス化が自動的に行われているんですか…知らなかった…
SubclassWindowの戻り値を確認してみます
なるほど、確かに仰る通りです
MFCだと定義済みコントロールを作成したタイミングでサブクラス化が自動的に行われているんですか…知らなかった…
SubclassWindowの戻り値を確認してみます
2017/03/03(金) 23:47:56.70ID:fzOn+GKU
2017/03/03(金) 23:49:20.96ID:fzOn+GKU
2017/03/04(土) 06:08:14.80ID:5oPjtzPk
>83
不要
不要
2017/03/12(日) 16:57:53.13ID:L/+Vp36z
2017/03/12(日) 20:13:37.36ID:g7gIuH2o
そもそもなぜサブクラス化って言うの?
クラスとは関係ないと思うんですが
クラスとは関係ないと思うんですが
2017/03/12(日) 20:23:14.61ID:DJd+bif5
サブクラス化というネーミングはイマイチだとずっと思ってた。
APIの名称から来てるから翻訳者に罪はないが、、
VS2017入れてみたけど_MFC_VERは変化なし。
残念だ。
APIの名称から来てるから翻訳者に罪はないが、、
VS2017入れてみたけど_MFC_VERは変化なし。
残念だ。
2017/03/12(日) 20:33:34.83ID:l5dI0q1q
>>87
多分ウィンドウクラスを横取りするからじゃないかな?
多分ウィンドウクラスを横取りするからじゃないかな?
2017/04/02(日) 01:00:25.54ID:4o8Jb7FT
実際クラスとは関係ないと思う
ファーストクラスとかも全然クラス関係ないし
英語にそういうニュアンスがあるんじゃないの
ファーストクラスとかも全然クラス関係ないし
英語にそういうニュアンスがあるんじゃないの
2017/04/13(木) 15:17:28.33ID:O8cH7Ezk
Windows1.0のときからあるし、オブジェクト指向の用語とは別路線で発生したもんだしなあ
2017/04/13(木) 21:53:13.05ID:rVYtPk7E
GUI自体がオブジェクト指向の影響下で発展してきたわけで、別路線ってことはないだろう。
ウィンドウクラスごとにそれぞれ異なるWinProcを指す仕組みなんてほとんどv-tableだし。
ウィンドウクラスごとにそれぞれ異なるWinProcを指す仕組みなんてほとんどv-tableだし。
2017/04/14(金) 10:48:36.47ID:L6e5ZQwW
確かWin32APIはsmalltalk由来のメッセージパッシング式オブジェクト指向を意識して作られたとかなんとか。
んで、C++はメッセージパッシング意識して作られてなかったから、言語自体を拡張されたのがC++Builderで、言語は拡張せず、メッセージテーブル作って無理くり対応したのがVCのMFCって何かで読んだ。
そう考えるとMFC以前はCでどうにかオブジェクト指向と言うより、メッセージパッシングを実現しようとしてWin32APIが出来たんだろね。
んで、C++はメッセージパッシング意識して作られてなかったから、言語自体を拡張されたのがC++Builderで、言語は拡張せず、メッセージテーブル作って無理くり対応したのがVCのMFCって何かで読んだ。
そう考えるとMFC以前はCでどうにかオブジェクト指向と言うより、メッセージパッシングを実現しようとしてWin32APIが出来たんだろね。
2017/04/16(日) 20:06:30.26ID:5A0Iky+5
Win16の存在が消されてる...
2017/04/17(月) 00:21:05.80ID:6QpAECc+
生まれてなかったんで。
そう言えばWin16sとの互換性のためとか勉強した覚えある。
そう言えばWin16sとの互換性のためとか勉強した覚えある。
2017/04/17(月) 00:52:44.41ID:tarAwmvI
win32sならやったけど、Win16sは知らないなあ。
2017/04/17(月) 08:58:12.02ID:V9IKpLf1
揚げ足どりにも程があるw
2017/04/27(木) 23:52:23.90ID:fIPmJDul
IT業界を離れて10数年経つ者です。
いまどき高速なアプリを手軽に作りたい場合、現役の方はどういう環境で作っています?
当時は主にMFC、たまにC++Builderでやってました。重くても良い場合はVBも使いました。
出来れば今後10年使えそうな奴をお願いします。今もたまに簡単なツールを作る機会が
ありますが、その際はMFCで作っています。多少勉強する覚悟はあります。
よろしくお願いします。
いまどき高速なアプリを手軽に作りたい場合、現役の方はどういう環境で作っています?
当時は主にMFC、たまにC++Builderでやってました。重くても良い場合はVBも使いました。
出来れば今後10年使えそうな奴をお願いします。今もたまに簡単なツールを作る機会が
ありますが、その際はMFCで作っています。多少勉強する覚悟はあります。
よろしくお願いします。
2017/04/28(金) 01:05:33.78ID:1gQE0OT9
100デフォルトの名無しさん
2017/04/29(土) 20:05:07.24ID:cs4H/lwY >>98
本当に経験者ならこんな質問はしないやな
本当に経験者ならこんな質問はしないやな
101デフォルトの名無しさん
2017/04/29(土) 21:27:44.34ID:p2ephTDn >>98
C#
C#
102デフォルトの名無しさん
2017/05/01(月) 17:24:45.69ID:tRarccr2 C#やっときゃなんとかなる
103デフォルトの名無しさん
2017/05/01(月) 22:10:24.46ID:ybWlfBdW WPFやUWPは廃れても、C#とXAMLは残ってそう。
C++とMFCも地味に残ってるだろうけど。。。
C++とMFCも地味に残ってるだろうけど。。。
10498
2017/05/01(月) 23:13:30.10ID:MV/lR732 ご意見ありがとうございます。
参考にします。
参考にします。
105デフォルトの名無しさん
2017/05/07(日) 20:46:12.14ID:904pYcPE C#意外と人気なんだな・・・驚いた
106デフォルトの名無しさん
2017/05/10(水) 00:20:17.07ID:+OKBVlnQ MFCで印刷プレビューのリボンバーってどうやってカスタマイズするの??
107デフォルトの名無しさん
2017/05/23(火) 19:47:17.95ID:U7efYych MDIの子ウィンドウのハンドルはどこですかぁ〜
108デフォルトの名無しさん
2017/05/24(水) 06:22:57.52ID:r4nnDW8T109デフォルトの名無しさん
2017/05/30(火) 19:18:12.89ID:R0a35IVC > CCriticalSection オブジェクトの使用方式は、2 とおりあります。
> スタンドアロン方式、およびクラスに埋め込む方式です。
>
> スタンドアロン方式
> CCriticalSection オブジェクトをスタンドアロンで使うには、
> 必要が生じたときに CCriticalSection オブジェクトを構築します。
> コンストラクタから正常に戻った後、Lock を呼び出してオブジェクトを明示的にロックします。
> クリティカル セクションへのアクセスが完了したら、Unlock を呼び出します。
> この方法はソース コードを読んだ人にはわかりやすいのですが、
> アクセスの前後でクリティカル セクションをロック、アンロックすることを
> 覚えておかなければならないため、エラーを引き起こす傾向があります。
> より望ましいのは、CSingleLock クラスを使う方法です。
> この場合も Lock メソッドおよび Unlock メソッドを使いますが、
> 例外が発生したときにリソースのロックを解除する必要はありません。
>
> 埋め込み方式
> CCriticalSection 型のデータ メンバをクラスに追加し、
> 必要に応じてロックすると、複数のスレッドでクラスを共有することもできます。
MSDNのCCriticalSectionの説明には、上のように書かれているのですが、
このスタンドアロン方式って、どういう意図なのでしょうか。
普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが、
それだと全く排他制御になっていないのでは?
> スタンドアロン方式、およびクラスに埋め込む方式です。
>
> スタンドアロン方式
> CCriticalSection オブジェクトをスタンドアロンで使うには、
> 必要が生じたときに CCriticalSection オブジェクトを構築します。
> コンストラクタから正常に戻った後、Lock を呼び出してオブジェクトを明示的にロックします。
> クリティカル セクションへのアクセスが完了したら、Unlock を呼び出します。
> この方法はソース コードを読んだ人にはわかりやすいのですが、
> アクセスの前後でクリティカル セクションをロック、アンロックすることを
> 覚えておかなければならないため、エラーを引き起こす傾向があります。
> より望ましいのは、CSingleLock クラスを使う方法です。
> この場合も Lock メソッドおよび Unlock メソッドを使いますが、
> 例外が発生したときにリソースのロックを解除する必要はありません。
>
> 埋め込み方式
> CCriticalSection 型のデータ メンバをクラスに追加し、
> 必要に応じてロックすると、複数のスレッドでクラスを共有することもできます。
MSDNのCCriticalSectionの説明には、上のように書かれているのですが、
このスタンドアロン方式って、どういう意図なのでしょうか。
普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが、
それだと全く排他制御になっていないのでは?
110デフォルトの名無しさん
2017/05/31(水) 00:18:49.47ID:VxTDzTEq Mutexみたいに名前付きなら上のスタンドアロン方式も理解できるけど名前ないからなー
わかんね
わかんね
111デフォルトの名無しさん
2017/05/31(水) 10:12:23.47ID:7kWP6r82 CCriticalSectionインスタンスが同期オブジェクトなわけではないよ。
クリティカルセクションは名前の通りクリティカルな区間のこと。Win32APIのEnterCriticalSection()からLeaveCriticalSection()の区間。
CCriticalSectionはこれのラッパー。
クリティカルセクションに入るスレッドはプロセスで一つだけになる。
プロセス間排他はできない代わりに軽い。
同期オブジェクトがプロセスで一つだけになのと同義。
マルチコア・マルチスレッドでロック待ちが無視できなくなるようなら他の使う。
クリティカルセクションは名前の通りクリティカルな区間のこと。Win32APIのEnterCriticalSection()からLeaveCriticalSection()の区間。
CCriticalSectionはこれのラッパー。
クリティカルセクションに入るスレッドはプロセスで一つだけになる。
プロセス間排他はできない代わりに軽い。
同期オブジェクトがプロセスで一つだけになのと同義。
マルチコア・マルチスレッドでロック待ちが無視できなくなるようなら他の使う。
112デフォルトの名無しさん
2017/05/31(水) 13:08:02.66ID:ZVZYbrmW >>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クラスを使えと。
クリティカルセクションという用語は>>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.04ID:rXndkeA4 >>110-112
解説ありがとうございます。
> CCriticalSection csForFoo ; // 非AUTO
> :
> csForFoo.Lock() ;
> strFoo += strBar ;
> csForFoo.Unlock() ;
この使い方が当初の疑問だったのですが、
このローカル変数としての使い方って、意味ありますか?
試しに同じような処理を作って、複数のスレッドから同時に呼んでみても、
全く排他制御されているように見えなかったのですが。
解説ありがとうございます。
> CCriticalSection csForFoo ; // 非AUTO
> :
> csForFoo.Lock() ;
> strFoo += strBar ;
> csForFoo.Unlock() ;
この使い方が当初の疑問だったのですが、
このローカル変数としての使い方って、意味ありますか?
試しに同じような処理を作って、複数のスレッドから同時に呼んでみても、
全く排他制御されているように見えなかったのですが。
114デフォルトの名無しさん
2017/06/05(月) 10:47:00.10ID:CcS2OTgy115デフォルトの名無しさん
2017/06/05(月) 12:03:45.22ID:umvVrk12 >>114
> CCriticalSection csForFoo ; // 非AUTO
> :
> csForFoo.Lock() ;
ああ、このcsForFooは関数内の自動変数ではなくて、
関数外なり静的変数なりで定義されているものいうことでしたか。
> 普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが
の「ローカル変数」は、「自動変数」の意味でした。
失礼しました。
> CCriticalSection csForFoo ; // 非AUTO
> :
> csForFoo.Lock() ;
ああ、このcsForFooは関数内の自動変数ではなくて、
関数外なり静的変数なりで定義されているものいうことでしたか。
> 普通に読めば、関数の内部でローカル変数として宣言するように思えるのですが
の「ローカル変数」は、「自動変数」の意味でした。
失礼しました。
116デフォルトの名無しさん
2017/06/05(月) 19:28:46.05ID:SdDD09qt >>109の原文(MSDN)には
construct the CCriticalSection object when it is needed.
と書かれているからCCriticalSection objectはオート変数と解釈してもおかしくは無い気がする。
staticならあらかじめになってしまう。
construct the CCriticalSection object when it is needed.
と書かれているからCCriticalSection objectはオート変数と解釈してもおかしくは無い気がする。
staticならあらかじめになってしまう。
117デフォルトの名無しさん
2017/06/06(火) 17:22:09.38ID:2bddCvIA >>116
「コンストラクタから正常に戻った後、Lock を呼び出して」
とも書いてあるので、普通に読めば自動変数ですよねぇ。
でも、自動変数のCCriticalSectionをロックしても排他制御になっていないはずだし、
これはどういう意図なんだろうか、という質問でした。
「コンストラクタから正常に戻った後、Lock を呼び出して」
とも書いてあるので、普通に読めば自動変数ですよねぇ。
でも、自動変数のCCriticalSectionをロックしても排他制御になっていないはずだし、
これはどういう意図なんだろうか、という質問でした。
118デフォルトの名無しさん
2017/11/29(水) 18:24:25.41ID:HFlnlUlA MFC MDIで2つのメニューを出したいので、mainframeにCMFCMenuBarを2つ作って、2つCreateすると、2つ目のCreateはAssertでとまってしまいます。2つのメニューを表示させる方法はありませんか?
119デフォルトの名無しさん
2017/11/30(木) 13:32:53.51ID:isxZpuq9 >>118
「Method should be called once!」
なんてコメントが入ってるくらいだから、メニューは一つという設計なんだろう。
CMFCToolBarにCMFCToolBarMenuButtonを並べたほうが早いかも。
見た目を完全にメニューと合わせるなら、派生クラスを作ってオーバーライドする必要もあるだろうけど。
「Method should be called once!」
なんてコメントが入ってるくらいだから、メニューは一つという設計なんだろう。
CMFCToolBarにCMFCToolBarMenuButtonを並べたほうが早いかも。
見た目を完全にメニューと合わせるなら、派生クラスを作ってオーバーライドする必要もあるだろうけど。
120デフォルトの名無しさん
2017/11/30(木) 20:04:53.18ID:9ANPxZI+ menuボタンを並べるのは良いアイデアだと思います。IEdemoというサンプルを見ていたら、LinkBarというクラスを作って使っていました。2つのメニューは、やはり初期化しないのが良さそうです。1つは別の物にしてみます。ありがとうございます!
121デフォルトの名無しさん
2017/11/30(木) 23:13:55.12ID:9ANPxZI+ IEDEMOのMFCコード、なかなか思い道理に動きません。MDIでサンプルを作って、CLinksBarとCLinksButtonを移植しようとしましたが、表示がバグります。バグっているけれどマウスカーソルをあてると、TOOLTIPが表示されます。何かが足りないようです。難しい
122デフォルトの名無しさん
2017/12/01(金) 09:35:49.83ID:/UAM0shb >>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));
}
>>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.56ID:658qbITu >>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さんありがとう!
下記のようにしたら、思い通りのメニューが出て、しっかり動いてくれました。
/*
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.75ID:6uVA15bl MDIで色々ウインドウを出すと、チャイルドウィンドウのタイトルバーが:1 :2になったり、消えてしまったりします。特に後ろになったチャイルドウィンドウのタイトルバーが書き換わって、タイトルが消えてしまう問題に頭を痛めております。
CWNDクラス内などにウインドウタイトルの情報を保持していて、時々その保持している情報で書き換えているように思うのですが、保持している情報がどれなのか、書き換えられるのかわかりません。
今の所OnPaint内でGetParent()->SetWindowTextで書き換えているのですが先のようにチャイルドウインドウが後ろに回るとタイトル表示が消えたりします。なにか良いタイトルバーテキストの書き換え方法は有りませんでしょうか?
CWNDクラス内などにウインドウタイトルの情報を保持していて、時々その保持している情報で書き換えているように思うのですが、保持している情報がどれなのか、書き換えられるのかわかりません。
今の所OnPaint内でGetParent()->SetWindowTextで書き換えているのですが先のようにチャイルドウインドウが後ろに回るとタイトル表示が消えたりします。なにか良いタイトルバーテキストの書き換え方法は有りませんでしょうか?
125デフォルトの名無しさん
2017/12/12(火) 18:12:33.03ID:/EihAdTu 124が消したり書き換えているんだと思う。
素のMDIプロジェクト作ってもそういう動きになる?
素のMDIプロジェクト作ってもそういう動きになる?
126デフォルトの名無しさん
2017/12/12(火) 22:35:42.07ID:CKA01eZH 素のMDIプロジェクトだとなりません。素のままだとタイトルバーがチャイルドウインドウの数に応じてプロジェクト名+1,2,3と表示されてしまいます。
チャイルドウインドウのFormView別にチャイルドウインドウのタイトルを変化させたいのですが、うまくいきません。
タイトルバーをもっと思うように書き換える方法を探しております。
チャイルドウインドウのFormView別にチャイルドウインドウのタイトルを変化させたいのですが、うまくいきません。
タイトルバーをもっと思うように書き換える方法を探しております。
127デフォルトの名無しさん
2017/12/12(火) 23:44:01.59ID:/EihAdTu CDocumentのサブクラスでSetTitle(LPCTSTR lpszTitle)をオーバーライドして独自のタイトルを付けるのはどうかな。
よく覚えてないけど独自のタイトルじゃなくlpszTitleを加工しようとすると嫌な感じにハマった記憶が、、
よく覚えてないけど独自のタイトルじゃなくlpszTitleを加工しようとすると嫌な感じにハマった記憶が、、
128デフォルトの名無しさん
2017/12/13(水) 09:22:41.41ID:lt+jgkVB >>124
CMDIChildWnd::OnUpdateFrameTitle()をオーバーライドしてみては。
何科変化するたびにこの関数が呼ばれるし、
デフォルトの処理だと、ここで":1"とか追加している。
CMDIChildWnd::OnUpdateFrameTitle()をオーバーライドしてみては。
何科変化するたびにこの関数が呼ばれるし、
デフォルトの処理だと、ここで":1"とか追加している。
129デフォルトの名無しさん
2017/12/13(水) 09:23:33.82ID:lt+jgkVB × 何科
○ なにか
○ なにか
130デフォルトの名無しさん
2017/12/13(水) 12:23:45.29ID:h/Ab3OoN131デフォルトの名無しさん
2017/12/13(水) 18:07:57.07ID:xRSHjr6s >CMDIChildWnd::OnUpdateFrameTitle()をオーバーライドしてみては。
OnUpdateFrameTitleをオーバーライドして、親クラスのメソッドをよびにいく時のパラメーターをfalseにしてみたところ、チャイルドウインドウのタイトルが書き換わらなくなりました。
ありがとうございます!
OnUpdateFrameTitleをオーバーライドして、親クラスのメソッドをよびにいく時のパラメーターをfalseにしてみたところ、チャイルドウインドウのタイトルが書き換わらなくなりました。
ありがとうございます!
132デフォルトの名無しさん
2017/12/25(月) 18:31:00.49ID:1KZX1+KX mfcで見た目の良い(テーマを適用した)ラジオボタンを出したいと思っています。ところが、ラジオボタンのクラスとして、CMFCRadioButtonというクラスがありません。
恐らくCMFCButtonクラスのインスタンスを生成してラジオボタンとして用いるのかなと悩み、CMFCButtonクラスの継承でCMFCRadioButtonクラスが作れないものか、考えています。
CMFCRadioButtonクラスは作ってみた物の、CMFCRadioButtonクラスのOnDrawが呼び出されません。CMFCタイプのラジオボタンを生成する良い方法はございませんか?
恐らくCMFCButtonクラスのインスタンスを生成してラジオボタンとして用いるのかなと悩み、CMFCButtonクラスの継承でCMFCRadioButtonクラスが作れないものか、考えています。
CMFCRadioButtonクラスは作ってみた物の、CMFCRadioButtonクラスのOnDrawが呼び出されません。CMFCタイプのラジオボタンを生成する良い方法はございませんか?
133デフォルトの名無しさん
2017/12/26(火) 09:21:22.00ID:pmYcZWoZ >>132
virtual void OnDraw(CDC* pDC, const CRect& rect, UINT uiState);
をオーバーライドしたら、ちゃんと呼ばれているように見えるけど。
virtual void OnDraw(CDC* pDC, const CRect& rect, UINT uiState);
をオーバーライドしたら、ちゃんと呼ばれているように見えるけど。
134デフォルトの名無しさん
2017/12/26(火) 12:13:07.59ID:SnpEsSKI リソースではラジオボタンを定義しておいて、DDXCONTROLからCMFCRadioButtonクラス(CMFCButtonクラス派生)とひもづけると、外観がボタンになってしまいます。
外観はボタンですが、確かにCMFCRadioButtonクラスのOnDrawは呼び出されます。
外観がボタンではなく、ラジオボタンにする方法をご教示下さい。
外観はボタンですが、確かにCMFCRadioButtonクラスのOnDrawは呼び出されます。
外観がボタンではなく、ラジオボタンにする方法をご教示下さい。
135デフォルトの名無しさん
2017/12/26(火) 12:55:18.72ID:pmYcZWoZ >>134
CMFCButtonの標準の描画処理がボタン前提になっているので、
ラジオボタンの見た目を表現したいなら、
OnDraw()などをオーバーライドして自分で完全に描画するしかないかと。
そもそも、CMFCButtonではなくCButtonにしてしまえば、
Windowsのテーマに従ったものは描画されるけど、
そうではなく、CMFCVisualManagerのテーマのことでいいんだよね?
最新のMFCは知らないけど、2008で導入されたときのMFCは、
ダイアログや内部のコントロールのテーマ描画は対応してない。
ライブラリの元となったBCG社が、機能を別売りしている。
ttps://www.bcgsoft.com/featuretour/tour240.htm
CMFCButtonの標準の描画処理がボタン前提になっているので、
ラジオボタンの見た目を表現したいなら、
OnDraw()などをオーバーライドして自分で完全に描画するしかないかと。
そもそも、CMFCButtonではなくCButtonにしてしまえば、
Windowsのテーマに従ったものは描画されるけど、
そうではなく、CMFCVisualManagerのテーマのことでいいんだよね?
最新のMFCは知らないけど、2008で導入されたときのMFCは、
ダイアログや内部のコントロールのテーマ描画は対応してない。
ライブラリの元となったBCG社が、機能を別売りしている。
ttps://www.bcgsoft.com/featuretour/tour240.htm
136デフォルトの名無しさん
2017/12/26(火) 19:16:10.15ID:85Qwpz2C 2008年にMSがBCGを買収してCommunityEditionにこれが入っていたら、、と思う。
137デフォルトの名無しさん
2017/12/26(火) 20:03:16.51ID:U4eSFsG2 CMFCVisualManagerでたぶんあっています。
mfcのコンパイルオプションをUnicodeモードにすると、ラジオボタンの見た目が変わることは分かったのですが、ANSI(ShiftJIS)モードでコンパイルしたいのです。
今気になっているのは、manifestファイルを追加してみようと思います。
http://gurigumi.s349.xrea.com/programming/visualcpp/sdk_luna.html
mfcのコンパイルオプションをUnicodeモードにすると、ラジオボタンの見た目が変わることは分かったのですが、ANSI(ShiftJIS)モードでコンパイルしたいのです。
今気になっているのは、manifestファイルを追加してみようと思います。
http://gurigumi.s349.xrea.com/programming/visualcpp/sdk_luna.html
138デフォルトの名無しさん
2017/12/26(火) 20:28:21.70ID:SQt/8UlT139デフォルトの名無しさん
2017/12/26(火) 21:53:49.91ID:lgrMwj5m マルチバイト文字モードでコンパイルした場合の見た目の違いです。DDXControlで左はCButton右はCMFCButtonとひもづけました。
https://i.imgur.com/4qA7an3.jpg
https://i.imgur.com/4qA7an3.jpg
140デフォルトの名無しさん
2017/12/26(火) 22:19:37.75ID:lgrMwj5m やはりmanifestファイルのようです。マニフェストファイルでラジオボタンは変化しました。
マニフェスト適用後
https://i.imgur.com/JqRoqH4.jpg
マニフェスト適用前
https://i.imgur.com/lC9fLyO.jpg
マニフェスト適用後
https://i.imgur.com/JqRoqH4.jpg
マニフェスト適用前
https://i.imgur.com/lC9fLyO.jpg
141デフォルトの名無しさん
2017/12/30(土) 19:20:54.71ID:W7MN//Qp このスレはVisualStudioの使い方、
質問はアプリケーションの作り方
微妙に違うといえば違う。
かといって誘導出来る適当なスレは見当たらない
MFCのスレくらいかな
質問はアプリケーションの作り方
微妙に違うといえば違う。
かといって誘導出来る適当なスレは見当たらない
MFCのスレくらいかな
142デフォルトの名無しさん
2017/12/30(土) 20:06:14.31ID:k3f51DlY mfcのスレでmfcのクラスに関する質問をしていますよ。
143デフォルトの名無しさん
2018/01/06(土) 20:47:11.78ID:wtVvXwwo Excelでキャレットの無い状態から日本語入力をするとテキストボックス?が現れて文字が未確定状態で表示されますが
同様な動きををCViewとCEditでやろうとしています。
以前はViewのOnCharからCEditにWM_CHARをポストすることで普通に動いていたのですが、OSの仕様が変わったのか
最初の1文字が確定状態で表示されてしまいます。ATOKもMS-IMEも同じです。
何かヒントがあれば教えてください。
同様な動きををCViewとCEditでやろうとしています。
以前はViewのOnCharからCEditにWM_CHARをポストすることで普通に動いていたのですが、OSの仕様が変わったのか
最初の1文字が確定状態で表示されてしまいます。ATOKもMS-IMEも同じです。
何かヒントがあれば教えてください。
144デフォルトの名無しさん
2018/01/11(木) 02:22:52.84ID:azQtlc4c excelでキャレットの無い状態というのがわかりません。^が無い状態で入力を開始するのでしょうか?
145デフォルトの名無しさん
2018/01/11(木) 22:28:59.70ID:nH81YmjO146デフォルトの名無しさん
2018/01/11(木) 22:30:38.90ID:nH81YmjO 文字入力時に点滅する「I」のような記号がキャレットです。
147デフォルトの名無しさん
2018/01/12(金) 22:01:33.38ID:mgMC0phM 回答になっているかどうか分からないのですが、CViewクラスではない場合でCListCtrlクラス内にCEditを貼り付けて、そのCEdit上で編集をする例は有ります。
CView上にCEditを張り付けているような応用にもかなるかもしれませんので、例を上げます。
http://www.softist.com/programming/listctrl-edit/listctrl-edit.htm
CView上にCEditを張り付けているような応用にもかなるかもしれませんので、例を上げます。
http://www.softist.com/programming/listctrl-edit/listctrl-edit.htm
148デフォルトの名無しさん
2018/01/13(土) 18:52:00.81ID:CyFncowx149デフォルトの名無しさん
2018/01/29(月) 00:24:27.95ID:lYpQ/Knz すみませんお助けください
親ウインドウにテキストボックスとボタン、ボタンを押すとdomodalでウインドウが呼び出されます
その子ウインドウにはリストボックスがあって、そこには親のテキストボックスに入力された文字が表示される
そういうものを作ろうとしています
親テキストボックスの変数名がm_input
setvalueでプライベートにしてるリストボックス変数にそれを格納しています
ですがこれですとウインドウは表示されてもリストボックスはからっぽです。
一体何が悪いのでしょうか
void 親ウインドウクラス名::OnBnClickedButton1()
{
PopupDlg pdlg;
UpdateData(TRUE);
pdlg.setValue(m_input);
pdlg.DoModal();
UpdateData(FALSE);
}
親ウインドウにテキストボックスとボタン、ボタンを押すと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.91ID:TsZXtod4151デフォルトの名無しさん
2018/01/30(火) 19:55:15.15ID:JKI/Ug3X すっかり遅くなったけど申し訳ない
oninitdialogに処理書いたらなんとかなりました
oninitdialogに処理書いたらなんとかなりました
152デフォルトの名無しさん
2018/02/08(木) 23:58:28.60ID:/8AuktPL MDIウィンドウの場合で、メニューのフォントとフォントサイズは変えられますか?
ツールバーの右端に出てくるボタンの表示非表示を無くすことは出来ますか?
ツールバーの右端に出てくるボタンの表示非表示を無くすことは出来ますか?
153デフォルトの名無しさん
2018/02/09(金) 09:43:56.52ID:DYanFj/G >>152
MFC Feature Packのメニューやツールバーのことなら、
> メニューのフォントとフォントサイズ
CMFCMenuBar::SetMenuFont
> ボタンの表示非表示
CMFCToolBar::EnableCustomizeButton
MFC Feature Packのメニューやツールバーのことなら、
> メニューのフォントとフォントサイズ
CMFCMenuBar::SetMenuFont
> ボタンの表示非表示
CMFCToolBar::EnableCustomizeButton
154デフォルトの名無しさん
2018/02/09(金) 22:24:50.30ID:n0NVuMox ありがとうございます!試してみます。
155デフォルトの名無しさん
2018/02/10(土) 15:55:33.49ID:AljsEXlF あれ?
CListViewなくなったん?
ウイザードにないw
CListViewなくなったん?
ウイザードにないw
156デフォルトの名無しさん
2018/02/10(土) 19:51:23.23ID:kahd5R/F SDIかMDIを選んでいれば、ウイザードの最後の項目でViewを選択できるはずです。選ぶ中にCListViewは有るはずです。
157デフォルトの名無しさん
2018/02/10(土) 20:30:44.41ID:9BceoeeN ないんだなーこれが
158デフォルトの名無しさん
2018/02/10(土) 23:11:10.45ID:tnD/bf0m そんなわけ無いだろうと思ったけど、無いね..
CListViewは存在するけどウィザードでは選択できなくなったのか
結構便利なクラスだと思うんだけどな
CListViewは存在するけどウィザードでは選択できなくなったのか
結構便利なクラスだと思うんだけどな
159デフォルトの名無しさん
2018/02/10(土) 23:55:46.38ID:9BceoeeN だろー
昨日から三回も再インストールしてる
昨日から三回も再インストールしてる
160デフォルトの名無しさん
2018/02/11(日) 00:27:35.71ID:Abk6WT5B 確かに2017communityでは、無くなっています。2013Communityには有るようです。
161デフォルトの名無しさん
2018/02/11(日) 14:12:45.40ID:TT4/yggk 一応、MSに連絡
162デフォルトの名無しさん
2018/02/11(日) 17:09:15.62ID:NeODdjx3 まぁこのへんの仕組みはもう変わらないだろうし、
適当なものを選んでから書き直しても問題ないけどな。
適当なものを選んでから書き直しても問題ないけどな。
163デフォルトの名無しさん
2018/02/12(月) 00:23:21.23ID:gJKrDJtj TreeViewぐらいで
164デフォルトの名無しさん
2018/02/16(金) 06:26:23.85ID:W1XJdyx1 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
165デフォルトの名無しさん
2018/02/17(土) 09:44:17.48ID:skmHixeO ウィザードのCListViewの話
去年にはもうあった話題やん
もうちょっと頑張ってくれよ
https://developercommunity.visualstudio.com/content/problem/135607/vs-1541-vcmfc-application-wizard-cant-select-listv.html
去年にはもうあった話題やん
もうちょっと頑張ってくれよ
https://developercommunity.visualstudio.com/content/problem/135607/vs-1541-vcmfc-application-wizard-cant-select-listv.html
166デフォルトの名無しさん
2018/02/28(水) 17:21:10.04ID:C00JEheo167デフォルトの名無しさん
2018/02/28(水) 18:28:27.62ID:8m4UvZqy ソースが付いてるんだから読みなよ
168デフォルトの名無しさん
2018/03/01(木) 12:14:56.76ID:AHCBMzq/ >>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を呼ばない。
とりあえずこんな感じで書けば変わる。
ただ、あまり大きくすると、縦にドッキングしたときに文字が欠ける。
最新バージョンなら直っているのかもしれないけど、
自分のアプリではメニューは上部固定なので、深くは調べていない。
> メニューのフォントとフォントサイズ
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.24ID:txqdSq4Q 軽く煽ると答えを書いてくれるこのスレはチョロいよねw
170デフォルトの名無しさん
2018/03/01(木) 18:59:24.33ID:5P8YUW6k 自演じゃなければ
171デフォルトの名無しさん
2018/03/01(木) 21:28:45.70ID:qsUh1R3q 質問に答えると負けなんだろうか。
他のスレでも、質問に「答えない」ってだけのしょうもないマウントとりにくる人を見かけるね。
他のスレでも、質問に「答えない」ってだけのしょうもないマウントとりにくる人を見かけるね。
172デフォルトの名無しさん
2018/03/01(木) 22:57:24.75ID:txqdSq4Q >>171
君が質問に答えてあげればいいじゃん
君が質問に答えてあげればいいじゃん
173デフォルトの名無しさん
2018/03/04(日) 03:39:37.81ID:dAX9rxSb174デフォルトの名無しさん
2018/03/22(木) 07:47:15.16ID:QjvVr0xE 温度情報などをグラフにしてFormView上に描画できないか考え込んでいます。自前でCDCに描いていくのではなく、描くのに適しているmfcのライブラリは無いものか、探しています。どなたか目盛りのついたグラフ描画に良いクラスはご存じないでしょうか?
175デフォルトの名無しさん
2018/03/22(木) 10:15:31.03ID:Q2/ylW7b matlab
176デフォルトの名無しさん
2018/03/22(木) 12:52:08.54ID:nhBJfAJ/ >>174
MFC用の有料ライブラリならこのへんがあるけど、使い勝手は知らない
https://www.bcgsoft.com/featuretour/tour270.htm
http://www.codejock.com/products/chart/
無料ならこのへんのソースを読んでみるとか
https://www.codeproject.com/KB/miscctrl/#Charting+Controls
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.23ID:gaCTtyVy matlabはおそらく有料ライセンスですよね。
178デフォルトの名無しさん
2018/03/22(木) 18:22:47.87ID:gaCTtyVy >>176
> >>174
> MFC用の有料ライブラリならこのへんがあるけど、使い勝手は知らない
> https://www.bcgsoft.com/featuretour/tour270.htm
>
グラフとして、このようなグラフが描けると良いなとは思います。 http://www.codejock.com/products/chart/
>
> 無料ならこのへんのソースを読んでみるとか
> https://www.codeproject.com/KB/miscctrl/#Charting+Controls
ちょっと調べてみます。ありがとうございます。
> >>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.36ID:gaCTtyVy 昔の話で何ですが、DOSの時代にはMSCなどにグラフ描画ライブラリが付いてきていたような記憶があります。mfcには無さそうですよね。
180デフォルトの名無しさん
2018/03/22(木) 19:42:36.73ID:lw2+9AAf >>179
最新版は知らないが、昔のMFCには無かったと思う。
(昔の) MSDN Library をよく見ているが、発見してない。
でも、グラフ描画って、LineTo() だけでも大体いけると思うんだけど。
最新版は知らないが、昔のMFCには無かったと思う。
(昔の) MSDN Library をよく見ているが、発見してない。
でも、グラフ描画って、LineTo() だけでも大体いけると思うんだけど。
181デフォルトの名無しさん
2018/03/23(金) 11:19:28.52ID:WP/XswCx OLE2使ってExcel呼べばいいんじゃね?
MFC関係ないのでスレチだけど
MFC関係ないのでスレチだけど
182デフォルトの名無しさん
2018/03/23(金) 12:29:30.45ID:S2qLyUZS >>180
MSC = Microsoft CというDOS用のコンパイラです。1990年代のお話です。
MSC = Microsoft CというDOS用のコンパイラです。1990年代のお話です。
183デフォルトの名無しさん
2018/03/23(金) 13:06:50.13ID:5/36eG7n >>182
知ってるけど
知ってるけど
184デフォルトの名無しさん
2018/03/23(金) 18:21:05.39ID:GtydX90K185デフォルトの名無しさん
2018/03/24(土) 13:11:04.87ID:1MnVHuF+ .NETのChartコントロールをユーザーコントロールに置いてMFCダイアログでホストってのをやったことあるよ。
MFCビューでのやり方もMSDNに書いてあるからその通りやればできると思う。
MFC、Windowsフォーム、辺りで検索すれば見つかるはず。
MFCビューでのやり方もMSDNに書いてあるからその通りやればできると思う。
MFC、Windowsフォーム、辺りで検索すれば見つかるはず。
186デフォルトの名無しさん
2018/03/24(土) 13:59:14.06ID:5hh+Vua5 .NET使いたくないって話では
187デフォルトの名無しさん
2018/03/25(日) 01:41:05.54ID:AJM/AyB8 .netはちょっと重いです。それでも参考になります。ありがとうございます。。
188デフォルトの名無しさん
2018/04/03(火) 23:45:10.59ID:aZg1mfkw mfcとexcelの連携が全然分かんない……COM?何それ?みたいな
msdnとかstackoverflowとかいろいろ漁ってもだめ。っていうかそもそもmfc、windowsってよくわかんないクラスとか変数とか多すぎじゃない
もっと簡単にプログラミングさせてよ!って思う
msdnとかstackoverflowとかいろいろ漁ってもだめ。っていうかそもそもmfc、windowsってよくわかんないクラスとか変数とか多すぎじゃない
もっと簡単にプログラミングさせてよ!って思う
190デフォルトの名無しさん
2018/04/04(水) 02:52:52.55ID:h2UR4/YM >>188
馬鹿には無理
馬鹿には無理
191デフォルトの名無しさん
2018/04/04(水) 23:16:43.35ID:EgkZfqJG 昔、MFCに慣れてきた頃、趣味でMACのプログラミング勉強しようとして挫折したことがある。
Excel連携なら、その箇所だけでもVBでやるのがお勧め。
Excel連携なら、その箇所だけでもVBでやるのがお勧め。
192片山博文MZ ◆T6xkBnTXz7B0
2018/04/05(木) 15:58:24.24ID:7o7fJyTF193デフォルトの名無しさん
2018/04/06(金) 12:26:46.99ID:sTfZcU1Y MFC使わなくてもCで良いのに
194片山博文MZ ◆T6xkBnTXz7B0
2018/04/06(金) 16:14:35.30ID:eB6IhESG まずは、OleViewを起動してな。
195デフォルトの名無しさん
2018/04/20(金) 12:34:59.85ID:r2H2v4t5 折れ線グラフをMovetoとLinetoで描くことにしました。線分を引くに当たって、GDI+とGDIでの描画速度を検証してみました。
32bit win7 corei5で24×1,024本の線分を描きましたところ
GDI+ drawLine 7300ms
GDI Moveto Lineto 350ms
という結果になりました。
mfcのMoveto Linetoは速いですよね。画面のサイズによって速度はだいぶ変わるようです。
32bit win7 corei5で24×1,024本の線分を描きましたところ
GDI+ drawLine 7300ms
GDI Moveto Lineto 350ms
という結果になりました。
mfcのMoveto Linetoは速いですよね。画面のサイズによって速度はだいぶ変わるようです。
196デフォルトの名無しさん
2018/04/20(金) 12:38:07.74ID:r2H2v4t5 c#などのASP.net環境では、グラフを生成するAPIが有るようですね。サーバ上で簡単にグラフを生成し、クライアントのブラウザから見られます。
197デフォルトの名無しさん
2018/04/20(金) 22:27:08.54ID:yO6TKb25 >>195
検証おつ。少数派かもしれませんがこういうの好きです。
検証おつ。少数派かもしれませんがこういうの好きです。
198デフォルトの名無しさん
2018/04/25(水) 12:53:36.78ID:4obztnoR CFormView内でOnMouseWheelを使っていたのですが、コンボボックスを配置したところ、OnMouseWheelのイベントに飛んでこなくなりました。
今のところ、コンボボックスを継承して、コンボボックス内のOnMouseWheelイベント内で、親クラスへSendMessage(WM_MOUSEWHEEL )する事で動かせるようにしました。
この先、ほかのコントロールが追加されたら、またOnMouseWheelイベントを拾えなくなると思い、もっと良い方法があればと思っています。どなたか良い解決策をご存じですか?
今のところ、コンボボックスを継承して、コンボボックス内のOnMouseWheelイベント内で、親クラスへSendMessage(WM_MOUSEWHEEL )する事で動かせるようにしました。
この先、ほかのコントロールが追加されたら、またOnMouseWheelイベントを拾えなくなると思い、もっと良い方法があればと思っています。どなたか良い解決策をご存じですか?
199デフォルトの名無しさん
2018/04/25(水) 13:44:01.27ID:jrjO5Mdd >>198
CFormView派生クラスのPreTranslateMessage()で横取りしてしまうのが簡単かと
CFormView派生クラスのPreTranslateMessage()で横取りしてしまうのが簡単かと
200デフォルトの名無しさん
2018/04/26(木) 22:30:35.34ID:tB5nNnhP 確かに横取りで解決できました。ありがとうございます。
コンボボックスをドロップダウンリストに設定した場合のフォーカスについても伺いたいのですが、
CFormViewクラス内にドロップダウンリスト型のコンボボックスを配置すると、キーボードのフォーカスがコンボボックスに設定されてしまいます。
CFormViewに対してSetFocus()を呼び出しても、フォーカスがコンボボックスから外れません。
コンボボックスが青く塗りつぶされて選択状態になっているのを解除する方法をご存知ないですか?
コンボボックスをドロップダウンリストに設定した場合のフォーカスについても伺いたいのですが、
CFormViewクラス内にドロップダウンリスト型のコンボボックスを配置すると、キーボードのフォーカスがコンボボックスに設定されてしまいます。
CFormViewに対してSetFocus()を呼び出しても、フォーカスがコンボボックスから外れません。
コンボボックスが青く塗りつぶされて選択状態になっているのを解除する方法をご存知ないですか?
201デフォルトの名無しさん
2018/04/27(金) 09:24:02.21ID:V1X+E9CJ >>200
CFormViewのソースを見るとわかるけど、SetFocus()を呼んでも、
OnSetFocus()の中で最後の位置に復元される。
その動きを別なものにしたいのなら、
OnSetFocus()をオーバーライドして、なにかしらの対応が必要かと。
なにもしないようにしてフォーム自身がフォーカスを持ってしまうとか、
サイズ0のダミーのボタンでも置いておいて、毎回そこにフォーカスを移すとか。
CFormViewのソースを見るとわかるけど、SetFocus()を呼んでも、
OnSetFocus()の中で最後の位置に復元される。
その動きを別なものにしたいのなら、
OnSetFocus()をオーバーライドして、なにかしらの対応が必要かと。
なにもしないようにしてフォーム自身がフォーカスを持ってしまうとか、
サイズ0のダミーのボタンでも置いておいて、毎回そこにフォーカスを移すとか。
202デフォルトの名無しさん
2018/04/27(金) 20:15:49.15ID:Q5E/Se8d ありがとうございます!
203デフォルトの名無しさん
2018/04/27(金) 20:26:32.52ID:Q5E/Se8d ダブルバッファリングについて質問しても良いですか?
ピクチャーコントロールのダブルバッファリングを行いたいと思っているのですが、画面のサイズを大小いじられ続けると、GDIリソースを食いつぶして、アプリケーションが落ちます。
色々試して、画面サイズ変更イベント内のCreateCompatibleBitmapのところで確保したGDIリソースが DeleteObject();されるときに、GDIリソースを一つ多く確保し続けるようです。
CBitmap test;
test.CreateCompatibleBitmap(ピクチャーコントロールのdc,-,-); //GDIリソースが+2される
test.DeleteObject(); //GDIリソースがー1される
差し引きGDIリソースの確保量が+1になります。
そのうち線を書けなくなり、アプリケーションがクラッシュします。
使い方がどこか良くないのだと思うのですが、パラメータ等が良くないのかな。などと考え込んでいます。解決策をご存知ないですか?GDIリソースの確保量はタスクマネージャの設定でGDIリソースを表示できるようにして確認しています。
ピクチャーコントロールのダブルバッファリングを行いたいと思っているのですが、画面のサイズを大小いじられ続けると、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.89ID:V9eZGmhL CreateCompatibleBitmapの前後5行ぐらいに原因がありそうな気がする
205デフォルトの名無しさん
2018/04/28(土) 06:46:29.77ID:7taUW+bg >>203
自分で開放しないといけないのを忘れてるだけじゃないかな
自分で開放しないといけないのを忘れてるだけじゃないかな
206デフォルトの名無しさん
2018/04/28(土) 13:43:55.18ID:RCDKOgRU リソースの解放はDeleteObject();ではないのですか?
CreateCompatibleBitmapの前は、CreateCompatibleDCを呼び出しています。
CreateCompatibleDCのDCパラメータをNULLに設定すると、GDIリソースの浪費は無くなりますが、今度は出てくる画面が白黒になってしまいます。
CreateCompatibleBitmapの前は、CreateCompatibleDCを呼び出しています。
CreateCompatibleDCのDCパラメータをNULLに設定すると、GDIリソースの浪費は無くなりますが、今度は出てくる画面が白黒になってしまいます。
207デフォルトの名無しさん
2018/04/28(土) 15:02:19.62ID:7HtEIURB >>206
ピクチャーコントロールのDCをGetDC()で取得してしてるのでは
ピクチャーコントロールのDCをGetDC()で取得してしてるのでは
208デフォルトの名無しさん
2018/04/28(土) 15:36:31.72ID:K6dn8QZh スタック上でCBitmap test;とやった場合
関数を抜けるときに勝手にデストラクタでDeleteObjectされると思う。
もう少しコード晒さないと判らない。
関数を抜けるときに勝手にデストラクタでDeleteObjectされると思う。
もう少しコード晒さないと判らない。
209デフォルトの名無しさん
2018/04/28(土) 20:43:45.95ID:RCDKOgRU CreateCompatibleDCでは、ピクチャーコントロールのDCを取得させています。
ピクチャーコントロールのDCを渡すと、CreateCompatibleBitmap時にGDIリソースを消費する量が2となるようです。
CreateCompatibleDCにNULLを指定した場合(確か)CreateCompatibleBitmap時のGDIリソース消費量ばかり1となります(以後の描画は白黒になります)。
今しばらく書いているコードをみられません。
CreateCompatibleDCやCreateCompatibleBitmapをOnSize時に破棄させてはサイズを変えて再生成させると、GDIリソースが消費されて減っていくので、
アプリケーション生成時に画面の最大サイズでCreateCompatibleDCさせておき、あとはCreateCompatibleDCしないように変更することも考えております。
アプリケーション生成時に画面のサイズ分のCreateCompatibleDCさせるようにすると、マルチモニタ環境の時などの動作が正常に動作しないかもしれないと思い、
可能ならOnSize内でDeleteObject();させてCreateCompatibleDCさせたいと思っています。
なお、OnSizeから抜けてもGDIリソース消費量は下がってくれないようです。
ピクチャーコントロールの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.29ID:K6dn8QZh 207が言っているのは
bitmap.CreateCompatibleBitmap(pict->GetDC(), rc.Width(), rc.Height())
してるんじゃないかって事。これだとリークします。
bitmap.CreateCompatibleBitmap(pict->GetDC(), rc.Width(), rc.Height())
してるんじゃないかって事。これだとリークします。
211デフォルトの名無しさん
2018/04/29(日) 02:54:49.07ID:4Tl9MZgN ReleaseDC
212デフォルトの名無しさん
2018/04/29(日) 22:23:44.07ID:dUB73wKv >>212
> 207が言っているのは
> bitmap.CreateCompatibleBitmap(pict->GetDC(), rc.Width(), rc.Height())
> してるんじゃないかって事。これだとリークします。
しています。その上でどのように直すべきか察しが付きません。やはりReleaseDCで直りますか?
> 207が言っているのは
> bitmap.CreateCompatibleBitmap(pict->GetDC(), rc.Width(), rc.Height())
> してるんじゃないかって事。これだとリークします。
しています。その上でどのように直すべきか察しが付きません。やはりReleaseDCで直りますか?
213デフォルトの名無しさん
2018/04/29(日) 23:00:49.09ID:azFTonkH ReleaseDCで直る。
私なら 解放不要なCDC::FromHaqndleを使う。
私なら 解放不要なCDC::FromHaqndleを使う。
214デフォルトの名無しさん
2018/04/30(月) 09:00:09.82ID:N15MwktU215213
2018/04/30(月) 13:12:38.67ID:3QBGre+r スマソ勘違いだった
216デフォルトの名無しさん
2018/04/30(月) 14:30:59.80ID:s7QfKdrQ >>216
CompatibleDCの引数はピクチャーコントロール内のDC
memDC.CreateCompatibleDC(ピクチャーコントロール.GetDC(),ピクチャーコントロールのx,y);
だったと思います。
GetDC()でピクチャーコントロールのDCを取得していたか、GetSafeDCでピクチャーコントロールのDCを取得していたかちょっと思い出せません。
CompatibleDCの引数はピクチャーコントロール内のDC
memDC.CreateCompatibleDC(ピクチャーコントロール.GetDC(),ピクチャーコントロールのx,y);
だったと思います。
GetDC()でピクチャーコントロールのDCを取得していたか、GetSafeDCでピクチャーコントロールのDCを取得していたかちょっと思い出せません。
217デフォルトの名無しさん
2018/04/30(月) 14:32:37.77ID:s7QfKdrQ CreateCompatibleDCのパラメータはDC一つだけでしたね。ごめんなさい。
218片山博文MZ ◆T6xkBnTXz7B0
2018/04/30(月) 14:34:44.36ID:4AJ8oS6Z GetDCの返り血はReleaseDCしないといけない。
219デフォルトの名無しさん
2018/04/30(月) 19:49:57.15ID:fTg4MTz+ 返り血こわ
220デフォルトの名無しさん
2018/05/01(火) 13:59:06.30ID:eD8/BCAz ReleaseDCではGDIリソースがー1になりますが、createCompatibleBitmapで+2消費したぶんのすべては解放されてくれません。
releaseDCはおこなっていますが、GDIリソースの消費量は依然として+1になってしまいます。
releaseDCはおこなっていますが、GDIリソースの消費量は依然として+1になってしまいます。
222デフォルトの名無しさん
2018/05/07(月) 12:52:31.69ID:axInvDCA 原因わかりました。
memBmp.CreateCompatibleBitmap(picctrl.GetDC(),x,y);
が良くなかったようです。
GetDC()でGDIリソースを1消費し、解放出来なくなります。
CDC *pDC;
pDC->picctrl.GetDC();
memBmp.CreateCompatibleBitmap(pDC,x,y);
DeleteObject(memBmp);
ReleaseDC(pDC);
に直したところ、ちゃんとGdIリソースが戻りました。
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.54ID:axInvDCA pDC=picctrl.GetDC();
に修正します。
解答いただいた方々、ありがとうございます。
に修正します。
解答いただいた方々、ありがとうございます。
224デフォルトの名無しさん
2018/05/07(月) 14:56:30.49ID:QMgv+0U5 >>222-223
最初からみんなそう言ってたのに
最初からみんなそう言ってたのに
225デフォルトの名無しさん
2018/05/08(火) 19:14:19.80ID:c2nzYwoQ > CDC *pDC;
> pDC=picctrl.GetDC();
> ReleaseDC(pDC);
picctrl.GetDC()したものを親がReleaseDC()しているのが気持ち悪いが、
これでも正しく動くのか?
> pDC=picctrl.GetDC();
> ReleaseDC(pDC);
picctrl.GetDC()したものを親がReleaseDC()しているのが気持ち悪いが、
これでも正しく動くのか?
226デフォルトの名無しさん
2018/05/11(金) 20:03:19.69ID:AvqrI8lf GetDC()したらReleaseDC()する必要があるのだと思う。CDC*はデストラクタ処理に入れないからReleaseDCする必要がある。
VC++.net CLRとかなら自動でやってくれるのだろう。
VC++.net CLRとかなら自動でやってくれるのだろう。
227デフォルトの名無しさん
2018/05/12(土) 17:30:06.38ID:r7l6NWuz228デフォルトの名無しさん
2018/05/14(月) 21:41:18.68ID:8B23ox7k そうなんだ。φ(`д´)メモメモ...
229デフォルトの名無しさん
2018/05/23(水) 19:28:52.23ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
HQL0Y
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
HQL0Y
230デフォルトの名無しさん
2018/05/24(木) 10:17:50.97ID:0MNYvz/l バイナリデータ(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);
描画したいのですが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.55ID:fftgGS82 頭
232放置された蟻人間 ◆T6xkBnTXz7B0
2018/05/24(木) 19:30:21.07ID:lMOj7i3d ASSERT(IsWindow(m_picture)); してみれ。
233デフォルトの名無しさん
2018/05/25(金) 08:35:43.69ID:0miZfrjS234デフォルトの名無しさん
2018/05/25(金) 11:28:17.31ID:XVxgp9wt まず"Debug Assertion Failed!" が出ているのならちゃんと再試行を押そうよ。
それだけで原因そのものはわかる。
それだけで原因そのものはわかる。
235デフォルトの名無しさん
2018/07/04(水) 22:49:24.38ID:gFgZc5FG EQ8
236デフォルトの名無しさん
2018/07/06(金) 12:25:50.03ID:uTPDH9XV EQ8
237デフォルトの名無しさん
2018/07/07(土) 16:23:50.25ID:BnawPcHi CListCtrでレポート表示のFullRowSelectをカスタムドローを弄ってます。
マウスがアイテムの上に来たら色を変えたいけど、カスタムドローのイベントハンドラだけできますか?
OnMouseMoveでどこにあるか判定してカスタムドローで描画が必要?
ビットマップを3番目のSubItemだけに貼るとか、16x16のSmallサイズ以外だとうまくいかないとか、癖が凄い。
マウスがアイテムの上に来たら色を変えたいけど、カスタムドローのイベントハンドラだけできますか?
OnMouseMoveでどこにあるか判定してカスタムドローで描画が必要?
ビットマップを3番目のSubItemだけに貼るとか、16x16のSmallサイズ以外だとうまくいかないとか、癖が凄い。
238デフォルトの名無しさん
2018/07/23(月) 18:19:00.33ID:+TIH++V2 tooltipの表示内容を一つのピクチャコントロール内で変更したいのですが、マウスカーソルが一端ピクチャコントロールから外れないと、ツールチップの内容が更新されないようです。onmousehoverなどを使わないと駄目でしょうか?
239デフォルトの名無しさん
2018/07/24(火) 07:28:28.65ID:vj16B9du tooltipの解決策を見つけました。
http://www.geocities.jp/sunayamak/study/mfctooltip.html
http://www.geocities.jp/sunayamak/study/mfctooltip.html
240デフォルトの名無しさん
2018/07/27(金) 23:03:38.30ID:FVoX1kIB Tooltipの件ありがとうございます。
おかげさまで何とか解決できました。
おかげさまで何とか解決できました。
241デフォルトの名無しさん
2018/08/02(木) 20:01:14.70ID:lFbk57E7 datを生成するMFCプログラムがありまして、そのdatからデータを読み込んでexcelの形式に合わせて出力するダイアログベースのMFCプログラムがあります
最初のプログラムから呼び出されて処理をするだけなので、ウインドウの表示とかしないです。ただただ処理して終わりです
それで問題なんですが通常のダイアログを使ったプログラムのように読み込み・変換処理を全部ダイアログ部分に書いてあるんです
ダイアログ使いもしないのにここに書くのおかしくないですか?と聞いたら表示されないんだしいいでしょと。画面表示を行わないMFCプログラムの場合、コードはどこに書くのが自然なんでしょうか?
最初のプログラムから呼び出されて処理をするだけなので、ウインドウの表示とかしないです。ただただ処理して終わりです
それで問題なんですが通常のダイアログを使ったプログラムのように読み込み・変換処理を全部ダイアログ部分に書いてあるんです
ダイアログ使いもしないのにここに書くのおかしくないですか?と聞いたら表示されないんだしいいでしょと。画面表示を行わないMFCプログラムの場合、コードはどこに書くのが自然なんでしょうか?
242デフォルトの名無しさん
2018/08/03(金) 10:09:25.61ID:SxfGFWQF スレッドを別けたいという意味か?
243デフォルトの名無しさん
2018/08/03(金) 18:35:46.47ID:uhu4d/dd あーすいませんわかりにくかったですね
メインプログラムがあってその内部でdatを生成するんですよ
で、そのdatのパスをコマンドライン引数で別のプログラムに渡すんですね
スレッドというかそもそも2つのプログラムですわ
メインプログラムがあってその内部でdatを生成するんですよ
で、そのdatのパスをコマンドライン引数で別のプログラムに渡すんですね
スレッドというかそもそも2つのプログラムですわ
244デフォルトの名無しさん
2018/08/03(金) 18:52:53.67ID:o/XiGXrO MFC関係ないのにここで聞くのおかしくないですか?
245デフォルトの名無しさん
2018/08/03(金) 19:53:47.89ID:82qJLwKQ 事情が見えない。
どーーしても別プログラムにする事情があると仮定すれば
DialogやConsoleで構わないと思う。
冗長さを排除したいなら_tWinMainから書く手もあるけど
体感できるような差は出ないかと。表示されないんだしいいでしょw
どーーしても別プログラムにする事情があると仮定すれば
DialogやConsoleで構わないと思う。
冗長さを排除したいなら_tWinMainから書く手もあるけど
体感できるような差は出ないかと。表示されないんだしいいでしょw
246デフォルトの名無しさん
2018/08/05(日) 03:07:58.27ID:lHG7kQYc247デフォルトの名無しさん
2018/08/05(日) 10:12:06.95ID:D9xcyyWx >>241
MFCの仕組みを使いつつ、まったくウィンドウ表示が不要なものなら、
アプリケーションクラスのInitInstance()の中で処理して、
FALSEを返してすぐ終了するという流れでよいのでは。
MFCの仕組みを使いつつ、まったくウィンドウ表示が不要なものなら、
アプリケーションクラスのInitInstance()の中で処理して、
FALSEを返してすぐ終了するという流れでよいのでは。
248デフォルトの名無しさん
2018/08/06(月) 22:59:00.43ID:OCzRfTP8249デフォルトの名無しさん
2018/08/07(火) 05:06:10.31ID:OlmXtX1U サマータイムも意味がないがそれ以上に意味がない
250デフォルトの名無しさん
2018/08/14(火) 16:45:48.75ID:/E7izJ6Y 横から失礼します
InitInstanceの場合は標準出力にメッセージを出せますか?
標準出力に出すmfcプログラムだとすると、_twinmainを使うとどうでしょう。
InitInstanceの場合は標準出力にメッセージを出せますか?
標準出力に出すmfcプログラムだとすると、_twinmainを使うとどうでしょう。
251デフォルトの名無しさん
2018/08/14(火) 19:27:19.22ID:iucfbso2 どちらもやったことありませんが可能だと思います。
私なら _tmain 使うとおもいますが。
私なら _tmain 使うとおもいますが。
252155
2018/08/15(水) 09:28:56.94ID:IMvh29W2 CListViewがウィザードに帰ってきた!!
やほーい
やほーい
253デフォルトの名無しさん
2018/09/20(木) 15:00:47.62ID:i16QdaBT MFCというかプログラミング姿勢に関しての質問かもしれないんですけど
CやC++で標準的に実装されてる機能とMFCクラスで実装されてる機能、どちらを使っても
同じことが実現できる場合、どちらを優先して使っていくべきなんでしょうか
要するに文字列ならchar*かstringかCStringか
ファイル操作ならfopenかstreamかCfileかみたいな
CやC++で標準的に実装されてる機能とMFCクラスで実装されてる機能、どちらを使っても
同じことが実現できる場合、どちらを優先して使っていくべきなんでしょうか
要するに文字列ならchar*かstringかCStringか
ファイル操作ならfopenかstreamかCfileかみたいな
254デフォルトの名無しさん
2018/09/20(木) 16:28:00.36ID:+UNWjTgc MFCはオワコン
C#
使え
C#
使え
255デフォルトの名無しさん
2018/09/20(木) 18:01:52.92ID:TMKaX7fO256デフォルトの名無しさん
2018/09/20(木) 18:03:18.25ID:TMKaX7fO257デフォルトの名無しさん
2018/09/20(木) 18:03:55.46ID:a/ASjwi8 俺はできるだけ標準のほうを使うように切り替えた
258デフォルトの名無しさん
2018/09/20(木) 22:16:17.61ID:P1fXZpxD 機能が同等なら好みでいいと思うけど、ファイル操作みたいにOS依存が強い機能は
標準ライブラリじゃ足りない場合が多いかな。
標準ライブラリじゃ足りない場合が多いかな。
259デフォルトの名無しさん
2018/09/21(金) 00:47:14.84ID:fuc3wJjq MFCのGUI特化した本ないのかねー
大概が初心者向けでポインタやら構造体やらMFCと関係ないことが大半を占めてて知りたいことはうすーくしか書いてないのばっか
大概が初心者向けでポインタやら構造体やらMFCと関係ないことが大半を占めてて知りたいことはうすーくしか書いてないのばっか
260デフォルトの名無しさん
2018/09/21(金) 06:34:48.10ID:l8rNCGoZ261デフォルトの名無しさん
2018/09/21(金) 08:13:00.69ID:US5K8oGJ262デフォルトの名無しさん
2018/09/21(金) 11:19:39.33ID:Nv8vO9db 本でなくて申し訳ないけど
ヘルプ。
クラスも大幅に拡張されてしまい昔の良書だとツリービュー、リストビュー位まで
最近のリッチな所はヘルプからサンプルソースにたどるのが早いかと
ヘルプ。
クラスも大幅に拡張されてしまい昔の良書だとツリービュー、リストビュー位まで
最近のリッチな所はヘルプからサンプルソースにたどるのが早いかと
263デフォルトの名無しさん
2018/09/21(金) 13:21:21.50ID:9xBQcUDg Windows本体ってMFCで作ってるの?
264デフォルトの名無しさん
2018/09/21(金) 17:59:38.20ID:/FmUXr1R カーネルという意味では、ないやろな。性能面の要求はそんなに甘くないよ。
周辺の付加的モジュールでは、ATLとかは使ってるかも
周辺の付加的モジュールでは、ATLとかは使ってるかも
265デフォルトの名無しさん
2018/09/21(金) 19:07:45.12ID:M0K6QlhH Windows7のペイントとかワードパッドとかをSpy++で見ると、
Afx〜の付くウィンドウクラス名が使われてるから、
このあたりはまだMFCで作られてたんじゃないだろうか。
Afx〜の付くウィンドウクラス名が使われてるから、
このあたりはまだMFCで作られてたんじゃないだろうか。
266デフォルトの名無しさん
2018/09/21(金) 22:10:32.71ID:Yrc2SKMF なるほど
267デフォルトの名無しさん
2018/09/22(土) 09:01:41.72ID:f3qG2b9t 「コンピューターの管理」なんかも、AfxWnd42やAfxFrameOrView42uが出てくる。
269デフォルトの名無しさん
2018/09/22(土) 12:44:10.56ID:xOVRbYWf >>263
あやしいよな
あやしいよな
270デフォルトの名無しさん
2018/10/02(火) 12:20:10.07ID:T1hsru+o VC++6.0で作っています。 MFCです。
普通にSDIを作りますが、そこからメニューバー等からダイアログボックスをモードレスで起動します。
すると、ダイアログを起動しながらメインウインドウも触れるようになるのですが、そのフォーカスを
モードレスダイアログとメインウインドウとをマウスを使わずにキーボードで切り替えることって出来ませんか
MSのWindowsOSのAlt+Tabではこれらはひとつとして認識されているようでこれでは切り替えられません
ちなみに、Windows7です
普通にSDIを作りますが、そこからメニューバー等からダイアログボックスをモードレスで起動します。
すると、ダイアログを起動しながらメインウインドウも触れるようになるのですが、そのフォーカスを
モードレスダイアログとメインウインドウとをマウスを使わずにキーボードで切り替えることって出来ませんか
MSのWindowsOSのAlt+Tabではこれらはひとつとして認識されているようでこれでは切り替えられません
ちなみに、Windows7です
271デフォルトの名無しさん
2018/10/02(火) 12:45:27.08ID:+xKncks4 モードレスなら出来るやろ
272デフォルトの名無しさん
2018/10/02(火) 14:53:03.01ID:T1hsru+o273デフォルトの名無しさん
2018/10/02(火) 15:13:04.28ID:yDKwoLm6 Ctrl+TAB
274デフォルトの名無しさん
2018/10/02(火) 15:45:33.11ID:T1hsru+o275デフォルトの名無しさん
2018/10/02(火) 15:50:20.77ID:yDKwoLm6 Ctrl+Alt+TAB
276デフォルトの名無しさん
2018/10/02(火) 16:01:18.57ID:T1hsru+o277デフォルトの名無しさん
2018/10/02(火) 16:28:36.02ID:7CL4bG8Y モードレスの親がメインウィンドウなら切り替えできず、親がない(デスクトップ)なら切り替えできるのでは。
親がメインウィンドウの場合でも、PreTranslateMessageでTABキーを補足してSetForegroundWindowとかすればいいと思う
親がメインウィンドウの場合でも、PreTranslateMessageでTABキーを補足してSetForegroundWindowとかすればいいと思う
278デフォルトの名無しさん
2018/10/02(火) 16:35:36.67ID:T1hsru+o デフォルトでは用意されていないのかな
PreTranslateMessageを使えばなんでもできますが、
メインウインドウとダイアログと両方に書かないといけないからなあ。しょうがないのかな
PreTranslateMessageを使えばなんでもできますが、
メインウインドウとダイアログと両方に書かないといけないからなあ。しょうがないのかな
279デフォルトの名無しさん
2018/10/02(火) 16:38:35.01ID:T1hsru+o PreTranslateMessageで書きますか。 キーは何をあてるのが自然でしょうか
Ctrl+Tabあたりかな
タブコントロールは、Tab だけと Shift+Tabで動きますからね
Ctrl+Tabあたりかな
タブコントロールは、Tab だけと Shift+Tabで動きますからね
280デフォルトの名無しさん
2018/10/02(火) 21:23:19.58ID:R8M7QKDK vista、vs.net2003 vc++の組み合わせだが
ALT+TABでアプリがきりかわりながら
ふつうにSDIとモードレスのダイアログでトグルする
ALT+TABでアプリがきりかわりながら
ふつうにSDIとモードレスのダイアログでトグルする
281デフォルトの名無しさん
2018/10/02(火) 21:49:14.12ID:T1hsru+o282デフォルトの名無しさん
2018/10/07(日) 14:30:22.57ID:stJt0pET >>281
ダイアログをCreateする時、親ウィンドウ(省略時=NULL)を指定していないから、
アプリケーションのメインウィンドウ(=AfxGetMainWnd())が、親ウィンドウが
になっているからでは?
CDialog::Create(CWnd::GetDesktopWindow())
とかでいけるはず。 MFCとは関係なく、Windows APIでは、所有ウィンドウ
(Owner Window)と、親ウィンドウ(Parent Window)は別管理。
ダイアログをCreateする時、親ウィンドウ(省略時=NULL)を指定していないから、
アプリケーションのメインウィンドウ(=AfxGetMainWnd())が、親ウィンドウが
になっているからでは?
CDialog::Create(CWnd::GetDesktopWindow())
とかでいけるはず。 MFCとは関係なく、Windows APIでは、所有ウィンドウ
(Owner Window)と、親ウィンドウ(Parent Window)は別管理。
283デフォルトの名無しさん
2018/10/15(月) 20:08:17.72ID:xZyzsY81 MSDN見ても解決しないのでお願いします。
CMFCColorDialogで作成した色選択ダイアログの動きが少しおかしいです。
どれかの色(六角形)を選択すると[OK]ボタンのフォーカスが当たり、再度
別の色を選択するとフォーカスが外れるんですが、仕様でしょうか??
CMFCColorDialogで作成した色選択ダイアログの動きが少しおかしいです。
どれかの色(六角形)を選択すると[OK]ボタンのフォーカスが当たり、再度
別の色を選択するとフォーカスが外れるんですが、仕様でしょうか??
284デフォルトの名無しさん
2018/10/15(月) 20:10:37.85ID:xZyzsY81 .DoModal()を使っています。
285デフォルトの名無しさん
2018/10/16(火) 10:55:52.13ID:gOw5Bgha286デフォルトの名無しさん
2018/10/16(火) 20:59:43.03ID:KuFMVrck >>285
わざわざ試していただいてありがとうござます!
こちらの環境、Windows10、VisualStudio2017なのでこれが原因っぽいです。
古いVisualStudioで試してみます。
業務アプリなのでサンプルは出しにくいです。申し訳ないです。
わざわざ試していただいてありがとうござます!
こちらの環境、Windows10、VisualStudio2017なのでこれが原因っぽいです。
古いVisualStudioで試してみます。
業務アプリなのでサンプルは出しにくいです。申し訳ないです。
287281
2018/11/03(土) 20:11:07.69ID:FHfXrfBW288デフォルトの名無しさん
2018/11/03(土) 20:17:24.87ID:FHfXrfBW 今まで、VC++6.0でずっとやってきました。特にそれで問題なかったからですが、意を決して、
Visual Studio 2017をインストして、古いソースコードを移植しようと思っています
VS2017に古いVC++6.0のdswファイルを読ませたのですが、うまくj変換できないようですが、どうしたら良いでしょうか
VC++6.0からの変換は出来ませんか
Visual Studio 2017をインストして、古いソースコードを移植しようと思っています
VS2017に古いVC++6.0のdswファイルを読ませたのですが、うまくj変換できないようですが、どうしたら良いでしょうか
VC++6.0からの変換は出来ませんか
289さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 20:20:22.32ID:Z2+VfrEc ワークスペースはソリューションに変わった。新しくソリューションファイルを作って、そこにC/C++のファイルを追加してビルドだ。
290デフォルトの名無しさん
2018/11/03(土) 20:48:27.94ID:FHfXrfBW インクルードファイルとかいろいろエラーがたくさん出てきたよ
これ相当無理っぽい???
これ相当無理っぽい???
292デフォルトの名無しさん
2018/11/03(土) 21:08:57.06ID:FHfXrfBW 取りあえず、簡単に比較するために、VC++6.0でMFCのSDIのデフォルトを作りました
それと比較するため、VS2017でC++のWindowsデスクトップのデスクトップアプリケーションのデフォルトを作りました
すると、VS2017の方はMFC自身を使わないバージョンなのかな、CMainFrmとかIMPLEMENT_DYNCREATEとかなくて
VC6.0++のMainFrm.cppとかを2017の方に持ってきてコンパイルしたらCMainFrmが定義されてないとか
ずらっとたくさん出てきます
それと比較するため、VS2017でC++のWindowsデスクトップのデスクトップアプリケーションのデフォルトを作りました
すると、VS2017の方はMFC自身を使わないバージョンなのかな、CMainFrmとかIMPLEMENT_DYNCREATEとかなくて
VC6.0++のMainFrm.cppとかを2017の方に持ってきてコンパイルしたらCMainFrmが定義されてないとか
ずらっとたくさん出てきます
293さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:11:31.59ID:Z2+VfrEc MFCに対応したプロジェクト/ソリューション設定じゃないとダメかも
294デフォルトの名無しさん
2018/11/03(土) 21:15:37.09ID:FHfXrfBW >>293
VS2017で、それを探してるのですが見つからないのですよ
MFCには対応してるのですよね。2015かそれ以前にはすでに対応してると聞いていたのですが
MFCを使ったデフォルトのコード生成はしてくれないとか??? w
VS2017で、それを探してるのですが見つからないのですよ
MFCには対応してるのですよね。2015かそれ以前にはすでに対応してると聞いていたのですが
MFCを使ったデフォルトのコード生成はしてくれないとか??? w
295さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:19:34.89ID:uOx37ouV Visual C++の中にMFCがある。Visual C++という項目がなければ、インストールが間違っている。
296デフォルトの名無しさん
2018/11/03(土) 21:23:19.86ID:FHfXrfBW >>295
メニューのファイルから新規作成、プロジェクトを選ぶと、その中にVisual C++はちゃんとありますよ
で、そこでWindowsデスクトップアプリケーションを選んでデフォルトを作ると、コードはSDKみたいなコードを吐きます
で、Windowsデスクトップウィザードってのがあったので、今これを選択してみたのですが、
アプリケーションの種類をコンソールにすると、その右にあるMFCのチェックボックスが有効になるのですが
メニューのファイルから新規作成、プロジェクトを選ぶと、その中にVisual C++はちゃんとありますよ
で、そこでWindowsデスクトップアプリケーションを選んでデフォルトを作ると、コードはSDKみたいなコードを吐きます
で、Windowsデスクトップウィザードってのがあったので、今これを選択してみたのですが、
アプリケーションの種類をコンソールにすると、その右にあるMFCのチェックボックスが有効になるのですが
297デフォルトの名無しさん
2018/11/03(土) 21:24:15.77ID:FHfXrfBW 続き
Windowsアプリケーションってのを選ぶと、MFCのチェックボックスが使用不可になってしまいます
Windowsアプリケーションってのを選ぶと、MFCのチェックボックスが使用不可になってしまいます
298さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:27:13.99ID:uOx37ouV MFCアプリが作れないなら、インストールで追加するしかないぜ。
299さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:29:11.91ID:uOx37ouV300デフォルトの名無しさん
2018/11/03(土) 21:29:36.23ID:FHfXrfBW おいおい、なんだこれ
VS2017で、新規作成、プロジェクトで、Windowsデスクトップウィザードで
コンソールアプリケーションでMFCをチェックしてデフォルトのコードを自動生成してみました
そしてソリューションのビルドしたら、CWinAppが定義されてないとかエラーがわんさか出てきたぞ
おいおい、デフォルトの自動生成コードもビルド出来ないじゃん
VS2017で、新規作成、プロジェクトで、Windowsデスクトップウィザードで
コンソールアプリケーションでMFCをチェックしてデフォルトのコードを自動生成してみました
そしてソリューションのビルドしたら、CWinAppが定義されてないとかエラーがわんさか出てきたぞ
おいおい、デフォルトの自動生成コードもビルド出来ないじゃん
301さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:30:32.78ID:uOx37ouV 左下、「探しているものが見つからないとき」
302デフォルトの名無しさん
2018/11/03(土) 21:33:48.34ID:FHfXrfBW >>299
おや、そこが違う。 私のは、
visual C++の下に
Windowsデスクトップ
クロスプラットフォーム
MFC/ATL
テスト
その他
Extensibility
ってなってて、 MFC/ATLのところは
ATLプロジェクト
ってのだけがあります
おや、そこが違う。 私のは、
visual C++の下に
Windowsデスクトップ
クロスプラットフォーム
MFC/ATL
テスト
その他
Extensibility
ってなってて、 MFC/ATLのところは
ATLプロジェクト
ってのだけがあります
303デフォルトの名無しさん
2018/11/03(土) 21:37:10.59ID:FHfXrfBW 何かインストを失敗してるのかなあ。 あるいはインストするときに何をインストするのかチェックがあったんだが
それを間違えてるのか。 でも俺がチェックをしなかったのはモバイル関係のところくらいだったんだよねえ
それを間違えてるのか。 でも俺がチェックをしなかったのはモバイル関係のところくらいだったんだよねえ
304さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:38:58.82ID:uOx37ouV305さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:40:59.04ID:uOx37ouV VS2017は頻繁に変更されるもんだから、ちょっと混乱してるみたい。
306デフォルトの名無しさん
2018/11/03(土) 21:48:14.06ID:FHfXrfBW >>304
ありがとう。
右側の概要ってとこが、私のでは、インストールの詳細になっていて、
MFCとATLのサポート
ってのが私のでは、
x86用とx64用のVisualC++ATL
x86用とx64用のVisualC++MFC
ってわかれていて、ATLの方にだけデフォルトではチェックが入っていてMFCの方のチェックは
デフォルトでは外れていました。
チェックして再インストしてみますねw
ありがとう。
右側の概要ってとこが、私のでは、インストールの詳細になっていて、
MFCとATLのサポート
ってのが私のでは、
x86用とx64用のVisualC++ATL
x86用とx64用のVisualC++MFC
ってわかれていて、ATLの方にだけデフォルトではチェックが入っていてMFCの方のチェックは
デフォルトでは外れていました。
チェックして再インストしてみますねw
307さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 21:52:26.12ID:uOx37ouV インストよりもインスコの方が俗語の通りがいい。
308デフォルトの名無しさん
2018/11/03(土) 22:01:09.50ID:FHfXrfBW ただいま、 再インスコ中です
みなさん、 VS2017をインスコするときは、
MFC はデフォルトでは入らない !!!
ことがわかりました
VS2017をインスコするときは、注意しましょう
インスコするとき、オプションをチェックすると入ります、 多分。今やってるところ
みなさん、 VS2017をインスコするときは、
MFC はデフォルトでは入らない !!!
ことがわかりました
VS2017をインスコするときは、注意しましょう
インスコするとき、オプションをチェックすると入ります、 多分。今やってるところ
309さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 22:07:33.60ID:uOx37ouV Qiitaの記事、結構役に立ってるじゃん。責任ある情報技術者なら、Qiitaに記事を書ける程になってもらいたいね。
>>309
qitta って査読制ですか?
qitta って査読制ですか?
311デフォルトの名無しさん
2018/11/03(土) 22:16:25.81ID:FHfXrfBW 出来ました。
MFCのインストがちゃんとできて、
MFCアプリケーションでデフォルトのMDI作ってみたら、 あら、すげえ
クラスビューなんかが出てくるのねw
MFCのインストがちゃんとできて、
MFCアプリケーションでデフォルトのMDI作ってみたら、 あら、すげえ
クラスビューなんかが出てくるのねw
312さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 22:18:01.50ID:uOx37ouV 最低限の審査はあると思うぞ。
詳しくは規約を。
詳しくは規約を。
313デフォルトの名無しさん
2018/11/03(土) 22:30:48.57ID:FHfXrfBW おや、新しいバージョンだと、
strcpy( a, b )
で、b に CSringとか出来ないんだね。 前の古いバージョンでは出来たのに
CString で返す関数も、char a[10] とかで宣言したのを、古いバージョンでは、retuen a
って出来たんだが、新しいバージョンではエラーになる。 一旦
CString ret;
ret = a;
ってやって、return ret;
ってやったらエラーが消えた
いろいろと細かい修正しないとダメみたいだねえ
strcpy( a, b )
で、b に CSringとか出来ないんだね。 前の古いバージョンでは出来たのに
CString で返す関数も、char a[10] とかで宣言したのを、古いバージョンでは、retuen a
って出来たんだが、新しいバージョンではエラーになる。 一旦
CString ret;
ret = a;
ってやって、return ret;
ってやったらエラーが消えた
いろいろと細かい修正しないとダメみたいだねえ
314さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/03(土) 22:35:23.28ID:uOx37ouV 暗黙の型キャストのあいまいさが嫌いな人が存在するらしい。
315デフォルトの名無しさん
2018/11/03(土) 22:42:34.44ID:FHfXrfBW >>314
いろいろとありがとう。 今日はとりあえずここまでにしておきます
いろいろとありがとう。 今日はとりあえずここまでにしておきます
316デフォルトの名無しさん
2018/11/04(日) 14:43:10.46ID:5RY1Lh2I >>313
きも
きも
317デフォルトの名無しさん
2018/11/04(日) 21:56:04.47ID:GQHsCvIR318デフォルトの名無しさん
2018/11/05(月) 10:05:31.23ID:iQgkSIfQ >>317
これありがとう。LPCWSTRの関係で、めっちゃ詰まってました
これありがとう。LPCWSTRの関係で、めっちゃ詰まってました
319デフォルトの名無しさん
2018/11/05(月) 10:35:49.97ID:cQLaagjN320デフォルトの名無しさん
2018/11/05(月) 12:07:09.35ID:iQgkSIfQ >>319
今は、_tcscpyを使ってもエラーが出るけどな
今は、_tcscpyを使ってもエラーが出るけどな
321デフォルトの名無しさん
2018/11/05(月) 12:15:02.40ID:mvX3Qu15 >>320
それはエラーではなくてセキュリティ上の警告では
それはエラーではなくてセキュリティ上の警告では
322デフォルトの名無しさん
2018/11/05(月) 12:20:01.12ID:iQgkSIfQ >>321
そうです。 _sを付けたのを使えって
警告の設定を変更しないとエラーになってコンパイルが通りません
それをプロパティの設定で、Unicodeからマルチバイトに切り替えてコンパイルしたんだけど、どうも
Unicodeのままでうまく切り替わらないようなんですよねえ。 どうなってるのか。 今は時間がないので
またあとでやってみますが
そうです。 _sを付けたのを使えって
警告の設定を変更しないとエラーになってコンパイルが通りません
それをプロパティの設定で、Unicodeからマルチバイトに切り替えてコンパイルしたんだけど、どうも
Unicodeのままでうまく切り替わらないようなんですよねえ。 どうなってるのか。 今は時間がないので
またあとでやってみますが
323デフォルトの名無しさん
2018/11/05(月) 12:26:42.35ID:mvX3Qu15324デフォルトの名無しさん
2018/11/05(月) 16:42:29.67ID:Lc5ZfJaA VS2017ですが、新規作成で、MFCアプリケーションで作った時、
新規作成途中に出てくるSDLのチェックをつけて作成したときと、はずして作成したときと両方してみました
すると、SDLつきの時は、_tcscpyはエラーになってコンパイルできませんが、
SDLをはずして新規作成したのものは、エラーにならずにコンパイルできて実行できます
デフォルトはSDLつきなので、コンパイルできません
次に、新規作成して出来上がったプロジェクトで、
メニューのプロジェクトから一番下のプロパティに入って、構成プロパティ、C/C++の全般にある
SDLチェックというところで、はい(/sdl) いいえ(/sdl-)を切り替えてやってみると、
この切り替えが動作せず、SDLのオン、オフが効きません。 プロジェクトの新規作成のときに設定したものが
残っていて、あとからここのプロパティで変更ができないようです
同じように、プロパティの構成プロパティの全般で、文字セットがデフォルトではUnicode文字セットを使用する
になってるのですが、これをマルチバイト文字セットを使用するにしても
Unicodeのままでマルチバイトにならないようです
バグですかねえ?
新規作成途中に出てくるSDLのチェックをつけて作成したときと、はずして作成したときと両方してみました
すると、SDLつきの時は、_tcscpyはエラーになってコンパイルできませんが、
SDLをはずして新規作成したのものは、エラーにならずにコンパイルできて実行できます
デフォルトはSDLつきなので、コンパイルできません
次に、新規作成して出来上がったプロジェクトで、
メニューのプロジェクトから一番下のプロパティに入って、構成プロパティ、C/C++の全般にある
SDLチェックというところで、はい(/sdl) いいえ(/sdl-)を切り替えてやってみると、
この切り替えが動作せず、SDLのオン、オフが効きません。 プロジェクトの新規作成のときに設定したものが
残っていて、あとからここのプロパティで変更ができないようです
同じように、プロパティの構成プロパティの全般で、文字セットがデフォルトではUnicode文字セットを使用する
になってるのですが、これをマルチバイト文字セットを使用するにしても
Unicodeのままでマルチバイトにならないようです
バグですかねえ?
325デフォルトの名無しさん
2018/11/05(月) 17:14:38.42ID:o5QGnfIr 新規のプロジェクトにマルチバイト使うのやめようぜ
326デフォルトの名無しさん
2018/11/05(月) 20:46:10.49ID:fgA77wSW327デフォルトの名無しさん
2018/11/05(月) 21:22:43.21ID:Lc5ZfJaA >>326
できました。多分それです。ありがとうございました
コードの編集画面の上にあるコンボボックスを見ると、Debugとx86になってるのですが、
その状態でプロパティを開くと、なぜか、x64になってました。
なのでプロパティ画面で、上にあるプラットフォームをアクティブ(Win32)に変えると、画面がおかしくなって
びっくりしましたが、画面の再描画ができなかっただけなようで、再びプロパティ画面を出して
アクティブ(Win32)を確認してから、マルチバイトやSDLの変更をしたら、ちゃんと動いたようです
プロパティ画面を開くときは、連動してないので必ず確認してから変更しないといけないということですね
ちなみになんとか誤魔化せないかと思って、 stdafx.h の最初に
#undef UNICODE
#undef_UNICODE
ってやってみたら、コンパイルまでは全部のcppファイルで出来たのですが、リンクで未解決エラーが出て
出来ませんでした
できました。多分それです。ありがとうございました
コードの編集画面の上にあるコンボボックスを見ると、Debugとx86になってるのですが、
その状態でプロパティを開くと、なぜか、x64になってました。
なのでプロパティ画面で、上にあるプラットフォームをアクティブ(Win32)に変えると、画面がおかしくなって
びっくりしましたが、画面の再描画ができなかっただけなようで、再びプロパティ画面を出して
アクティブ(Win32)を確認してから、マルチバイトやSDLの変更をしたら、ちゃんと動いたようです
プロパティ画面を開くときは、連動してないので必ず確認してから変更しないといけないということですね
ちなみになんとか誤魔化せないかと思って、 stdafx.h の最初に
#undef UNICODE
#undef_UNICODE
ってやってみたら、コンパイルまでは全部のcppファイルで出来たのですが、リンクで未解決エラーが出て
出来ませんでした
328デフォルトの名無しさん
2018/11/05(月) 22:12:55.20ID:fgA77wSW さすがにそれはおかしいのでVS2017再インストール推奨
329デフォルトの名無しさん
2018/11/05(月) 22:23:54.08ID:Lc5ZfJaA >>328
マジですか。 再インストしようかな
マジですか。 再インストしようかな
330デフォルトの名無しさん
2018/11/05(月) 23:46:35.28ID:2AHpASAJ _T() ?
331デフォルトの名無しさん
2018/11/06(火) 11:56:33.16ID:rqFrnjhJ >ちなみになんとか誤魔化せないかと思って
略
>リンクで未解決エラー
MessageBoxA と MessageBoxW とかを自分で書き分けてみると解決するはず
略
>リンクで未解決エラー
MessageBoxA と MessageBoxW とかを自分で書き分けてみると解決するはず
332デフォルトの名無しさん
2018/11/11(日) 14:34:30.31ID:vUUak6BF333デフォルトの名無しさん
2018/11/11(日) 17:52:29.57ID:96wp+TZd しねNG
334デフォルトの名無しさん
2018/12/07(金) 17:05:15.69ID:meFvbPH8 MFCのツールバーって、リバーのように、「ツールバーを固定する」の動作はできませんかね。
ユーザーがコマンドを選択したら、その場所から動かすことができなくなるようにしたいのですが。
ユーザーがコマンドを選択したら、その場所から動かすことができなくなるようにしたいのですが。
335デフォルトの名無しさん
2018/12/08(土) 16:28:45.38ID:S81QsiH/ subclass化してメッセージループトラップしてmoveをにぎりつぶす
336デフォルトの名無しさん
2018/12/17(月) 19:07:24.59ID:Fq49NMNr HWND hWnd はできるけど、
HDC hDC って、別アプリ(別プロセス)に渡して、書き込ませることは出来ないの?
HDC の識別番号が、プロセスごとに別の「名前空間」みたいなことになってるのかな。
HDC hDC って、別アプリ(別プロセス)に渡して、書き込ませることは出来ないの?
HDC の識別番号が、プロセスごとに別の「名前空間」みたいなことになってるのかな。
337デフォルトの名無しさん
2018/12/17(月) 19:18:47.70ID:Fq49NMNr 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 は、プロセス・プライベートだって、書いてるけど、
たまたますごいことみつけちゃったんだ・・・実は。
みんな知ってる?
That is, only the process that created the GDI object can use the object handle.
↑によれば、HDC は、プロセス・プライベートだって、書いてるけど、
たまたますごいことみつけちゃったんだ・・・実は。
みんな知ってる?
338デフォルトの名無しさん
2018/12/18(火) 08:47:01.21ID:G1V4hdx+ 実は、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()
によって直接書き込ませることが出来ることを確認済み。
垣根を越えて渡せるんだ。プロセス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.56ID:G1V4hdx+ この話には続きがある。
Ubuntu Linux の Wine Emulator 3.2 で実験してみると、PrintWindow() が上手くいかないらしい。
なので、誰かに直して欲しい、と言うこと。
直してクレクレ。
Ubuntu Linux の Wine Emulator 3.2 で実験してみると、PrintWindow() が上手くいかないらしい。
なので、誰かに直して欲しい、と言うこと。
直してクレクレ。
340デフォルトの名無しさん
2018/12/18(火) 11:55:37.33ID:/M0/bFGF341デフォルトの名無しさん
2018/12/20(木) 16:21:01.93ID:IGyhJ3NX >>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 のマシンでの話。
さらに実験してみたところ、プロセス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.15ID:t8x/0UH1 なお予告なく変更されることがあります
343デフォルトの名無しさん
2019/02/01(金) 14:28:07.62ID:Y7K3gTaF MFC アプリケーションのツールバーを移動すると、ツールバーの移動枠とマウスカーソルの位置が離れる
https://social.msdn.microsoft.com/Forums/ja-JP/b47f8e8c-318b-4e7b-a81e-b97f26bffdc0/mfc
https://social.msdn.microsoft.com/Forums/ja-JP/b47f8e8c-318b-4e7b-a81e-b97f26bffdc0/mfc
344デフォルトの名無しさん
2019/02/20(水) 12:07:37.06ID:6ZQ0VW2w スタティックビルドがうまくできたらうれしかった
345デフォルトの名無しさん
2019/03/04(月) 21:22:00.31ID:w7LKY+n1 ウインドウを2枚用意して、片方を表に(上に)表示して、もう片方は裏にして見えないようにしている。で、裏の見えない方を
書き換えて、表のウインドウと入れ替えて、新しい描画のウインドウを出すということをしたいのです
裏メモリに書き込んで一瞬でモニターに出すという普通のやつをウインドウでします
裏でウインドウで書き込むとき、HIDE状態では書き込めないので、MINIMIZEの状態では出来ることがわかったので
そうしているのですが、問題はそれを最大化するときに、どうしても描画に時間がかかるというか、一瞬では出来ないのです
なので、アクティブ化せずに裏で最大化、あるいは、RESTOREする方法を探しているのですが、
APIのShowWindowとかだと、RESTOREもMAXIMIZEも必ずアクティブ化してしまうのですがいい方法はないでしょうか
いろいろとやってみて、2枚のウインドウに違う絵をかいておいて、片方をHIDE、片方をSHOWして、このHIDEと
SHOWと切り替えるってのが一番きれいに切り替わるようなのですが、書き込むとき、HIDEでは書き込めずに
MINIMIZEして書き込まないといけないので、MINIMIZEして書き込んだウインドウを表に出さずに大きくしてHIDE状態に出来れは
いいのですが
書き換えて、表のウインドウと入れ替えて、新しい描画のウインドウを出すということをしたいのです
裏メモリに書き込んで一瞬でモニターに出すという普通のやつをウインドウでします
裏でウインドウで書き込むとき、HIDE状態では書き込めないので、MINIMIZEの状態では出来ることがわかったので
そうしているのですが、問題はそれを最大化するときに、どうしても描画に時間がかかるというか、一瞬では出来ないのです
なので、アクティブ化せずに裏で最大化、あるいは、RESTOREする方法を探しているのですが、
APIのShowWindowとかだと、RESTOREもMAXIMIZEも必ずアクティブ化してしまうのですがいい方法はないでしょうか
いろいろとやってみて、2枚のウインドウに違う絵をかいておいて、片方をHIDE、片方をSHOWして、このHIDEと
SHOWと切り替えるってのが一番きれいに切り替わるようなのですが、書き込むとき、HIDEでは書き込めずに
MINIMIZEして書き込まないといけないので、MINIMIZEして書き込んだウインドウを表に出さずに大きくしてHIDE状態に出来れは
いいのですが
346デフォルトの名無しさん
2019/03/05(火) 03:38:03.26ID:VDry4yCP MemoryDCに書き込め
347デフォルトの名無しさん
2019/03/07(木) 10:13:48.09ID:wL/Z2Jw6 MFCのSDIアプリケーションで、PCを一定時間操作しなかったときに、
「更新中」のダイアログをDoModal()で出して、内部の情報を更新する動作を作っています。
更新処理はダイアログの中で別スレッドで行っていて、
タイマーで定期的にスレッドを監視して、終わっていたらEndDialog()で閉じます。
他の操作を不可にした上でキャンセルは可能にするために、このように作りました。
ここまでは問題なく動いているのですが、
アプリケーションがアクティブでないときにこの更新処理が走ると、
「更新中」のダイアログが閉じられた後に、アクティブ表示になってしまいます。
表示がアクティブになるだけで、フォーカスまでは奪いません。
二つのアプリケーションがアクティブ表示になってしまう状態です。
不思議に思ってMFCのソースを追いかけたところ、
CFrameWndのOnEnable()やOnActivate()やOnNcActivate()で
WF_STAYACTIVEのフラグを使ってアクティブ表示を強制するような仕組みがあり、
この中の処理を通った結果、アクティブ表示になってしまうようでした。
どうしてWF_STAYACTIVEに引っかかるのかなど、細かい流れは追い切れていませんが、
アクティブでないときに裏でダイアログが出て、その後自動で閉じるような動きを、
CFrameWndは想定していないということになりますでしょうか。
見た目のだけの問題ではありますが、CFrameWndの仕組みを保ったまま、
この現象を回避する方法はありませんでしょうか。
「更新中」のダイアログをDoModal()で出して、内部の情報を更新する動作を作っています。
更新処理はダイアログの中で別スレッドで行っていて、
タイマーで定期的にスレッドを監視して、終わっていたらEndDialog()で閉じます。
他の操作を不可にした上でキャンセルは可能にするために、このように作りました。
ここまでは問題なく動いているのですが、
アプリケーションがアクティブでないときにこの更新処理が走ると、
「更新中」のダイアログが閉じられた後に、アクティブ表示になってしまいます。
表示がアクティブになるだけで、フォーカスまでは奪いません。
二つのアプリケーションがアクティブ表示になってしまう状態です。
不思議に思ってMFCのソースを追いかけたところ、
CFrameWndのOnEnable()やOnActivate()やOnNcActivate()で
WF_STAYACTIVEのフラグを使ってアクティブ表示を強制するような仕組みがあり、
この中の処理を通った結果、アクティブ表示になってしまうようでした。
どうしてWF_STAYACTIVEに引っかかるのかなど、細かい流れは追い切れていませんが、
アクティブでないときに裏でダイアログが出て、その後自動で閉じるような動きを、
CFrameWndは想定していないということになりますでしょうか。
見た目のだけの問題ではありますが、CFrameWndの仕組みを保ったまま、
この現象を回避する方法はありませんでしょうか。
348デフォルトの名無しさん
2019/03/07(木) 11:03:18.49ID:MaxgRiSY ダイアログの前にアクティブだったウィンドウをアクティブにしてから閉じる
349sage
2019/03/12(火) 23:39:31.92ID:5NMUaJ/A VS2019のリリースノートでのMFCへの言及は、廃止予定の機能一覧中にいくつかあるのみ。
MFCをバリバリ使っているわけではないけど、なんか悲しい。
MFCをバリバリ使っているわけではないけど、なんか悲しい。
350デフォルトの名無しさん
2019/09/19(木) 20:20:47.92ID:h0nmK2Rt 空のソリューションを作って既存のAとBのMFCダイアログベースのプロジェクトを追加して、リソースビューでAにBのダイアログをコピペしたらIDが同じという警告が出た。
AのダイアログからBのダイアログをDoModalで呼び出す内容なんですが、ビルドも実行させても問題ないように見えるが大丈夫なんでしょうか?
AのダイアログからBのダイアログをDoModalで呼び出す内容なんですが、ビルドも実行させても問題ないように見えるが大丈夫なんでしょうか?
351デフォルトの名無しさん
2019/11/12(火) 03:43:11.18ID:dQMkkNV/ 数年前に作ったダイアログのコンボボックスの初期値が反映されなくなってたんだが
CComboBox:: SelectStringの第一引数nStartAfterを0から-1にしたら動作した
でもなんでやろ?0でよさげなのに
CComboBox:: SelectStringの第一引数nStartAfterを0から-1にしたら動作した
でもなんでやろ?0でよさげなのに
352デフォルトの名無しさん
2020/02/27(木) 02:47:52.87ID:HQmHUU7r いまやCDCといえばアメリカ疾病対策センター(Centers for Disease Control and Prevention)だね
353デフォルトの名無しさん
2020/02/27(木) 03:05:08.52ID:CxyJejD6 >>349
MSは傲慢になっているだけ。
MSは傲慢になっているだけ。
354デフォルトの名無しさん
2020/02/27(木) 15:15:55.59ID:G6pyHvdg355デフォルトの名無しさん
2020/03/18(水) 18:37:21.32ID:7DDJtRdm ローカルディスクの中で、MFCのCWinやCViewなどのソースは見られるのですが、
AfxGetApp()のソースコードだけが見つかりません。
どこにあるのでしょうか?
AfxGetApp()のソースコードだけが見つかりません。
どこにあるのでしょうか?
356デフォルトの名無しさん
2020/03/18(水) 18:37:49.10ID:7DDJtRdm357デフォルトの名無しさん
2020/03/18(水) 22:20:02.18ID:rOcYLXbY あなたの心のなかに
358蟻人間 ◆T6xkBnTXz7B0
2020/03/18(水) 22:54:37.77ID:k3A1kOjX デバッグすれば見つかると思う。
多分inline だからヘッダにあると。
多分inline だからヘッダにあると。
359デフォルトの名無しさん
2020/03/19(木) 02:54:18.48ID:VRFqiqhe >>358
拡張子を指定せずに、MFCのソースを含んだ全てのファイルを検索にかけたけど、
AfxGetApp()の定義だけは見つからなかった。
見落としは有るかもしれないが、当然、*.c, *,cpp, *.h, *.inl は全てチェックした。
拡張子を指定せずに、MFCのソースを含んだ全てのファイルを検索にかけたけど、
AfxGetApp()の定義だけは見つからなかった。
見落としは有るかもしれないが、当然、*.c, *,cpp, *.h, *.inl は全てチェックした。
360デフォルトの名無しさん
2020/03/19(木) 16:23:04.81ID:iZLxCMVs361デフォルトの名無しさん
2020/03/22(日) 02:44:03.68ID:HvrypJyW362デフォルトの名無しさん
2020/04/16(木) 02:46:25.76ID:EfWE4HPw 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 に対して呼び出している
に過ぎません。
これはどういうことでしょうか??
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 に対して呼び出している
に過ぎません。
これはどういうことでしょうか??
363デフォルトの名無しさん
2020/04/16(木) 10:10:01.52ID:przIFznP そりゃ発行済でキューに入ったメッセージはそのままになる罠
自分で読んでしまえば消えるだけのこと
自分で読んでしまえば消えるだけのこと
364デフォルトの名無しさん
2020/04/16(木) 10:35:53.84ID:midwC3ZA >>362
https://docs.microsoft.com/ja-jp/cpp/mfc/reference/cwnd-class?view=vs-2019#killtimer
こっちには削除されないと書いてあるので、昔のMFCの説明が間違っているのでは
https://docs.microsoft.com/ja-jp/cpp/mfc/reference/cwnd-class?view=vs-2019#killtimer
こっちには削除されないと書いてあるので、昔のMFCの説明が間違っているのでは
365デフォルトの名無しさん
2020/04/16(木) 14:17:36.18ID:EfWE4HPw >>363
ただ、WM_PAINT や WM_TIMER は、他のメッセージとは異なる処理を
されています。
Win32のメッセージキューは、1つのキューに見えるものが、OSの内部では
複数本持っているか、描画のDirtyフラグなどでなんらかの特殊な扱いを
しているようです。
ただ、WM_PAINT や WM_TIMER は、他のメッセージとは異なる処理を
されています。
Win32のメッセージキューは、1つのキューに見えるものが、OSの内部では
複数本持っているか、描画のDirtyフラグなどでなんらかの特殊な扱いを
しているようです。
366デフォルトの名無しさん
2020/04/16(木) 14:26:57.93ID:przIFznP WM_PAINTは優先度最も低いので常に後ろに行くってどっかで観た
367デフォルトの名無しさん
2020/04/16(木) 14:46:13.29ID:EfWE4HPw 実際には、WM_TIMER は、WM_PAINT以上に優先順位が低いです。
なので、PeekMessage()しても、他のメッセージがあれば WM_TIMERメッセージを
拾えるかどうかは余り定かではないと思います。
もしかすると、その場合には KillTimer()の処理に置いては、WM_TIMERが
メッセージキューに「ポストされて無い」とみなされるのかもしれません。
解釈が難しいです。
なので、PeekMessage()しても、他のメッセージがあれば WM_TIMERメッセージを
拾えるかどうかは余り定かではないと思います。
もしかすると、その場合には KillTimer()の処理に置いては、WM_TIMERが
メッセージキューに「ポストされて無い」とみなされるのかもしれません。
解釈が難しいです。
368デフォルトの名無しさん
2020/04/28(火) 14:27:43.22ID:lEsMK9s4 いやー仕事でいじることになったんだけどぜんっぜんわからんわなんじゃこりゃ
独自定義の型山盛りでおまけにドキュメントも少ない。いやこれめちゃくちゃ難易度高くない
独自定義の型山盛りでおまけにドキュメントも少ない。いやこれめちゃくちゃ難易度高くない
369デフォルトの名無しさん
2020/04/28(火) 16:08:22.11ID:rYh8BUkN 俺は昨年からC#のwinformに移行してメチャ楽勝です。
もうMFCに戻りたくないです。
でもthreadで動かすのはこっちの方が分かりやすい。
もうMFCに戻りたくないです。
でもthreadで動かすのはこっちの方が分かりやすい。
370デフォルトの名無しさん
2020/04/28(火) 22:00:28.21ID:jwgdFc00 >>368
仕事でってことだが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
を今でも使ってる。
仕事でってことだが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
を今でも使ってる。
371デフォルトの名無しさん
2020/05/08(金) 00:23:39.44ID:IXHJYCls だめだー格闘したけどビルドすらできない
どうもvc++6.0以前のやつはvc2005以降とだいぶ違う?変換でエラー出るどころか文法もエラー出まくりでどうしようもならん。古い開発環境なんて無いし
どうもvc++6.0以前のやつはvc2005以降とだいぶ違う?変換でエラー出るどころか文法もエラー出まくりでどうしようもならん。古い開発環境なんて無いし
372デフォルトの名無しさん
2020/05/08(金) 09:59:42.32ID:oIDbptWL _s 使えとかいっぱいでてうざいのは判る
373デフォルトの名無しさん
2020/05/08(金) 12:48:05.49ID:IXHJYCls それは確かプロパティで無視するようにできたよーな
374デフォルトの名無しさん
2020/05/08(金) 13:09:30.80ID:V0PZ5eCc 無視したら、当時の脆弱性を認めることにはなるけどな。
あと forのカッコの中で宣言したループ変数のスコープとかも、6の時代とは違ったと思う。
あと forのカッコの中で宣言したループ変数のスコープとかも、6の時代とは違ったと思う。
375デフォルトの名無しさん
2020/05/08(金) 16:54:57.20ID:iOEjZYuS 判らないなら VC6 使うべき
上位互換でも VC6 モードにするべき
上位互換でも VC6 モードにするべき
376デフォルトの名無しさん
2020/05/08(金) 22:24:15.90ID:kRmZw1lO >>374
はぁ?
はぁ?
377デフォルトの名無しさん
2020/05/09(土) 05:00:08.42ID:TVkAIoUw MSと契約してたらVS6は手に入るはずだが。
378デフォルトの名無しさん
2020/05/09(土) 05:13:30.06ID:wZuQoznS XPまでしかインストールできなかった気がする
379デフォルトの名無しさん
2020/05/09(土) 06:25:10.22ID:J9L1oHhf 仮想使えば?
380デフォルトの名無しさん
2020/05/09(土) 07:40:51.77ID:TBKnesgm 古いWindowsならここにあるぞ
https://winworldpc.com/library/operating-systems
https://winworldpc.com/library/operating-systems
381デフォルトの名無しさん
2020/05/09(土) 09:44:57.53ID:3rxWY8lS MSDN なら XP も VS6 も入手してるはず
382デフォルトの名無しさん
2020/05/09(土) 09:47:30.21ID:3rxWY8lS383デフォルトの名無しさん
2020/05/09(土) 13:24:52.80ID:740LYA9f えぇこんなサイトあるのと思ってググったけど著作権的にグレイゾーンというかブラックでは
384デフォルトの名無しさん
2020/05/09(土) 16:09:17.18ID:TBKnesgm ちゃんと線引きしてるよ
https://winworldpc.com/product/windows-xp/final
https://winworldpc.com/product/windows-xp/final
385デフォルトの名無しさん
2020/05/09(土) 19:31:34.01ID:740LYA9f 要するにmicrosoftが黙認というか放置してるだけというか
権利を放棄してないのは確かだから使うならこっそりやりなさいよくらいのレベルなのかね
いずれにせよグレーなのは間違いない。仕事じゃ使えないね
権利を放棄してないのは確かだから使うならこっそりやりなさいよくらいのレベルなのかね
いずれにせよグレーなのは間違いない。仕事じゃ使えないね
386デフォルトの名無しさん
2020/05/09(土) 21:03:53.55ID:TBKnesgm 仕事に使うって発想はなかったw
MSDNのCDをiso化して保存してるからな
MSDNのCDをiso化して保存してるからな
387デフォルトの名無しさん
2020/05/09(土) 23:05:48.18ID:VZmAPRaM 仕事につかえないっ(キリっ)て話なら
純正のVC6でももう使うなよωって思うωωω
純正のVC6でももう使うなよωって思うωωω
388デフォルトの名無しさん
2020/05/09(土) 23:40:20.22ID:TVkAIoUw 仕事したことない子供かよw
389デフォルトの名無しさん
2020/05/10(日) 00:08:40.31ID:lS9VwhWL 仕事で使うなら再現可能性は大切だからな
従業員が違法行為をしていたら、懲戒免職で済めば良い方で
損害賠償請求されたっておかしくはない
従業員が違法行為をしていたら、懲戒免職で済めば良い方で
損害賠償請求されたっておかしくはない
390デフォルトの名無しさん
2020/05/10(日) 08:12:18.17ID:HcnV9o5e MFC保守なんていう面白そうな案件を当時を知らない若者にやらせるとかどうかしてる。
391デフォルトの名無しさん
2020/05/10(日) 08:30:33.92ID:Pcmn53iK 隔離VMで昔を懐かしむなんて楽しみ方はしてるよ
今のハードウエアなら神速かと思いきや期待ほどではない
今のハードウエアなら神速かと思いきや期待ほどではない
392デフォルトの名無しさん
2020/05/10(日) 08:46:41.09ID:B13Er8N9 でもネットに情報一杯あるから苦労でもないね。
393デフォルトの名無しさん
2020/05/10(日) 15:21:27.47ID:JjPR8mXC 過疎スレなのに無駄に伸びすぎ
394デフォルトの名無しさん
2020/05/10(日) 16:01:33.51ID:nv4IBqVl 若かった頃を思い出すノスタルジースレ
395デフォルトの名無しさん
2020/05/10(日) 18:00:45.83ID:Pcmn53iK OS/2 1.0なんか楽しくて仕方なかった
396デフォルトの名無しさん
2020/05/11(月) 22:03:48.97ID:qSq1/7+a mfcのコードってどれもこれもハンガリアンな印象なんだけど新し目のmfcコードだとその悪習から脱却されてたりする?
前世紀から連綿と受け継がれてきたようなのしかまだ見たことがないんだけど。いやそもそも新し目のmfcなんて存在するのかという問題もあるが
前世紀から連綿と受け継がれてきたようなのしかまだ見たことがないんだけど。いやそもそも新し目のmfcなんて存在するのかという問題もあるが
397デフォルトの名無しさん
2020/05/11(月) 22:19:49.49ID:lKGFrGqg べつにハンガリアンが嫌なら自分のコードでは使わなきゃいいだけ。
使うライブラリのネーミングルールが気に入らないとか言うのは相当偏屈な奴だろう。
使うライブラリのネーミングルールが気に入らないとか言うのは相当偏屈な奴だろう。
398デフォルトの名無しさん
2020/05/14(木) 05:37:45.19ID:IJMYY156 型が分からなくても平気な人はプログラマに向いてない。
399デフォルトの名無しさん
2020/05/14(木) 09:52:03.18ID:tvxDWcUo ハンゲリアンは百害あって一利なし
400デフォルトの名無しさん
2020/05/14(木) 10:26:21.35ID:IJMYY156 UNIX勢のGUIが不安定だった頃、
MFCアプリが高機能てんこ盛りで安定してたのはハゲリアンのおかげである。
MFCアプリが高機能てんこ盛りで安定してたのはハゲリアンのおかげである。
401デフォルトの名無しさん
2020/05/14(木) 18:37:36.49ID:8JWtj6XY APIのリファレンスの記述用としては秀逸だと思うけどなあ
402デフォルトの名無しさん
2020/05/15(金) 07:34:00.84ID:QqRlTuRs MFC製アプリはMSに数兆円の利益をもたらした。
ハゲリンは100害あっても兆利あった。
ハゲリンは100害あっても兆利あった。
403デフォルトの名無しさん
2020/05/15(金) 11:29:35.02ID:QE59VEMD > 安定してたのはハゲリアンのおかげ
関係ないと思うが
関係ないと思うが
404デフォルトの名無しさん
2020/05/15(金) 18:17:59.73ID:sHW7IJmG 理由も書かずに否定した気になってるという謎の万能感の持ち主w
405デフォルトの名無しさん
2020/05/15(金) 19:43:56.07ID:mq4q1sRg アンガリアン
406デフォルトの名無しさん
2020/05/16(土) 06:06:50.03ID:VIJekRbB407デフォルトの名無しさん
2020/05/16(土) 06:23:09.44ID:Os/XxFcn >>406
何の話をしてんの?
何の話をしてんの?
408デフォルトの名無しさん
2020/05/18(月) 10:37:08.40ID:pyEiFhlF 90年代に書かれたのを最新のvisual studioで動くようにしてという仕事が降ってきて絶望している
409デフォルトの名無しさん
2020/05/18(月) 10:39:08.65ID:XEI7YtdQ 全面的に描き治しになりますって見積もり出せ
410デフォルトの名無しさん
2020/05/18(月) 15:47:40.36ID:0/z3ChKA 普通に動くんじゃないの?
411デフォルトの名無しさん
2020/05/18(月) 16:40:43.57ID:E4/AoY55 90年台のVCだとfor文の初期化式のスコープでまず引っかかりそう
412デフォルトの名無しさん
2020/05/18(月) 18:08:37.98ID:u5vOaLys ソースコードの量より多いワーニングが出そう
413デフォルトの名無しさん
2020/05/18(月) 19:31:30.34ID:knarOBVn 自分の作ったプログラム(MFC使用)でVC++4.0からVC++2008の移行を行ったけど、
(文法的に)エラー・ワーニングが出るところを機械的に修正していくだけで、プログラ
ムのアルゴリズムや構造を変えなければならないようなところは無かったから、
それほど手間はかからなかったよ。
(文法的に)エラー・ワーニングが出るところを機械的に修正していくだけで、プログラ
ムのアルゴリズムや構造を変えなければならないようなところは無かったから、
それほど手間はかからなかったよ。
414デフォルトの名無しさん
2020/05/18(月) 20:32:49.43ID:u5vOaLys 2008はな。
でも今や2008もサポート停止。
でも今や2008もサポート停止。
415デフォルトの名無しさん
2020/05/19(火) 18:02:40.68ID:kOq4o5Tk416デフォルトの名無しさん
2020/05/19(火) 20:37:52.56ID:AC8jjF95417デフォルトの名無しさん
2020/05/20(水) 14:51:41.59ID:Mh8h++lf >>406
ハゲリン
ハゲリン
418デフォルトの名無しさん
2020/05/23(土) 20:13:33.99ID:a3FMTFIp IE用の古いCHtmlViewで表示されているページを拡大縮小することは可能でしょうか?
MFCIEというサンプルもビルドしてみたのですが、CTRL+ + などは効かないようです。
プログラムからコントロールできるのでしょうか?
MFCIEというサンプルもビルドしてみたのですが、CTRL+ + などは効かないようです。
プログラムからコントロールできるのでしょうか?
419デフォルトの名無しさん
2020/05/24(日) 05:40:28.33ID:J6IYypHJ MFCでAppWizardでひな形を作って色々試してるのですが、ツールバーのアイコンって
どうすればいいのでしょうか??
visual studio imaging libraryのアイコンを試しにツールバーのボタンに追加(コピー&ペースト)しようとしても背景がおかしくなります。
imaging libraryのアイコンが32bppのBGRAで、ツールバーのアイコンが24bpp。
どうすればいいのでしょうか??
visual studio imaging libraryのアイコンを試しにツールバーのボタンに追加(コピー&ペースト)しようとしても背景がおかしくなります。
imaging libraryのアイコンが32bppのBGRAで、ツールバーのアイコンが24bpp。
420デフォルトの名無しさん
2020/05/24(日) 08:45:30.47ID:576Jhui6421デフォルトの名無しさん
2020/05/24(日) 19:44:20.76ID:J6IYypHJ422デフォルトの名無しさん
2020/05/24(日) 20:21:20.05ID:J6IYypHJ ツールバーエディタ使えないの死ねるな...
エディタ上でボタンの位置D&Dでかえれば、ビットマップも変わってくれるに
これを手動でしょうやるのか..
みんなさんどんなツール使ってるんでしょうか
エディタ上でボタンの位置D&Dでかえれば、ビットマップも変わってくれるに
これを手動でしょうやるのか..
みんなさんどんなツール使ってるんでしょうか
423デフォルトの名無しさん
2020/05/25(月) 13:53:34.30ID:5DfBXHrq >>422
個人的には ToolBar のクラスを独自に改造したり、似たものを独自に作ったりしてる。
個人的には ToolBar のクラスを独自に改造したり、似たものを独自に作ったりしてる。
424デフォルトの名無しさん
2020/05/25(月) 20:02:58.24ID:DlrmGgO8 >>423
自分もちょっとしたツール作って対応してみます
32bpp?のイメージリストをpngか32bppで書き出せるツールあたりを作ればいいのか?
もちろんイメージリストにイメージの追加とD&Dで移動
ありがとうございます
自分もちょっとしたツール作って対応してみます
32bpp?のイメージリストをpngか32bppで書き出せるツールあたりを作ればいいのか?
もちろんイメージリストにイメージの追加とD&Dで移動
ありがとうございます
425デフォルトの名無しさん
2020/05/25(月) 21:52:48.92ID:lY/wsl2a426デフォルトの名無しさん
2020/05/26(火) 08:52:20.57ID:j6nucCxO >>424
ちなみに、MFCが買い取ったBCGのライブラリには、
32bitのPNGやSVGに対応したツールバーエディタも入ってるみたい
https://www.bcgsoft.com/doc/ToolbarEditor.htm
ちなみに、MFCが買い取ったBCGのライブラリには、
32bitのPNGやSVGに対応したツールバーエディタも入ってるみたい
https://www.bcgsoft.com/doc/ToolbarEditor.htm
427デフォルトの名無しさん
2020/05/26(火) 17:18:06.42ID:cHOadEfk428デフォルトの名無しさん
2020/05/26(火) 20:10:43.66ID:S7BwoTkr とりあえず、上手くいくかわかりませんが
Delphi/C++Builderの方に32bppのImageListをD&Dで移動など編集できる機能があるので、
そこでビットマップ管理して、後はPNGもしくは32bppのBMPで書き出すコードを
追加して、それをMFCの方で利用
>>427
そうなんですか。でも、その場合、ツールバーの移動とかカスタマイズ機能を付けるとなると
大変?
Delphi/C++Builderの方に32bppのImageListをD&Dで移動など編集できる機能があるので、
そこでビットマップ管理して、後はPNGもしくは32bppのBMPで書き出すコードを
追加して、それをMFCの方で利用
>>427
そうなんですか。でも、その場合、ツールバーの移動とかカスタマイズ機能を付けるとなると
大変?
429デフォルトの名無しさん
2020/05/26(火) 20:16:29.74ID:cHOadEfk430デフォルトの名無しさん
2020/05/26(火) 21:00:42.32ID:S7BwoTkr >>429
それなんですね。ツールバーやウィンドウのドッキング機能がほしかったので、とりあえず、MFCを使ってる次第です。
QtやDelphi/C++Builderの方にもウィンドウのドッキング機能があるっぽいですが、MFCが一番良さそうだったので
それなんですね。ツールバーやウィンドウのドッキング機能がほしかったので、とりあえず、MFCを使ってる次第です。
QtやDelphi/C++Builderの方にもウィンドウのドッキング機能があるっぽいですが、MFCが一番良さそうだったので
431デフォルトの名無しさん
2020/05/26(火) 21:05:12.34ID:S7BwoTkr 後、今どきHigh DPIは必須なので、ちゃんとMFCのドッキングがHigh DPIで動くのか...AppWizardで造った雛型はデフォルトで、アプリのレイアウトの復元を行ってくれますが
そこら辺を考慮して最終的にMFCにするかQtにするかはたまたDelphi/C++Builderにするか
そこら辺を考慮して最終的にMFCにするかQtにするかはたまたDelphi/C++Builderにするか
432デフォルトの名無しさん
2020/05/26(火) 21:09:08.37ID:pBlDnMjv 4k非対応と明記すればOK
433デフォルトの名無しさん
2020/06/02(火) 19:44:26.62ID:heENVoK9 ちょっと聞きたいんだけどMFCを使用してCUIアプリを書くことってある?
メインのプログラムがMFCでそれに関連するC++のCUIアプリ書いて言われて純C++で書いたらMFC使えって
CUIにMFC使うって発想がまったく無かったんだけどありえなくもないんかな
メインのプログラムがMFCでそれに関連するC++のCUIアプリ書いて言われて純C++で書いたらMFC使えって
CUIにMFC使うって発想がまったく無かったんだけどありえなくもないんかな
435デフォルトの名無しさん
2020/06/02(火) 20:14:01.52ID:YBBIGuS6 >>433
自分はCUIアプリでもMFC使う事が多いね。
MFCはGUI関連以外でも汎用的な処理がクラス化されていて便利な物が多数あるからね。
CUIアプリでも良く使うのはCStringとかCxxArrayとかCFileFindとかかなあ。
これらの大部分はATLでも実現できるけど、普段GUIアプリをMFCで作ってるからCUIでも
ATLよりMFCを好んで使ってる。
自分はCUIアプリでもMFC使う事が多いね。
MFCはGUI関連以外でも汎用的な処理がクラス化されていて便利な物が多数あるからね。
CUIアプリでも良く使うのはCStringとかCxxArrayとかCFileFindとかかなあ。
これらの大部分はATLでも実現できるけど、普段GUIアプリをMFCで作ってるからCUIでも
ATLよりMFCを好んで使ってる。
436デフォルトの名無しさん
2020/06/02(火) 20:33:53.79ID:YBBIGuS6 >>433
あと、企画・開発から保守まで自分一人で行う物なら何をどう使っても良いけど、大き
なアプリの一部の開発なら、使うライブラリや記述・処理の作法なんかを他の人が作る
部分に合わせておくことは非常に重要。
あと、企画・開発から保守まで自分一人で行う物なら何をどう使っても良いけど、大き
なアプリの一部の開発なら、使うライブラリや記述・処理の作法なんかを他の人が作る
部分に合わせておくことは非常に重要。
437デフォルトの名無しさん
2020/06/03(水) 00:04:37.57ID:RCJMsJJI438デフォルトの名無しさん
2020/06/03(水) 09:22:52.14ID:wbZbutmL MFCは糞
もちろんGTKは糞だが
GTKよりも糞
もちろんGTKは糞だが
GTKよりも糞
439デフォルトの名無しさん
2020/06/03(水) 14:36:40.34ID:cGkVHonE C++Nativeの今風なGUIライブラリ作って欲しいわ
そこ得意分野のはずなのにな
もうC++には興味ないのか
そこ得意分野のはずなのにな
もうC++には興味ないのか
440デフォルトの名無しさん
2020/06/03(水) 14:43:37.29ID:UHE1JPNz COMベースになるだろうな
441デフォルトの名無しさん
2020/06/03(水) 17:07:37.39ID:RCJMsJJI .netでc#でって感じで、俺らの欲しいものじゃない奴を作っては消えていく
未だにMFCの方が安泰な気がするんだけどなあ
未だにMFCの方が安泰な気がするんだけどなあ
442デフォルトの名無しさん
2020/06/03(水) 17:43:55.39ID:z01mcF4V >>439
winui 3...
winui 3...
443デフォルトの名無しさん
2020/06/03(水) 20:46:57.80ID:EILm6QOX TuneBrowserとか見ると、MFCも捨てたもんじゃないと思うけどな
444デフォルトの名無しさん
2020/06/03(水) 20:49:52.72ID:PFUYBSjI C++/CLIをもっと延命してくれればよかったんだがなぁ
445デフォルトの名無しさん
2020/06/03(水) 21:39:23.49ID:cGkVHonE446デフォルトの名無しさん
2020/06/03(水) 21:59:01.81ID:z01mcF4V fluent designが問題なんだよ。タッチフレンドリなアプリ作るならfluent designでもいいが、もっとマウス入力前提のデスクトップアプリ作る場合なfluentだとスペースが多すぎてダサくなる
もっと、Visual Studio IDEみたいな情報密度のアプリにFluent Design(WinUI)が対応してくれれば
もっと、Visual Studio IDEみたいな情報密度のアプリにFluent Design(WinUI)が対応してくれれば
447デフォルトの名無しさん
2020/06/03(水) 22:02:34.42ID:z01mcF4V Tunebrowser見てみたけど、おしゃれやな
こういうの簡単に..っていうかMFCのビジュアルテーマもっと用意しろよって...
こういうの簡単に..っていうかMFCのビジュアルテーマもっと用意しろよって...
448デフォルトの名無しさん
2020/06/04(木) 01:27:30.90ID:pF3mhOuv >>446
その路線windows8で失敗してるのにまた蒸し返すのかよって思ったな
その路線windows8で失敗してるのにまた蒸し返すのかよって思ったな
449デフォルトの名無しさん
2020/06/04(木) 22:17:47.91ID:x+eVDE0s 本当は実用性とデザイン性は相反することが多いんだよ。
なぜかというと今まで見たことも無いものが良いデザインに見えるからだ。
人間は見たことも無いことに驚く。そして驚きこそが良いデザイン本質だからだ。
便利だったり識別し易いものは既に多くある。それが実用性が高いものだ。
ところがよくあるものは陳腐に見えるため、良いデザインに見えない。
だからSF映画の世界では実用性のないUIを持ったコンソールパネルが宇宙船や
ロボットの中に描かれている。
見たことが無いのでかっこよく見えるのだ。
Windowのデザインも、4隅を丸くしたりするとかっこよく見えるが、
面積が無駄になるので実用性には乏しい。
だから、Windowの中の境界線を見えなくするものが流行っているが、めったに採用されてこなかった
ために驚きがあるため一部の人にはデザイン性が高く見える。
ところが、採用されてこなかったのは実用性が無いからであって、結局使いにくい。
なぜかというと今まで見たことも無いものが良いデザインに見えるからだ。
人間は見たことも無いことに驚く。そして驚きこそが良いデザイン本質だからだ。
便利だったり識別し易いものは既に多くある。それが実用性が高いものだ。
ところがよくあるものは陳腐に見えるため、良いデザインに見えない。
だからSF映画の世界では実用性のないUIを持ったコンソールパネルが宇宙船や
ロボットの中に描かれている。
見たことが無いのでかっこよく見えるのだ。
Windowのデザインも、4隅を丸くしたりするとかっこよく見えるが、
面積が無駄になるので実用性には乏しい。
だから、Windowの中の境界線を見えなくするものが流行っているが、めったに採用されてこなかった
ために驚きがあるため一部の人にはデザイン性が高く見える。
ところが、採用されてこなかったのは実用性が無いからであって、結局使いにくい。
450デフォルトの名無しさん
2020/06/05(金) 15:01:07.01ID:WSRdRexs 馬鹿っぽい文章
451デフォルトの名無しさん
2020/06/05(金) 15:42:17.35ID:gDPlzIqp うん、まれに見る駄文だ
452デフォルトの名無しさん
2020/06/05(金) 16:06:30.12ID:2cqRue0Q IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
学術の巨大掲示板群 - アルファ・ラボ 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
453デフォルトの名無しさん
2020/06/10(水) 17:28:34.23ID:zGKCrjfQ MFCのせいでC++/CLIのGUIが衰退したのは本当ですか?
C++/CLIのGUIはもう終わりなのですか?
C++/CLIのGUIはもう終わりなのですか?
454デフォルトの名無しさん
2020/06/10(水) 17:49:50.64ID:V+CQutVh MFCはC++98すら未制定の時代に作られたライブラリだけど
C++17前提で作り直すとどんな感じになるかな
たとえば
RUNTIME_CLASS(hogehoge)
↓
typeid(hogehoge)
みたいに
C++17前提で作り直すとどんな感じになるかな
たとえば
RUNTIME_CLASS(hogehoge)
↓
typeid(hogehoge)
みたいに
455デフォルトの名無しさん
2020/06/10(水) 21:15:41.28ID:FCXoWDTQ >>453
どっちかというと逆だと思う。C++/CLIがこけたせいでMFCが延命した。
どっちかというと逆だと思う。C++/CLIがこけたせいでMFCが延命した。
456デフォルトの名無しさん
2020/06/10(水) 21:31:05.00ID:zGKCrjfQ >>455
なるほど。C++/CLIだと、C++言語の高速性が活かせなかったのかな?
なるほど。C++/CLIだと、C++言語の高速性が活かせなかったのかな?
457デフォルトの名無しさん
2020/06/10(水) 22:36:21.96ID:AiHbZWJh 最近MSが出したTerminalのソースみたらゴリゴリのモダンなC++の中でWindows API使ってて震えたね
何とかしてくれよ本当
何とかしてくれよ本当
458デフォルトの名無しさん
2020/06/11(木) 10:03:27.11ID:Th6rh/3U >>457
なんで?、Win32 API 使っても別に問題ないじゃない。
なんで?、Win32 API 使っても別に問題ないじゃない。
459デフォルトの名無しさん
2020/06/11(木) 11:41:53.07ID:DcPEy/qZ MFCはゴミ
当時のMSの過学習の成果物
当時のMSの過学習の成果物
460デフォルトの名無しさん
2020/06/11(木) 15:06:27.47ID:OAAeiR/0 >>459
と言ってもC++のクラスライブラリがこれしかない現実
と言ってもC++のクラスライブラリがこれしかない現実
461デフォルトの名無しさん
2020/06/12(金) 05:06:01.94ID:mUcvmKZk APIの極薄ラッパーなところが有り難いんだよ
余計なことを押しつけずAPIを使いやすくすることに徹してくれていて
余計なことを押しつけずAPIを使いやすくすることに徹してくれていて
462デフォルトの名無しさん
2020/06/12(金) 08:17:50.58ID:70FlsBsC MFCもFeature Packの後 更にBCGSoft買収して全部無料にするとか、
WPFもどっかのライブラリ買収して無料にするとかカッコいいアプリ作れるようにすれば開発者の意欲も沸くのにな
xamarinとか糞は買収するくせに
WPFもどっかのライブラリ買収して無料にするとかカッコいいアプリ作れるようにすれば開発者の意欲も沸くのにな
xamarinとか糞は買収するくせに
463デフォルトの名無しさん
2020/06/12(金) 09:43:15.85ID:F8A7CVPb 使い安くなってるか?
余計な手間が増えてるだけだろ?
余計な手間が増えてるだけだろ?
464デフォルトの名無しさん
2020/06/12(金) 15:34:56.34ID:bpI5hVyH465デフォルトの名無しさん
2020/06/12(金) 15:41:17.48ID:6Yfh5mGy ココはMFCの相談室ではないのか・・
466デフォルトの名無しさん
2020/06/12(金) 15:48:58.95ID:1pXOSbLZ Win32APIに対してのMFCは一段上に行ってない
抽象レイヤですらない
抽象レイヤですらない
467デフォルトの名無しさん
2020/06/16(火) 01:13:30.22ID:0JLXIDEj >>466
薄いラッパーみたいなものかねえ
薄いラッパーみたいなものかねえ
468デフォルトの名無しさん
2020/07/06(月) 15:47:04.85ID:Sr9djJNI469デフォルトの名無しさん
2020/07/09(木) 02:40:38.41ID:DFLe4YjA MFCの勉強する前にWindows SDKの勉強した方がいいってまじ?
470デフォルトの名無しさん
2020/07/09(木) 02:48:49.25ID:sSml3bMj 物理を学ぶ前に数学を学んだ方がいい、という程度には。
471デフォルトの名無しさん
2020/07/09(木) 06:41:13.42ID:jzluGOwX MFCとAPIは同時に憶えられるよ
MFCはAPIの極薄ラッパーだかんね
MFC独自の概念、シリアル化とかドキュメントビューとか
APIあんまり関係ないのもあるけどね
MFCはAPIの極薄ラッパーだかんね
MFC独自の概念、シリアル化とかドキュメントビューとか
APIあんまり関係ないのもあるけどね
472デフォルトの名無しさん
2020/07/09(木) 07:45:04.33ID:dSC6yVgi Win32 APIという超レガシーを今更勉強する気が起きるかどうか
昔はこれしかなかったからみんな頑張って勉強したけど
昔はこれしかなかったからみんな頑張って勉強したけど
473デフォルトの名無しさん
2020/07/09(木) 08:04:06.42ID:jzluGOwX 昔からあるというだけ
それで済む用事をわざわざ難しくする必要はない
それで済む用事をわざわざ難しくする必要はない
474デフォルトの名無しさん
2020/07/09(木) 08:40:17.74ID:sSml3bMj 勉強って言ったって、一々全部覚える必要はない
昔はgoogleとかないから名前覚えないと探せない問題はあったけど
今はよく使うものはなんとなく名前を覚えてしまう程度で充分だ
どうせエラーが発生したら調べることになるんだし
頑張るような要素はないと思うが
昔はgoogleとかないから名前覚えないと探せない問題はあったけど
今はよく使うものはなんとなく名前を覚えてしまう程度で充分だ
どうせエラーが発生したら調べることになるんだし
頑張るような要素はないと思うが
475デフォルトの名無しさん
2020/07/09(木) 09:37:01.56ID:vrNDocOm476デフォルトの名無しさん
2020/07/09(木) 09:44:03.82ID:jzluGOwX 大きなお世話ってやつ
477デフォルトの名無しさん
2020/07/09(木) 11:43:28.91ID:x9sAwct8 MFCやWin32APIの勉強なんてさほど必要ないよ。
英単語の暗記のようなものだから。
電話帳を勉強する必要ないのと同じ。
公式ドキュメントに書かれていない問題点や誤解しやすい点など、
先人の労苦をネットで調べるのは意味がある。
英単語の暗記のようなものだから。
電話帳を勉強する必要ないのと同じ。
公式ドキュメントに書かれていない問題点や誤解しやすい点など、
先人の労苦をネットで調べるのは意味がある。
478デフォルトの名無しさん
2020/07/09(木) 11:48:46.31ID:TlzlBxT2 MFCに関わることで起きる問題は
MFCと関わらなければ回避可能
MFCと関わらなければ回避可能
479デフォルトの名無しさん
2020/07/09(木) 12:42:41.81ID:jzluGOwX 女に関わることで起きる問題は
女と関わらなければ回避可能
だろ? おまえの人生は
女と関わらなければ回避可能
だろ? おまえの人生は
480デフォルトの名無しさん
2020/07/09(木) 13:02:23.02ID:vrNDocOm その発想は無かった
481デフォルトの名無しさん
2020/07/09(木) 13:40:50.75ID:g4bG+/bQ 言い当て妙
482デフォルトの名無しさん
2020/07/09(木) 18:36:04.35ID:DFLe4YjA >>475
それを言ったら終わりだよー
それを言ったら終わりだよー
483デフォルトの名無しさん
2020/07/09(木) 18:59:07.47ID:jzluGOwX 本当にそう思ってるやつがこんなとこに来るのは荒らし目的
484デフォルトの名無しさん
2020/07/22(水) 22:44:03.42ID:HWpUtmNc うちの会社新人に研修でMFCやらせるんだけど大丈夫かな……多分創業当初から同じ課題渡してるんじゃないかな……
485デフォルトの名無しさん
2020/07/23(木) 00:35:10.40ID:4rdlbzE6 本番で使ってたらおぞましいが
研修なら反面教師に最適
研修なら反面教師に最適
486デフォルトの名無しさん
2020/07/23(木) 01:36:12.34ID:5yzO6ql9 C++使いがMFC使いたくないのは理解できるが、JavaとかPythonのようなモダン言語使ってる層ならわかりやすくて良いんじゃないの。
487デフォルトの名無しさん
2020/07/23(木) 03:32:15.19ID:5ehZlcbf488デフォルトの名無しさん
2020/08/06(木) 01:38:43.65ID:FpfultlR ほかのC++のGUIライブラリ、例えばATL/WTLが
MFCに比べてそこまで使い勝手いいわけでもないけどな
些細なレベルで文句言ってただけ
MFCに比べてそこまで使い勝手いいわけでもないけどな
些細なレベルで文句言ってただけ
489デフォルトの名無しさん
2020/08/06(木) 04:10:33.67ID:yO4VBBsb OWLは良かったんだけどな
490デフォルトの名無しさん
2020/08/06(木) 10:59:01.65ID:6QU45l4b OWL>>>越えられない壁>>>MFC
だったよな
どうしてこうなった
だったよな
どうしてこうなった
491デフォルトの名無しさん
2020/08/07(金) 12:50:43.79ID:vhK9mMAk これからはWinUI 3が標準になっていきそうだな
492デフォルトの名無しさん
2020/08/31(月) 00:12:50.36ID:FOGtRXGJ C++/CLIとC++/MFCのどちらがいいのだろうか?
C++/CLIはあまりメンテナンスされていないと聞くが
C++/CLIはあまりメンテナンスされていないと聞くが
493デフォルトの名無しさん
2020/08/31(月) 07:16:24.51ID:tHgQtCtq その2つは比べるようなものでもないが?C++/CLIはFormsとMFCどちらも使える。
ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。
ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。
494492
2020/08/31(月) 14:05:28.74ID:FOGtRXGJ >>493
Σ( ̄ロ ̄lll) ガビーン
C++/CLIでMFCも使えるのですか!?
>ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。
これってMSが推奨していないのですか?
Σ( ̄ロ ̄lll) ガビーン
C++/CLIでMFCも使えるのですか!?
>ただしC++/CLIでGUIアプリケーション作るのはもう推奨されなくなった。
これってMSが推奨していないのですか?
495デフォルトの名無しさん
2020/09/01(火) 14:19:37.57ID:/FoUQJki496デフォルトの名無しさん
2020/09/01(火) 15:20:10.83ID:fuWow3G5 無駄
tcl/tk とか Qt とか wxWidgets やれ
tcl/tk とか Qt とか wxWidgets やれ
497デフォルトの名無しさん
2020/09/01(火) 15:55:24.00ID:226bbKWF498デフォルトの名無しさん
2020/09/01(火) 16:08:34.04ID:/FoUQJki >>496
そ・・・そんな・・・
C++で書いたコマンドラインツールをGUIにしたいので、MFCがいいと思ったんですけど
tcl/tkはC++で使えないみたいなので、Qt とか wxWidgets がいいのですか?
しかし、長生きするのはMFCってことはないでしょうか
そ・・・そんな・・・
C++で書いたコマンドラインツールをGUIにしたいので、MFCがいいと思ったんですけど
tcl/tkはC++で使えないみたいなので、Qt とか wxWidgets がいいのですか?
しかし、長生きするのはMFCってことはないでしょうか
499デフォルトの名無しさん
2020/09/01(火) 16:09:14.58ID:/FoUQJki >>497
最初のサンプルからしてVS2019で全然ビルドできないのですけど
最初のサンプルからしてVS2019で全然ビルドできないのですけど
500デフォルトの名無しさん
2020/09/01(火) 16:11:59.40ID:/FoUQJki501デフォルトの名無しさん
2020/09/01(火) 17:04:32.66ID:fuWow3G5 >tcl/tkはC++で使えないみたい
誰がそんな事言ったの?
使えるよ
MFC は無駄
誰がそんな事言ったの?
使えるよ
MFC は無駄
502デフォルトの名無しさん
2020/09/01(火) 17:08:44.94ID:/FoUQJki >>501
そうだとしても何を使えばいいのかわからないよ
そうだとしても何を使えばいいのかわからないよ
503デフォルトの名無しさん
2020/09/01(火) 17:20:12.54ID:ABFUDvdT このサイトの「Win32 Application」でMFCを使うという例はいくらなんでも古すぎるのでは。
Unicodeも一切想定されていないから、標準設定ではコンパイルエラーになりそうだし。
Unicodeも一切想定されていないから、標準設定ではコンパイルエラーになりそうだし。
504デフォルトの名無しさん
2020/09/01(火) 17:25:26.19ID:vLz2GEqc 普通に今でも MFC 使ってるぞ。
505デフォルトの名無しさん
2020/09/01(火) 18:12:23.98ID:/FoUQJki >>503
他に良いMFCの教材があればいいのですが
他に良いMFCの教材があればいいのですが
506デフォルトの名無しさん
2020/09/01(火) 18:33:46.17ID:vLz2GEqc507デフォルトの名無しさん
2020/09/01(火) 18:48:11.66ID:/FoUQJki508デフォルトの名無しさん
2020/09/01(火) 18:48:53.85ID:vLz2GEqc509デフォルトの名無しさん
2020/09/01(火) 18:49:44.51ID:vLz2GEqc510デフォルトの名無しさん
2020/09/01(火) 19:26:13.61ID:x63jWwwu MFC は、unmanaged だろ。
まだ、存在するのか
VC++ か何かで、managed(.NET)から、unmanaged(.NET以外)を呼び出す機構があったような。
.NETのunmanaged拡張(C++/CLI)
まだ、存在するのか
VC++ か何かで、managed(.NET)から、unmanaged(.NET以外)を呼び出す機構があったような。
.NETのunmanaged拡張(C++/CLI)
511510
2020/09/01(火) 19:30:28.41ID:x63jWwwu C++/CLI は、非推奨か
最近のWindows では、C/C++ を、どうやってプログラミングするのだろう?
最近のWindows では、C/C++ を、どうやってプログラミングするのだろう?
512デフォルトの名無しさん
2020/09/01(火) 20:33:34.93ID:i5n1f2G3 >>511
コマンドラインならいくらでもC++を使える。
C++のGUIは選択肢が少なくなっている。
MFCも将来性なさそうだからWindows SDKしか残らなくなるかもね。
あるいは上の方に書かれているサードパーティのGUIを使うか。
Windowsの主要言語はC#やVBになってしまった。
コマンドラインならいくらでもC++を使える。
C++のGUIは選択肢が少なくなっている。
MFCも将来性なさそうだからWindows SDKしか残らなくなるかもね。
あるいは上の方に書かれているサードパーティのGUIを使うか。
Windowsの主要言語はC#やVBになってしまった。
513デフォルトの名無しさん
2020/09/01(火) 20:50:25.12ID:z4ASdXsC514デフォルトの名無しさん
2020/09/01(火) 21:27:13.55ID:vLz2GEqc C++/CLI は非推奨でも、本物の C++ は非推奨な訳ではないだろう。
515デフォルトの名無しさん
2020/09/01(火) 21:27:53.58ID:vLz2GEqc >>511
C++ は、普通に
C++ は、普通に
516デフォルトの名無しさん
2020/09/01(火) 21:28:30.81ID:vLz2GEqc >>511
C++は普通にMFCをVS2019と共に使ってプログラミングすればよい。
C++は普通にMFCをVS2019と共に使ってプログラミングすればよい。
517デフォルトの名無しさん
2020/09/01(火) 22:08:28.50ID:bSJmfpdA .NET のアプリで定番のものって何があるかな
よく使うアプリはネイティブなのばかり
MFC 使ってるのか Win32 直叩きかは知らんけど
よく使うアプリはネイティブなのばかり
MFC 使ってるのか Win32 直叩きかは知らんけど
518デフォルトの名無しさん
2020/09/02(水) 10:34:38.82ID:1e/YSh87 WindowsでC++アプリの定番はWin32ではなくMFC。
日本ではMFCが普及すべき時期に無料のVS Expressが出てきて、
それがWin32のみでMFCには対応してなかった状態で、後から
無料のVS Communityが出てきて、今度は、C++よりC#が
前面に押し出されてしまったため、C++使いがMFCでプログラム
する機会を逃してしまっただけ。
日本ではMFCが普及すべき時期に無料のVS Expressが出てきて、
それがWin32のみでMFCには対応してなかった状態で、後から
無料のVS Communityが出てきて、今度は、C++よりC#が
前面に押し出されてしまったため、C++使いがMFCでプログラム
する機会を逃してしまっただけ。
519デフォルトの名無しさん
2020/09/02(水) 10:37:42.15ID:1e/YSh87 なお、C++の場合、VSの力が最大に生かせるのはMFCであって、Win32ではない。
メニューを処理する関数の作成なども、MFCだとVSによって自動化されているが、
Win32だとされていない。
ダイアログで文字列や数値を扱うDDEも、MFCではVSのサポートを得られるが、
Win32では得られない。
WM_CREATE, WM_SIZE, WM_LBUTTONDOWNなどのメッセージのハンドラ作成も、
MFCだとVSのサポートを得られるが、Win32だと得られない。
メニューを処理する関数の作成なども、MFCだとVSによって自動化されているが、
Win32だとされていない。
ダイアログで文字列や数値を扱うDDEも、MFCではVSのサポートを得られるが、
Win32では得られない。
WM_CREATE, WM_SIZE, WM_LBUTTONDOWNなどのメッセージのハンドラ作成も、
MFCだとVSのサポートを得られるが、Win32だと得られない。
520デフォルトの名無しさん
2020/09/02(水) 11:33:30.85ID:hzf0dQWg オートマとマニュアルみたいなもん
521デフォルトの名無しさん
2020/09/02(水) 12:19:41.42ID:kh3zUZ72 Win32だと手間がかかりすぎる
522デフォルトの名無しさん
2020/09/02(水) 13:08:08.39ID:YtNHOpgs >>507
VSで、MFCのプロジェクトを新規作成すれば、HelloWorld的な
アプリは出来ているのだから、>>495で入門することも可能なはず。
今のMFCと違いがあるなら、それをGoogle検索で調べる。
たとえば、#includeされているヘッダファイルの名前が違っていると思ったら、
二つのファイル名とMFCというキーワードを半角スペースで区切って入れて、
英語モードのGoogleで検索すれば出てくる。
英語モードで検索して出てきたページを、Chromeの右クリックメニューで
出てくる日本語翻訳機能で日本語にして読み、意味が分かりにくければ、
URL欄の右隣に有るボタンから英語に戻して、辞書を引きながら読めばよい。
VSで、MFCのプロジェクトを新規作成すれば、HelloWorld的な
アプリは出来ているのだから、>>495で入門することも可能なはず。
今のMFCと違いがあるなら、それをGoogle検索で調べる。
たとえば、#includeされているヘッダファイルの名前が違っていると思ったら、
二つのファイル名とMFCというキーワードを半角スペースで区切って入れて、
英語モードのGoogleで検索すれば出てくる。
英語モードで検索して出てきたページを、Chromeの右クリックメニューで
出てくる日本語翻訳機能で日本語にして読み、意味が分かりにくければ、
URL欄の右隣に有るボタンから英語に戻して、辞書を引きながら読めばよい。
523デフォルトの名無しさん
2020/09/02(水) 14:16:19.49ID:+vFHXeZw MFCでツイッタークライアントアプリ作ります
524デフォルトの名無しさん
2020/09/02(水) 15:26:47.53ID:2IzEXmVe525デフォルトの名無しさん
2020/09/02(水) 16:27:22.64ID:Wngy4TOD >>524
「新しいプロジェクトの作製」で 「MFC アプリ」を選ぶと、「新しいプロジェクトを構成します」が出てくるので、右下の「作製」ボタンを押すと「MFC アプリケーション - アプリケーションの種類のオプション」
のダイアログが出てくるので、
プロジェクト形式: の場所が、デフォルトでは、「Visual Studio」になっているので
「MFC standard」に直す。こうすると、昔ながらの MFC の Hello World アプリになり、
入門サイトなどは大体これが基本になっている。デフォルトのままだと、入門には適さない。
アプリケーションの種類: は、デフォルトのままでも良いが、昔から作りたいものによって、
よく変更されていたものだから、変えて試して見るといい :
・単一のドキュメント : SDI アプリケーション
・複数のドキュメント : MDI アプリケーション (default)
・ダイアログベース : ダイアログベースアプリケーション
「新しいプロジェクトの作製」で 「MFC アプリ」を選ぶと、「新しいプロジェクトを構成します」が出てくるので、右下の「作製」ボタンを押すと「MFC アプリケーション - アプリケーションの種類のオプション」
のダイアログが出てくるので、
プロジェクト形式: の場所が、デフォルトでは、「Visual Studio」になっているので
「MFC standard」に直す。こうすると、昔ながらの MFC の Hello World アプリになり、
入門サイトなどは大体これが基本になっている。デフォルトのままだと、入門には適さない。
アプリケーションの種類: は、デフォルトのままでも良いが、昔から作りたいものによって、
よく変更されていたものだから、変えて試して見るといい :
・単一のドキュメント : SDI アプリケーション
・複数のドキュメント : MDI アプリケーション (default)
・ダイアログベース : ダイアログベースアプリケーション
526デフォルトの名無しさん
2020/09/02(水) 16:37:24.58ID:kh3zUZ72527デフォルトの名無しさん
2020/09/02(水) 16:44:32.58ID:nYKoGcM/ 推奨されてないね、太古の昔から
俺が参加したmsuセミナーで既にそう言ってた
俺が参加したmsuセミナーで既にそう言ってた
528デフォルトの名無しさん
2020/09/02(水) 17:04:58.98ID:PicHUi2j いまさらMDI
いまさらMFC
いまさらMFC
529デフォルトの名無しさん
2020/09/02(水) 17:22:46.76ID:4SrpfbWk タブのアプリだって、やってることはMDIなのでは?
530デフォルトの名無しさん
2020/09/02(水) 17:45:32.54ID:2IzEXmVe531デフォルトの名無しさん
2020/09/02(水) 17:46:20.46ID:kh3zUZ72 >>528
それを言ったらこのスレッドが不要ってことになるw
それを言ったらこのスレッドが不要ってことになるw
532デフォルトの名無しさん
2020/09/02(水) 17:52:02.17ID:Wngy4TOD533デフォルトの名無しさん
2020/09/02(水) 18:16:21.96ID:nYKoGcM/ >>529
MDIの悪いところを学んで改善したのがタブ
MDIの悪いところを学んで改善したのがタブ
534デフォルトの名無しさん
2020/09/02(水) 18:53:59.86ID:nd/1idBj >>533
MFCのMDIにもタブ機能はあるぞ
MFCのMDIにもタブ機能はあるぞ
535デフォルトの名無しさん
2020/09/03(木) 00:15:47.29ID:fIWixQ3j536デフォルトの名無しさん
2020/09/03(木) 00:27:42.71ID:u9Xqc0gc537デフォルトの名無しさん
2020/09/03(木) 00:38:52.17ID:Fm+qdV+I >>536
別物だけど...
別物だけど...
538デフォルトの名無しさん
2020/09/03(木) 01:12:37.27ID:u9Xqc0gc539デフォルトの名無しさん
2020/09/03(木) 01:14:14.89ID:u9Xqc0gc C++/WinRTもオワコンってことなのか?
540デフォルトの名無しさん
2020/09/03(木) 05:52:40.39ID:yk4FSoXe UWPはオワコンだろうがWinRT自体は普通のデスクトップアプリでも使えるはずだしな。
541デフォルトの名無しさん
2020/09/03(木) 11:40:53.69ID:u9Xqc0gc542デフォルトの名無しさん
2020/09/03(木) 13:04:18.42ID:Ai/K3M0v 今後はWinUI一択だろうね
流行るかどうか次第だと思うけど
C++をまともにサポートしてるのは大きい
流行るかどうか次第だと思うけど
C++をまともにサポートしてるのは大きい
543デフォルトの名無しさん
2020/09/03(木) 13:25:24.02ID:sVY42MJD fzf をコマンドプロンプトにネイティブ対応したほうがはるかに幸せになれる。
544デフォルトの名無しさん
2020/09/03(木) 15:54:33.68ID:fIWixQ3j >541
完全にUWPの時代になるよ
.NET Frameworkが始まった時ってC++がおまけの扱いされてけど、
今回はWindows上にC++のアプリ作ってもらおうとしてる感じがする
乗り遅れるなよ
完全にUWPの時代になるよ
.NET Frameworkが始まった時ってC++がおまけの扱いされてけど、
今回はWindows上にC++のアプリ作ってもらおうとしてる感じがする
乗り遅れるなよ
545デフォルトの名無しさん
2020/09/03(木) 20:15:13.46ID:yk4FSoXe UWPが全然人気ないから方向転換したんだろうが
https://ascii.jp/elem/000/004/014/4014034/
https://ascii.jp/elem/000/004/014/4014034/
546デフォルトの名無しさん
2020/09/03(木) 20:29:01.39ID:fIWixQ3j 方向転換したことに気付かないままMFCを使い続ける人も多いだろう
情報を拡散する人がいないのかな
情報を拡散する人がいないのかな
547デフォルトの名無しさん
2020/09/03(木) 21:02:21.05ID:uE1ENArI >>545
その方向転換がされたらMFCとWinRTと別の環境ができるのかな?
その方向転換がされたらMFCとWinRTと別の環境ができるのかな?
548デフォルトの名無しさん
2020/09/03(木) 21:24:49.19ID:sVY42MJD トグルボタンよりもチェックボックス、という猛者はいないのか
549デフォルトの名無しさん
2020/09/09(水) 16:47:17.22ID:MbQfEtJP WindowsのC++開発環境
Win32 : 情報はそこそこあるけど扱いが面倒
MFC : 今から勉強すると時間をドブに捨てる可能性あり
C++/CLI : 死亡
C++/CX : 死亡
WRL : 死亡
C++/WinRT : MSはこれを推奨しているが、UWPの開発環境なので人気なし
Win32 : 情報はそこそこあるけど扱いが面倒
MFC : 今から勉強すると時間をドブに捨てる可能性あり
C++/CLI : 死亡
C++/CX : 死亡
WRL : 死亡
C++/WinRT : MSはこれを推奨しているが、UWPの開発環境なので人気なし
550デフォルトの名無しさん
2020/09/09(水) 17:12:57.59ID:mnONwWHj C++ で、GUI は作れない
DLL しか作れない
DLL しか作れない
551デフォルトの名無しさん
2020/09/09(水) 19:56:59.87ID:eJCpqUcY いくらMFCの設計がいまいちだからといってもさすがに素のwin32でGUIやる方がよっぽど時間の無駄だわ。
けっきょくC++だと消去法でMFCになるんだよな。
けっきょくC++だと消去法でMFCになるんだよな。
552デフォルトの名無しさん
2020/09/09(水) 20:05:21.71ID:RLRFnFcj553デフォルトの名無しさん
2020/09/09(水) 20:21:09.51ID:XZ4eRuJ2 今ならより軽量なWTLって手もある。MFCはC++コンパイラのtemplate対応が不十分だった時代の遺産だから。
554デフォルトの名無しさん
2020/09/09(水) 20:40:15.31ID:eJCpqUcY >>552
だから消去法だよ。いまさらwin32でやろうとする方がもっと非現実的。
だから消去法だよ。いまさらwin32でやろうとする方がもっと非現実的。
555デフォルトの名無しさん
2020/09/09(水) 20:48:18.25ID:p4Sr79GR まあ、知っておいて損は無いけどな。
じゃないと議論が出来ないからな。
じゃないと議論が出来ないからな。
556デフォルトの名無しさん
2020/09/09(水) 20:52:30.25ID:XZ4eRuJ2 Win32は古典のようなもんだからWindowsアプリ開発初心者なら少しはやっておかないと。
ほんの少しでいい。電話帳を暗記する必要ないのと同じだから。公衆電話のかけ方を学ぶ感じ。
ほんの少しでいい。電話帳を暗記する必要ないのと同じだから。公衆電話のかけ方を学ぶ感じ。
557デフォルトの名無しさん
2020/09/09(水) 21:23:11.56ID:6BCsKsVr >>552
Win32 の WM_KEYDOWN が、MFC の OnKeyDown
Win32 の WM_CHAR が、MFC の OnChar
Win32 の WM_SIZE が、MFC の OnSize
Win32 の WM_PAINT が、MFC の OnPaint() や OnDraw()
Win32 の WM_CREATE が、MFC の OnCreate()
Win32 の WM_DESTROY が、MFC の OnDestroy()
に対応しているので、Win32 の知識は、MFCとほぼ対応している。
その上で、VSのIDEの機能がMFCの方が10倍有って、開発効率は格段に上がる。
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倍有って、開発効率は格段に上がる。
558デフォルトの名無しさん
2020/09/09(水) 21:25:27.57ID:6BCsKsVr >>557
他にも、
WM_LBUTTONDOWN が、OnLButtonDown()
WM_MOUSEMOVE が、OnMouseMove()
WM_NCPAINT が、OnNcPaint() または、OnNcDraw()
に対応している。
WM_COMMANDは、OnCommand()も有ったかも知れないが、
メッセージマップと言う仕組みで、IDEと組み合わせてもっと効率よく
ハンドラを作製できるようになっている。
他にも、
WM_LBUTTONDOWN が、OnLButtonDown()
WM_MOUSEMOVE が、OnMouseMove()
WM_NCPAINT が、OnNcPaint() または、OnNcDraw()
に対応している。
WM_COMMANDは、OnCommand()も有ったかも知れないが、
メッセージマップと言う仕組みで、IDEと組み合わせてもっと効率よく
ハンドラを作製できるようになっている。
559デフォルトの名無しさん
2020/09/09(水) 21:28:56.62ID:6BCsKsVr >>549
Win32より、MFCの方が後発で、C++でWindowsアプリを作るには、後者の
方が定番で、開発効率も高い。
MFCは未だに改良が進んでいる。
たとえば、ドッキング、自動レイアウト関連、リボンなどは、Win32にはなく、
MFC独自。
また、Windowsアプリらしいアプリは、Win32より、MFCの機能を使っている。
商用やプロが作るnativeアプリは、ほとんどがWin32ではなくMFC製。
Win32より、MFCの方が後発で、C++でWindowsアプリを作るには、後者の
方が定番で、開発効率も高い。
MFCは未だに改良が進んでいる。
たとえば、ドッキング、自動レイアウト関連、リボンなどは、Win32にはなく、
MFC独自。
また、Windowsアプリらしいアプリは、Win32より、MFCの機能を使っている。
商用やプロが作るnativeアプリは、ほとんどがWin32ではなくMFC製。
560デフォルトの名無しさん
2020/09/09(水) 21:36:29.29ID:MqfHYfA6561デフォルトの名無しさん
2020/09/09(水) 21:40:13.06ID:MqfHYfA6 ってかこんな書き込みあるスレじゃなかったけど
なにが紛れ込んだんやろか?
ATL/WTLのスレは2年ほど書き込みないがあっちが正常やで
なにが紛れ込んだんやろか?
ATL/WTLのスレは2年ほど書き込みないがあっちが正常やで
562デフォルトの名無しさん
2020/09/09(水) 21:49:28.18ID:MbQfEtJP >>559
自分の場合、MFCを始めようとしても何から始めればいいのか分からないし、もはやMFCをちゃんと解説した本もない。勉強する時間もない。
Win32の方がある意味わかりやすい。オブジェクト指向ではないので、クラス構成を把握する必要もない。小規模な開発なら何とかなると思う。
自分の場合、MFCを始めようとしても何から始めればいいのか分からないし、もはやMFCをちゃんと解説した本もない。勉強する時間もない。
Win32の方がある意味わかりやすい。オブジェクト指向ではないので、クラス構成を把握する必要もない。小規模な開発なら何とかなると思う。
563デフォルトの名無しさん
2020/09/09(水) 21:54:12.58ID:L9rnU3We 今からだと WTL/ATL の情報はあまり拾えないのでは
wxWidgets のようなクロスプラットフォーム狙うか、
いっそ C++ から離れるか
wxWidgets のようなクロスプラットフォーム狙うか、
いっそ C++ から離れるか
564デフォルトの名無しさん
2020/09/09(水) 22:08:55.04ID:XZ4eRuJ2 >>561
最後に書き込んだの私だった(笑)
324 自分:デフォルトの名無しさん[] 投稿日:2018/12/02(日) 09:05:18.31 ID:pHBSzoap
最近、頻繁にWTL10のmasterブランチが更新されているね。
https://sourceforge.net/p/wtl/git/ci/master/tree/
最後に書き込んだの私だった(笑)
324 自分:デフォルトの名無しさん[] 投稿日:2018/12/02(日) 09:05:18.31 ID:pHBSzoap
最近、頻繁にWTL10のmasterブランチが更新されているね。
https://sourceforge.net/p/wtl/git/ci/master/tree/
565デフォルトの名無しさん
2020/09/09(水) 22:12:49.72ID:eJCpqUcY 5chでWTL推してたのは実は一人だけだったと?
566デフォルトの名無しさん
2020/09/10(木) 02:25:17.80ID:h1l1ZP9+ >>562
MFCの場合、まず、IDEを使って、MFCプロジェクトを作るところから始める。
後は、Menuリソースに1つメニュー項目を追加して、それに対するハンドラを作成し、
中でAfxMessageBox()などを使って、ハンドラが呼び出されるのを確認する。
画面は、OnDrawの中でpDC->MoveTo(), pDC->LineTo()で直線を描いてみる。
それが出来たら、さっきのハンドラの中で、Invalidate()を呼び出すテスト。
Invalidate()を呼び出すと、メッセージがメッセージキューにたまりまくっている
場合以外は、比較的即座にOnDraw()が呼び出される。
それで色々いじって試してみるといい。
MFCの場合、まず、IDEを使って、MFCプロジェクトを作るところから始める。
後は、Menuリソースに1つメニュー項目を追加して、それに対するハンドラを作成し、
中でAfxMessageBox()などを使って、ハンドラが呼び出されるのを確認する。
画面は、OnDrawの中でpDC->MoveTo(), pDC->LineTo()で直線を描いてみる。
それが出来たら、さっきのハンドラの中で、Invalidate()を呼び出すテスト。
Invalidate()を呼び出すと、メッセージがメッセージキューにたまりまくっている
場合以外は、比較的即座にOnDraw()が呼び出される。
それで色々いじって試してみるといい。
567デフォルトの名無しさん
2020/09/10(木) 06:03:07.80ID:zeENOEPq そもそも、もうWindows専用アプリを新しく作る事自体、ほとんど需要ないだろ・・
だから、メインとしてAndroid/iOS向けに開発したクロスプラットフォーム向けのアプリで
Windows向けもビルドできるというおこぼれをもらうしかない。
だから、メインとしてAndroid/iOS向けに開発したクロスプラットフォーム向けのアプリで
Windows向けもビルドできるというおこぼれをもらうしかない。
568デフォルトの名無しさん
2020/09/10(木) 06:32:05.44ID:O4HBWdjE FAの世界にはあるんだな。
569デフォルトの名無しさん
2020/09/10(木) 07:10:35.50ID:wdhKSMlq >>554
いや、そんなでもないよ
Win32の手順や概念をクラス化なんて秒殺でできるからな
普通にCで書いてる感覚でクラス化したほうがいいところがあればひょいと
んで、毎度おなじみのコードが出てきたら再使用できるように括り出しておく
それだけのことで非現実的というほど大変なことではない
いや、そんなでもないよ
Win32の手順や概念をクラス化なんて秒殺でできるからな
普通にCで書いてる感覚でクラス化したほうがいいところがあればひょいと
んで、毎度おなじみのコードが出てきたら再使用できるように括り出しておく
それだけのことで非現実的というほど大変なことではない
570デフォルトの名無しさん
2020/09/10(木) 07:14:58.32ID:cx/3z2qx Windowsアプリの需要がないって話はエンドユーザー向けパッケージソフト市場しか見てないんじゃないかな。
571デフォルトの名無しさん
2020/09/10(木) 07:39:42.50ID:zeENOEPq ごめん。そうだな。一般消費者向けの事しか考えてなかった。で、それ以外向けのWindowsアプリの需要はどれくらいあるのか知らんが。
572デフォルトの名無しさん
2020/09/10(木) 11:03:35.58ID:QWaq+avL CADツールとかオープンソースのもいれたら
いまだに新しいものが出てきてるからね
Webだとパフォーマンス出ない分野のツールはまだまだ有効
いまだに新しいものが出てきてるからね
Webだとパフォーマンス出ない分野のツールはまだまだ有効
573デフォルトの名無しさん
2020/09/10(木) 11:12:12.76ID:YCiClA3r 本板のWin32API質問箱スレがいまも活発であることがすべてを物語っているね。
574デフォルトの名無しさん
2020/09/10(木) 12:25:31.10ID:ypm5ktrY MFC とか、Jeffrey Richter とか、何十年前の話
今でも、医療用・産業用ソフトなどは、Windows 限定かも
今でも、医療用・産業用ソフトなどは、Windows 限定かも
575デフォルトの名無しさん
2020/09/10(木) 12:31:20.22ID:cx/3z2qx >>573
年寄りのマウント合戦で盛り上がっているようにしか見えないが。
年寄りのマウント合戦で盛り上がっているようにしか見えないが。
576デフォルトの名無しさん
2020/09/10(木) 12:42:04.34ID:PEh+sMxn 一太郎やPowerDirectorは、今でもMFCアプリだな
昔から大して変わっていないとも言えるが
昔から大して変わっていないとも言えるが
577デフォルトの名無しさん
2020/09/10(木) 14:48:35.32ID:h1l1ZP9+ MSがOfficeやVisioみたいなもので、大半の需要を独り占めしてしまっているので
desktopアプリを食っていくために作ることが難しくなった。
MSが手を出してない分野では、ぎりぎりなんとかなっていることもある。
でも2DグラフィックはAdobe、3DはAutoDeskなんかが強い。
最近は、3Dは、OSSのBlenderもあるから生半可には参入できないが。
desktopアプリを食っていくために作ることが難しくなった。
MSが手を出してない分野では、ぎりぎりなんとかなっていることもある。
でも2DグラフィックはAdobe、3DはAutoDeskなんかが強い。
最近は、3Dは、OSSのBlenderもあるから生半可には参入できないが。
578デフォルトの名無しさん
2020/09/10(木) 14:52:02.07ID:h1l1ZP9+ でも、たとえ、有名ソフトと「かぶっていても」、欲しくなるソフトはある。
でも、有名ソフトが無料化してる場合は辛い。
本等は、完全なダンピングだから、法的な取締りの対象にならなければならないのだが。
Visual Studio Communityはダンピングだから、罰するべきだ。
でも、有名ソフトが無料化してる場合は辛い。
本等は、完全なダンピングだから、法的な取締りの対象にならなければならないのだが。
Visual Studio Communityはダンピングだから、罰するべきだ。
579デフォルトの名無しさん
2020/09/10(木) 14:58:29.69ID:wdhKSMlq 一太郎みたいに学割を設定すればいいのにね
580デフォルトの名無しさん
2020/09/10(木) 14:59:16.88ID:YCiClA3r そんなこといったらAndroid StudioやEclipseもダンピングにならないか?
581デフォルトの名無しさん
2020/09/11(金) 14:33:21.36ID:TREPbbxK Win32は非効率というが、自分には一番理解しやすかった。
C言語なので、Windowsの知識がなくても地道に積み上げながら理解できる。
他の開発環境だとC++クラスライブラリなので、クラスの役割の全体像を把握するまで何もできない。しかもWindowsの前提知識が必要。
C言語なので、Windowsの知識がなくても地道に積み上げながら理解できる。
他の開発環境だとC++クラスライブラリなので、クラスの役割の全体像を把握するまで何もできない。しかもWindowsの前提知識が必要。
582デフォルトの名無しさん
2020/09/11(金) 14:58:07.59ID:Pv6SYq8F >>581
実は、MFCは、Win32の知識がないと深く理解できないので、
MFCを理解するのは、意外と難しい。
しかし、IDE(VS)の支援を豊富に受けられるのはWin32ではなくMFC。
1. メニューリソースをVisual的に作った後、MFCだとハンドラ関数を自動的に作れる。
BEGIN_MESSGE_MAP()〜END_MESSAGE_MAP()の中に、
ON_COMMAND()やON_UPDATE_CMD_UI()みたいなものを自動的に入れてくれて、
対応する関数の雛形を、*.cppと*.hの両方に生成してくれる。
Win32でこれに相当する作業を手作業でするのはとても効率が悪い。
2. OnSize, OnLButtonDown, OnMouseMove, OnChar, OnKeyDown
などのハンドラも、ClassWizardなどから効率よく自動生成できる。
これも、Win32でこれに相当する作業を手作業でするのはとても効率が悪い。
実は、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でこれに相当する作業を手作業でするのはとても効率が悪い。
583デフォルトの名無しさん
2020/09/11(金) 15:55:14.24ID:chzJA6nh >>582
Win32+MFCを習得するのに何年かかるんだ?
Win32+MFCを習得するのに何年かかるんだ?
584デフォルトの名無しさん
2020/09/11(金) 16:04:18.58ID:Cxw4gZ+X 俺はこんなだった
win32: Petzoldの本で1ヶ月
mfc: msuセミナーで2週
win32は少しでもかじってれば、あやふやでもmfcは何とかなる
win32: Petzoldの本で1ヶ月
mfc: msuセミナーで2週
win32は少しでもかじってれば、あやふやでもmfcは何とかなる
585デフォルトの名無しさん
2020/09/11(金) 16:09:34.01ID:xLNh1C0u Win32API
Cの理解が先に出来てたから
イベントドリブンとかメッセージループとか
典型的な描きかただけなら1日で充分理解出来た
全体理解なんて今でもムリポ
MFCも秒
C++とWin32APIを理解してたらそもそも勉強の必要すら無い
Cの理解が先に出来てたから
イベントドリブンとかメッセージループとか
典型的な描きかただけなら1日で充分理解出来た
全体理解なんて今でもムリポ
MFCも秒
C++とWin32APIを理解してたらそもそも勉強の必要すら無い
586デフォルトの名無しさん
2020/09/11(金) 16:09:39.60ID:GJKjt1p6 >>583
何を持って習得と言うかわからないが、
1. HelloWorldは、IDEが作ってくれる。
2. Menu項目の作り方と、ハンドラの作り方は、ネットで検索すると
解説されたものがいくつかあるはず。
3. OnDraw()の中の書き方は、Win32のGDIとCとC++の書き方程度の違い
で、基本的に変わらない。
4. WM_LBUTTONDOWNとOnLButtonDown()などは一対一に対応しているだけで、
Win32と同じ。
5. Dialogのデータ交換DDEは、チュートリアルを読まないと難しい。
解説サイトを読むのは人によるが、速い人は20分とかでも読めるのではないか。
何を持って習得と言うかわからないが、
1. HelloWorldは、IDEが作ってくれる。
2. Menu項目の作り方と、ハンドラの作り方は、ネットで検索すると
解説されたものがいくつかあるはず。
3. OnDraw()の中の書き方は、Win32のGDIとCとC++の書き方程度の違い
で、基本的に変わらない。
4. WM_LBUTTONDOWNとOnLButtonDown()などは一対一に対応しているだけで、
Win32と同じ。
5. Dialogのデータ交換DDEは、チュートリアルを読まないと難しい。
解説サイトを読むのは人によるが、速い人は20分とかでも読めるのではないか。
587デフォルトの名無しさん
2020/09/11(金) 16:11:21.83ID:GJKjt1p6588デフォルトの名無しさん
2020/09/11(金) 16:37:04.91ID:TREPbbxK589デフォルトの名無しさん
2020/09/11(金) 16:46:49.13ID:TREPbbxK >>585
>C++とWin32APIを理解してたらそもそも勉強の必要すら無い
俺はVS2019が新規作成で生成した複雑なプログラム(VS2019はHello worldを生成しない。いきなり複雑なものを生成する)を見て途方にくれたがなー
何から始めればいいのか全く理解できない
>C++とWin32APIを理解してたらそもそも勉強の必要すら無い
俺はVS2019が新規作成で生成した複雑なプログラム(VS2019はHello worldを生成しない。いきなり複雑なものを生成する)を見て途方にくれたがなー
何から始めればいいのか全く理解できない
590デフォルトの名無しさん
2020/09/11(金) 17:13:09.59ID:GJKjt1p6 >>588
作り方がこのスレッドにも出ていたぞ。
作り方がこのスレッドにも出ていたぞ。
591デフォルトの名無しさん
2020/09/11(金) 17:14:10.08ID:GJKjt1p6592デフォルトの名無しさん
2020/09/11(金) 17:32:38.43ID:TREPbbxK >>591
VS2019でその通りにやってみたけどできなかったよ
VS2019でその通りにやってみたけどできなかったよ
593デフォルトの名無しさん
2020/09/11(金) 17:59:56.28ID:+RJnbz7u ID:TREPbbxK の脳内にあるHello Worldアプリが何を指すのか次第な気がする
594デフォルトの名無しさん
2020/09/11(金) 18:06:29.86ID:Cxw4gZ+X mfcは単純にwin32の極薄ラッパーかというとそうでもない
ドキュメントビューとかシリアル化、DDX/DDVなんてのは独自の概念だ
ドキュメントビューとかシリアル化、DDX/DDVなんてのは独自の概念だ
595デフォルトの名無しさん
2020/09/11(金) 19:04:14.74ID:Y8ERPbJh MFCを新たに勉強するのが無理とか言っているような人は他のどの開発環境・
言語でも使えるようになるのは無理だろうし、プログラミングに限らず何をやっても
ダメな人間だと思う。
言語でも使えるようになるのは無理だろうし、プログラミングに限らず何をやっても
ダメな人間だと思う。
596デフォルトの名無しさん
2020/09/11(金) 19:10:08.33ID:+RJnbz7u 今さら公衆電話の使い方なんて覚える必要ないでしょ(キリッ
597デフォルトの名無しさん
2020/09/11(金) 19:33:09.27ID:TREPbbxK598デフォルトの名無しさん
2020/09/11(金) 19:50:12.24ID:+RJnbz7u599デフォルトの名無しさん
2020/09/11(金) 20:10:36.37ID:GJKjt1p6600デフォルトの名無しさん
2020/09/11(金) 20:10:37.20ID:GJKjt1p6601デフォルトの名無しさん
2020/09/11(金) 20:14:22.27ID:GJKjt1p6 >>597
ちゃんと「Standard MFC」に変えた場合、
Hello World という文字は表示されないが、MFCにとっては、それ以上減らせない
程度にシンプルなサンプルが作製される。
オイラもアセンブラでプログラムしていた口だから、人が勝手に用意した
型枠を使うのは余り好きではなかったし、気持ちは分かる。
しかし、MFCでは、原則的にはあれ以上は減らせない。
ちゃんと「Standard MFC」に変えた場合、
Hello World という文字は表示されないが、MFCにとっては、それ以上減らせない
程度にシンプルなサンプルが作製される。
オイラもアセンブラでプログラムしていた口だから、人が勝手に用意した
型枠を使うのは余り好きではなかったし、気持ちは分かる。
しかし、MFCでは、原則的にはあれ以上は減らせない。
602デフォルトの名無しさん
2020/09/11(金) 20:39:40.32ID:+RJnbz7u 開発環境が勝手に作った数々のファイルに埋もれてしまう体験は、なにもMFCに限った話じゃないだろう。
603デフォルトの名無しさん
2020/09/11(金) 20:49:11.08ID:+RJnbz7u Hello Worldの問題点は、出力しか試せないところだね。
ユーザーからの入力がプログラムに反映されるところまで試さないと
プログラマとしてはひと安心できないはず。
ユーザーからの入力がプログラムに反映されるところまで試さないと
プログラマとしてはひと安心できないはず。
604デフォルトの名無しさん
2020/09/11(金) 21:01:25.87ID:nAPZqh6B そもそもGUIアプリでHello,worldって何?w
605デフォルトの名無しさん
2020/09/11(金) 21:20:39.55ID:DA1blzOi SDI形式で、ドキュメント・ビューの仕組みは使わない方が、よりわかりやすいとは思うけどな
606デフォルトの名無しさん
2020/09/11(金) 21:27:53.38ID:+RJnbz7u C#でアプリを作ろうものなら、意味不明なXMLファイルが一緒に生成される気持ち悪さに耐えなければならない。
気持ち悪いのはMFCだけじゃないってこと。こういうもんだと慣れるしかない。
気持ち悪いのはMFCだけじゃないってこと。こういうもんだと慣れるしかない。
607デフォルトの名無しさん
2020/09/11(金) 22:50:01.30ID:3mrNom4D C# も普通のテキストエディタと csc だけ使えば
hoge.cs と hoge.exe しか造られないからすっきり
hoge.cs と hoge.exe しか造られないからすっきり
608デフォルトの名無しさん
2020/09/16(水) 14:43:10.77ID:3ja5x8/R CrystalDiskMark はMFC採用で独自コントローラー(Project Priscilla)まで実装しとる
MFCバリバリ現役じゃん
MFCバリバリ現役じゃん
609デフォルトの名無しさん
2020/09/16(水) 15:11:51.04ID:zy/NdAsc ライブラリの新旧だけで優劣だと思っちまう
浅はかなやつってライブラリで仕事してる人の
苦労が何も解ってないんだろうな
浅はかなやつってライブラリで仕事してる人の
苦労が何も解ってないんだろうな
610デフォルトの名無しさん
2020/09/16(水) 15:43:04.37ID:wZC9/K7G MFCの衰退を見守るスレ
MFCの最期を暖かく見送るスレ
MFC利用者をdisるスレ
MFCの最期を暖かく見送るスレ
MFC利用者をdisるスレ
611デフォルトの名無しさん
2020/09/16(水) 17:39:55.40ID:ZQue+HKY 必死に現役アピールするからおもちゃにされてしまっているw
612デフォルトの名無しさん
2020/09/16(水) 17:57:07.68ID:K+FHyBLB >>608
現役なのは確かだけどオワコンでもあるんだよね
現役なのは確かだけどオワコンでもあるんだよね
613デフォルトの名無しさん
2020/09/16(水) 18:02:53.43ID:iyuoEKtv TortoiseGit とかもmfc使ってる。
614デフォルトの名無しさん
2020/09/16(水) 18:56:19.61ID:g8ss57Sd 良くない側面も持っているが、C++でWindowsプログラムをしようと思ったら、MFCが一番良い選択肢だと思う。
615デフォルトの名無しさん
2020/09/16(水) 18:57:29.78ID:g8ss57Sd 仮にMFCを使わないとなると、VisualStudio を使うとなれば、Win32とC#しか選択肢がなくなる。
それは困る。
それは困る。
616デフォルトの名無しさん
2020/09/16(水) 19:28:09.07ID:ZQue+HKY 他にもあるだろw
617デフォルトの名無しさん
2020/09/16(水) 19:37:21.63ID:lYPT6/er >>616
UWP系は避けたい
UWP系は避けたい
618デフォルトの名無しさん
2020/09/16(水) 20:01:26.47ID:ZQue+HKY もっと情報収集しよ?
こんなんだからMFCじゃなくてMF爺って呼ばれてるんだぞ
こんなんだからMFCじゃなくてMF爺って呼ばれてるんだぞ
619デフォルトの名無しさん
2020/09/16(水) 20:49:32.03ID:0cbcGKkw >>618
おすすめは?
おすすめは?
620デフォルトの名無しさん
2020/09/16(水) 21:09:42.50ID:hOjYK7uQ >>616
でも実例は挙げないで、訊かれても「自分で調べろ」一点張り
でも実例は挙げないで、訊かれても「自分で調べろ」一点張り
621デフォルトの名無しさん
2020/09/16(水) 22:18:56.07ID:iyuoEKtv MFCにない汎用性を求めるなら、いくつか選択肢があるでしょ。
ウィジェット・ツールキット - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB%E3%82%AD%E3%83%83%E3%83%88
ウィジェット・ツールキット - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB%E3%82%AD%E3%83%83%E3%83%88
622デフォルトの名無しさん
2020/09/16(水) 22:23:13.67ID:1VQgoPvh >>618
具体例をあげよ
具体例をあげよ
623デフォルトの名無しさん
2020/09/17(木) 04:59:15.63ID:SW6+Z1Cs >>621
Visual Studioが使えなくなる。
Visual Studioが使えなくなる。
624デフォルトの名無しさん
2020/09/17(木) 12:47:47.90ID:OW2OZx8D Visual Studio で造れるもの
Tcl/Tk
wxWidgets
Qt
その他
Tcl/Tk
wxWidgets
Qt
その他
625デフォルトの名無しさん
2020/09/23(水) 14:11:24.89ID:L2u4imFE 「かんたんVisual C++ 改定2版」という本を見つけたのだが、ダイアログベースのアプリの説明がほとんどでSDIとMDIの説明はちょっとだけ。
MFC Tutorial
https://www.tutorialspoint.com/mfc/index.htm
上の海外のページでもダイアログベースの説明なんだよなあ。
SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
もしかしたらCMultiDocTemplateクラスのせいで自由にレイアウト変更できないの?
MFC Tutorial
https://www.tutorialspoint.com/mfc/index.htm
上の海外のページでもダイアログベースの説明なんだよなあ。
SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
もしかしたらCMultiDocTemplateクラスのせいで自由にレイアウト変更できないの?
626デフォルトの名無しさん
2020/09/23(水) 14:13:15.44ID:YfY3TQQ4 >業務
ωωω
ωωω
627デフォルトの名無しさん
2020/09/23(水) 15:16:33.25ID:wtMA3RXJ 結論的に言えば、以下の本を買えば、昔ながらのMFCのSDI/MDIプログラムは学べるはず。
他にも、4種類くらいの本があり、ダイアログベースのプログラミングなどに詳しい本もあるので
そっちもあわせて見れば、かなりの事が分かるはず。
かんたん Visual C++ [改訂2版] (プログラミングの教科書) (日本語) 単行本(ソフトカバー)
Visual C++の基本の文法を完全網羅。イラスト図解でやさしく解説したMFCの教科書です
2017年10月13日発売, 堀義博 著, A5判/560ページ, 定価(本体2,980円+税)
技術評論社のページに以下の様な目次が出ている :
https://gihyo.jp/book/2017/978-4-7741-9259-8#toc
11章 SDI/MDIアプリケーション
11-01 SDI/MDIアプリケーション
11-02 MDIプロジェクトを作成する
11-03 MDIで画像ファイル表示アプリケーションを作成する
もあるし、
10-01 ダイアログデータエクスチェンジ
10-02 メッセージの処理
10-03 ダイアログデータバリデーション
もあり、見てみたら、MFCの基本的な使い方はかなりちゃんと書いてあるようだ。
5章 コードウィザード
5-01 クラスウィザード
5-02 メンバー関数の追加
5-03 メンバー変数の追加
6章 デバッグ
7章 MFCの基本的なクラス
8章 コモンコントロール
9章 デバイスコンテキスト
他にも、4種類くらいの本があり、ダイアログベースのプログラミングなどに詳しい本もあるので
そっちもあわせて見れば、かなりの事が分かるはず。
かんたん Visual C++ [改訂2版] (プログラミングの教科書) (日本語) 単行本(ソフトカバー)
Visual C++の基本の文法を完全網羅。イラスト図解でやさしく解説したMFCの教科書です
2017年10月13日発売, 堀義博 著, A5判/560ページ, 定価(本体2,980円+税)
技術評論社のページに以下の様な目次が出ている :
https://gihyo.jp/book/2017/978-4-7741-9259-8#toc
11章 SDI/MDIアプリケーション
11-01 SDI/MDIアプリケーション
11-02 MDIプロジェクトを作成する
11-03 MDIで画像ファイル表示アプリケーションを作成する
もあるし、
10-01 ダイアログデータエクスチェンジ
10-02 メッセージの処理
10-03 ダイアログデータバリデーション
もあり、見てみたら、MFCの基本的な使い方はかなりちゃんと書いてあるようだ。
5章 コードウィザード
5-01 クラスウィザード
5-02 メンバー関数の追加
5-03 メンバー変数の追加
6章 デバッグ
7章 MFCの基本的なクラス
8章 コモンコントロール
9章 デバイスコンテキスト
628デフォルトの名無しさん
2020/09/23(水) 15:37:00.18ID:+91dLPIP629デフォルトの名無しさん
2020/09/23(水) 15:45:17.15ID:wtMA3RXJ >>628
この本は、ちゃんと、1つの章を割いているので、別の本のことかと思った。
そもそも、MFCのSDI/MDIは、そんなに高機能ではないので、質問者は勘違いしている
かも知れない。
MFCは、ダイアログベースにすると、割とIDEの機能が強く働いて、
C#のWinFormsと似たようなポトペタ的なプログラミングに近くなるが、
SDI/MDIは、メニュー以外には余り支援が無い。
SD/MDIでも、ダイアログを使えば、ポトペタ的になる。
というか、「Win32 Control」と呼ばれているものは、もともと、
ダイアログに入れた場合にちょうどよく機能するように設計されている。
だから、「ダイアログリソース」なるものがあるが、それ以外では、
独自に全て座標やサイズを指定して出すしかない。
この本は、ちゃんと、1つの章を割いているので、別の本のことかと思った。
そもそも、MFCのSDI/MDIは、そんなに高機能ではないので、質問者は勘違いしている
かも知れない。
MFCは、ダイアログベースにすると、割とIDEの機能が強く働いて、
C#のWinFormsと似たようなポトペタ的なプログラミングに近くなるが、
SDI/MDIは、メニュー以外には余り支援が無い。
SD/MDIでも、ダイアログを使えば、ポトペタ的になる。
というか、「Win32 Control」と呼ばれているものは、もともと、
ダイアログに入れた場合にちょうどよく機能するように設計されている。
だから、「ダイアログリソース」なるものがあるが、それ以外では、
独自に全て座標やサイズを指定して出すしかない。
630デフォルトの名無しさん
2020/09/23(水) 15:49:14.69ID:wtMA3RXJ >>629
普通、どのアプリを見ても分かるが、メインメニューとツールバーがあり、
一行のテキストフィールド(EditBox)や、ボタン、チェックボックス、
コンボボックスなどは、全てダイアログの中に収められていることが多い。
だから、SDI/MDIアプリも、IDEの支援は、ダイアログ以外は、
メニューとツールバーが中心で、後は関数の作製・削除、検索、置換、
デバッグなどに限定される。
というわけで、SDI/MDIプログラムを学ぶと言っても、ポトペタ的な
ものは、ダイアログの部分を学べばよいだけ。
そしてそれに関係するのが、ダイアログデータエクスチェンジ(DDE)。
普通、どのアプリを見ても分かるが、メインメニューとツールバーがあり、
一行のテキストフィールド(EditBox)や、ボタン、チェックボックス、
コンボボックスなどは、全てダイアログの中に収められていることが多い。
だから、SDI/MDIアプリも、IDEの支援は、ダイアログ以外は、
メニューとツールバーが中心で、後は関数の作製・削除、検索、置換、
デバッグなどに限定される。
というわけで、SDI/MDIプログラムを学ぶと言っても、ポトペタ的な
ものは、ダイアログの部分を学べばよいだけ。
そしてそれに関係するのが、ダイアログデータエクスチェンジ(DDE)。
631625
2020/09/23(水) 16:22:00.82ID:L2u4imFE >>629-630
625です。
その本を立ち読みしたのですが、SDI/MDIの部分は本当にペラペラです。
ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
最悪、Win32で作るしかないとは思っていますが。
625です。
その本を立ち読みしたのですが、SDI/MDIの部分は本当にペラペラです。
ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
最悪、Win32で作るしかないとは思っていますが。
632デフォルトの名無しさん
2020/09/23(水) 17:53:31.35ID:YfY3TQQ4 wxWidgets
633デフォルトの名無しさん
2020/09/24(木) 09:52:03.03ID:ipSsIIJF >>631
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から
サンプルとして利用できるプロジェクトが作られる。
Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに
分からない部分をネットで検索して調べるのが基本。
全くサンプルが無いと作るのはほとんど不可能な場合があり、
「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても
過言ではない。
>個人的にはメニューがあって、ウィンドウにツリービューが表示されているようなものを作りたいのですけど、調べてもちっとも分からないんですよね。
VS2019だと、MFC-Projectを作成する際に「Visual Studio」を選ぶと最初から
サンプルとして利用できるプロジェクトが作られる。
Windowsプログラムでは、作り方は、サンプルを参考にして、そこをヒントに
分からない部分をネットで検索して調べるのが基本。
全くサンプルが無いと作るのはほとんど不可能な場合があり、
「SDK」と呼ばれているものの意味や目的の50%は、サンプル集であると言っても
過言ではない。
634デフォルトの名無しさん
2020/09/24(木) 09:58:05.46ID:ipSsIIJF >>631
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
>自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ
は、言語が違うだけで理念はほぼ同じ。
しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。
「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、
SDI/MDIアプリでも生かせる。
SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ
と同様の作法が使えるから。
ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
>ダイアログベースだとメニューがないので、あれは実用にならないのではないでしょうか?
>自分的にはSDI/MDIが実用アプリの基礎であれを改造しないと実用にならないと思っていたのですが、違うのですか?
ダイアログベースアプリも結構見かけて、C#のWinFormsアプリとMFCのダイアログアプリ
は、言語が違うだけで理念はほぼ同じ。
しかし、本格的な「アプリ」を作りたければ、SDI/MDIプロジェクトをベースに作るのが基本。
「ダイアログベース」にしなくても、ダイアログベースアプリの作り方で学んだ知識は、
SDI/MDIアプリでも生かせる。
SDI/MDIアプリの中で、ダイアログを生成することが出来、その時に、ダイアログベースアプリ
と同様の作法が使えるから。
ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
635625
2020/09/24(木) 12:34:17.45ID:CT30hZB8 >>634
>ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
CTreeViewは知っているけど、VSが生成したプログラムにどうやって入れるのかがわからないんですよ。
検索してもちっとも出てこない。英語で検索しても出てこない。
日本語でも英語でもダイアログベースの解説しか出てこないので、ツールボックスからツリービューをダイアログにドラッグ・ドロップしてしか出てこない。
こんなのじゃ役に立たない!
>ウィンドウにツリービューを入れたい場合、CTreeViewまたは、CTreeCtrlを使う。
CTreeViewは知っているけど、VSが生成したプログラムにどうやって入れるのかがわからないんですよ。
検索してもちっとも出てこない。英語で検索しても出てこない。
日本語でも英語でもダイアログベースの解説しか出てこないので、ツールボックスからツリービューをダイアログにドラッグ・ドロップしてしか出てこない。
こんなのじゃ役に立たない!
636デフォルトの名無しさん
2020/09/24(木) 12:49:59.87ID:J7wU0H86637625
2020/09/24(木) 13:35:34.64ID:CT30hZB8 >>636
できましたけど、VIEW/DOCモデルを選択した時しかできないですよね。
VIEW/DOCモデルを使うと、ファイル読み込みと書き込みの対称関係が強制されるので、これも困るというか。
自分が作りたいアプリは、メモリに絶対入らない巨大なファイルを少しずつ処理してエクスポートするものなので、読込・保存の概念がない。
やはりMFCは使わない方がいいのだろうか。Win32にした方がいいかもしれない。
どうしてMFCはWin32みたいに部品を組み合わせていくように作れないのだろう。
できましたけど、VIEW/DOCモデルを選択した時しかできないですよね。
VIEW/DOCモデルを使うと、ファイル読み込みと書き込みの対称関係が強制されるので、これも困るというか。
自分が作りたいアプリは、メモリに絶対入らない巨大なファイルを少しずつ処理してエクスポートするものなので、読込・保存の概念がない。
やはりMFCは使わない方がいいのだろうか。Win32にした方がいいかもしれない。
どうしてMFCはWin32みたいに部品を組み合わせていくように作れないのだろう。
638デフォルトの名無しさん
2020/09/24(木) 13:52:29.54ID:0BhvwOmc class設計がタコだから
class library と名乗るのがそもそも詐欺
ただの win32api wrapper あるいは劣化版
class library と名乗るのがそもそも詐欺
ただの win32api wrapper あるいは劣化版
639625
2020/09/24(木) 14:08:51.69ID:CT30hZB8640デフォルトの名無しさん
2020/09/24(木) 14:30:44.47ID:J7wU0H86 >>637
別に、ドキュメント/ビューの仕組みを使ったら
ファイル全体をメモリ上に読み込まないといけないわけではないけど、
そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、
内部の仕組みを理解する必要が出てくる。
ドキュメント/ビューが抵抗あるなら、使わずにSDIを作成して、
CChildViewの中にCTreeCtrlを載せたりすることもできるけど。
別に、ドキュメント/ビューの仕組みを使ったら
ファイル全体をメモリ上に読み込まないといけないわけではないけど、
そうなると、MFCの標準の処理をいろいろオーバーライドすることになるので、
内部の仕組みを理解する必要が出てくる。
ドキュメント/ビューが抵抗あるなら、使わずにSDIを作成して、
CChildViewの中にCTreeCtrlを載せたりすることもできるけど。
641デフォルトの名無しさん
2020/09/24(木) 14:31:42.32ID:ipSsIIJF >>637
Doc,Viewモデルは、MFCを使うと必ず伴うが、個人的にはほとんど無視してプログラム
している。
無視すると言うのは、Docではなく、全てViewの中にデータを入れたらいい。
イベントを受けるのを、View,Doc,Appのうちから選べるようになっているが、
原則的には全てViewで受けると便利。
MFCは、Doc,Viewモデルで設計されていると言うが、実際には余り使い勝手がよくなくて、
1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
なので、無視していい。
また、プロジェクトを作成後、ClassWizardで、Viewを作れるがその際、
どのViewを作るかを選べるようになっていてTreeViewも作れる。
Win32が使える人はMFCも使える。
MFCは、IDEと連携では便利なだけなので、自分で好きなようにWin32と混ぜて使っていい。
MFC自体、Win32のとても軽いラッパーに過ぎないから。
MFCはソースが付いてくるので、それを見れば、Win32との対応関係が分かる。
Doc,Viewモデルは、MFCを使うと必ず伴うが、個人的にはほとんど無視してプログラム
している。
無視すると言うのは、Docではなく、全てViewの中にデータを入れたらいい。
イベントを受けるのを、View,Doc,Appのうちから選べるようになっているが、
原則的には全てViewで受けると便利。
MFCは、Doc,Viewモデルで設計されていると言うが、実際には余り使い勝手がよくなくて、
1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
なので、無視していい。
また、プロジェクトを作成後、ClassWizardで、Viewを作れるがその際、
どのViewを作るかを選べるようになっていてTreeViewも作れる。
Win32が使える人はMFCも使える。
MFCは、IDEと連携では便利なだけなので、自分で好きなようにWin32と混ぜて使っていい。
MFC自体、Win32のとても軽いラッパーに過ぎないから。
MFCはソースが付いてくるので、それを見れば、Win32との対応関係が分かる。
642デフォルトの名無しさん
2020/09/24(木) 14:37:46.49ID:ipSsIIJF >>639
MFCは、Win32の軽いラッパーであることは、標準見解。
ただし、IDEとの連携がWin32より上手くできているので開発効率は上がる。
理解するのは、実はWin32より難しくなってしまっている部分もある。
しかし、イベントハンドラやメニューハンドラをどんどん追加していく場合の
効率がとても良い。
また、新しいWindowを作る際も、ClassWizardから作るとWin32で自分で
作るより速いことが多い。
メニューにチェック記号を付けたり、グレイ表示にしたい場合も、
MFCは、CCmdUI や、ON_UPDATE_COMMAND_UI()などを自動生成できるので、
効率が良い。
また、Win32だとswitch文でメニューを処理するが、MFCだと、自動生成された関数
で処理するので、大規模なアプリの場合、コードが整理される。
MFCは、Win32の軽いラッパーであることは、標準見解。
ただし、IDEとの連携がWin32より上手くできているので開発効率は上がる。
理解するのは、実はWin32より難しくなってしまっている部分もある。
しかし、イベントハンドラやメニューハンドラをどんどん追加していく場合の
効率がとても良い。
また、新しいWindowを作る際も、ClassWizardから作るとWin32で自分で
作るより速いことが多い。
メニューにチェック記号を付けたり、グレイ表示にしたい場合も、
MFCは、CCmdUI や、ON_UPDATE_COMMAND_UI()などを自動生成できるので、
効率が良い。
また、Win32だとswitch文でメニューを処理するが、MFCだと、自動生成された関数
で処理するので、大規模なアプリの場合、コードが整理される。
643デフォルトの名無しさん
2020/09/24(木) 14:44:39.87ID:ipSsIIJF >>637
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて
MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。
それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて
通れないこともある。
基本的には、フレームワークが想定しているファイルオープンの概念を、
如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。
最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている
かが分かるので、「安全に無視する方法」を探るといい。
MFCの読み込み、保存の概念は、はっきり言って、型にはめられすぎていて
MSが想定した典型的なアプリ以外だと不便だから、実は無視してもいい。
それから、DocTemplateを理解するのがまた難しいが、それはなかなか避けて
通れないこともある。
基本的には、フレームワークが想定しているファイルオープンの概念を、
如何に無視して自分流にしていけるかが、MFCを使う上での重要なポイントになる。
最初は難しいが、MFCはソースがあるので、それをおっていくと、何をやっている
かが分かるので、「安全に無視する方法」を探るといい。
644デフォルトの名無しさん
2020/09/24(木) 15:01:57.18ID:n05mXSO9 Docを無視してViewだけ使うってのは俺もよくやるw
645デフォルトの名無しさん
2020/09/24(木) 15:35:28.03ID:A/uKUrmH >>640-644
うーむ・・・
結局、MFCが提供する仕組みを無視しないと自由にプログラムを組めないのか。
しかも安全に無視するにはMFCの仕組みを熟知しないといけないと。
そんなこと組込一筋の自分にはできそうにないなあ。
今作りたいプログラムを作ったらMFCを使うことは二度となさそうだし、やはりMFCは回避するべきだろうか・・・
頭痛いよ
うーむ・・・
結局、MFCが提供する仕組みを無視しないと自由にプログラムを組めないのか。
しかも安全に無視するにはMFCの仕組みを熟知しないといけないと。
そんなこと組込一筋の自分にはできそうにないなあ。
今作りたいプログラムを作ったらMFCを使うことは二度となさそうだし、やはりMFCは回避するべきだろうか・・・
頭痛いよ
646デフォルトの名無しさん
2020/09/24(木) 15:40:13.30ID:ipSsIIJF >>645
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、
それを守っても余り良いこと無いので、無視してよい、ということ。
なにも、アメリカ人の考えた思想に従う必要は無いのだから。
その当時の彼らはそれが理想だと考えたかも知れないが、それも
どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。
というか、「Doc,Viewは かくあるべき」という設計思想が難しいし、
それを守っても余り良いこと無いので、無視してよい、ということ。
なにも、アメリカ人の考えた思想に従う必要は無いのだから。
その当時の彼らはそれが理想だと考えたかも知れないが、それも
どんどん変化しているし、別の勢力はまた別の設計思想を持っているのだから。
647デフォルトの名無しさん
2020/09/24(木) 15:50:00.97ID:n05mXSO9648デフォルトの名無しさん
2020/09/24(木) 16:08:29.20ID:0BhvwOmc649625
2020/09/24(木) 16:14:40.31ID:CT30hZB8650デフォルトの名無しさん
2020/09/24(木) 16:33:16.74ID:n05mXSO9 >>649
> SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
こう言ってた人が
> PCのプログラミングに力を入れると評価が下がってしまう。
> そうなると知識量が必要なMFCは避けないといけない。やはりWin32にするべきか。
こう言い出す意味がよくわからんのだが
組み込みが本業の人がMFCを何に使うんだろう
基板から送られてくるデータを可視化とか?
シミュレーションや回路設計は専用ソフト使うだけだし
> SDIやMDIを好きに変更できるようにならないと業務に使えないのだが。
こう言ってた人が
> PCのプログラミングに力を入れると評価が下がってしまう。
> そうなると知識量が必要なMFCは避けないといけない。やはりWin32にするべきか。
こう言い出す意味がよくわからんのだが
組み込みが本業の人がMFCを何に使うんだろう
基板から送られてくるデータを可視化とか?
シミュレーションや回路設計は専用ソフト使うだけだし
651625
2020/09/24(木) 16:40:57.87ID:CT30hZB8 >>650
要は力を入れないで業務で使えるGUIのプログラミングをしないといけないということです。
何も分かっていない上司に言われてやっているので、仕方がないのです。
>組み込みが本業の人がMFCを何に使うんだろう
企業秘密なので、詳細は書けない。
データの可視化の一種と言っておく。
要は力を入れないで業務で使えるGUIのプログラミングをしないといけないということです。
何も分かっていない上司に言われてやっているので、仕方がないのです。
>組み込みが本業の人がMFCを何に使うんだろう
企業秘密なので、詳細は書けない。
データの可視化の一種と言っておく。
652デフォルトの名無しさん
2020/09/24(木) 16:49:31.37ID:ipSsIIJF >>651
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。
それをいじくれば、TreeViewは制御できる。
後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。
でも、プロジェクト作成時に「Visual Studio」を選ぶと、プロジェクトを作製した直後から、TreeViewが既に出ているよね。
それをいじくれば、TreeViewは制御できる。
後はメニューに対するハンドラの書き方さえ分かれば、アプリは作れる。
653625
2020/09/24(木) 16:50:34.31ID:CT30hZB8 個人的にはGUIは不要だと思っているのですけどね。
現場で働く派遣社員や外注などのレベル低下でCUIのツールが受け入れられなくなっているってだけでGUIのプログラミングをやるはめになった。
現場で働く派遣社員や外注などのレベル低下でCUIのツールが受け入れられなくなっているってだけでGUIのプログラミングをやるはめになった。
655デフォルトの名無しさん
2020/09/24(木) 16:53:39.81ID:n05mXSO9 >>653
裏でCUIツールを起動するだけ、みたいのだとダイアログベースで充分じゃね?
裏でCUIツールを起動するだけ、みたいのだとダイアログベースで充分じゃね?
657デフォルトの名無しさん
2020/09/24(木) 17:07:39.97ID:n05mXSO9 いちおーSDI用のスケルトンを使って
内容的にはダイアログベースなやつにするとか
ログを記録したり終了時に使用状態をファイルに記憶させるのにDoc使いましたよって
内容的にはダイアログベースなやつにするとか
ログを記録したり終了時に使用状態をファイルに記憶させるのにDoc使いましたよって
658625
2020/09/24(木) 17:26:50.28ID:CT30hZB8659デフォルトの名無しさん
2020/09/24(木) 18:13:53.22ID:luF9hMVl ダイアログベースがダメだと言うなら、>>640の言うように、
Doc/Viewを使わないSDIで、CChildViewに処理を全部入れてしまうのが一番シンプルでは?
Doc/Viewを使わないSDIで、CChildViewに処理を全部入れてしまうのが一番シンプルでは?
660デフォルトの名無しさん
2020/09/24(木) 18:19:58.65ID:VqYlbH9U >640の前段は「ドキュメント/ビューの仕組みを使ったら」だ
ドキュメント/ビューを一切使わないのは簡単
使わないだけ
ダイアログにメニューも普通に付く
「ダイアログ メニュー」でggr
そんなにWin32API直でやりたいならそうすればいいけど
どっちにしろ、猫でものWindows SDK編でも一通りやっといた方がいいよ
MFC使うにしても、「ドキュメント/ビュー」とかのMFC独自のとこ以外は
よく言われるようにWin32APIの薄いラッパだから
ドキュメント/ビューを一切使わないのは簡単
使わないだけ
ダイアログにメニューも普通に付く
「ダイアログ メニュー」でggr
そんなにWin32API直でやりたいならそうすればいいけど
どっちにしろ、猫でものWindows SDK編でも一通りやっといた方がいいよ
MFC使うにしても、「ドキュメント/ビュー」とかのMFC独自のとこ以外は
よく言われるようにWin32APIの薄いラッパだから
661625
2020/09/24(木) 18:59:32.67ID:CT30hZB8 >>659
そこまで判断する知識はまだなくて
>>660
>ダイアログにメニューも普通に付く
そんなことが可能なのですね。
https://www.kazetest.com/vcmemo/dialogmenu/dialogmenu.htm
それならダイアログベースでも可能かもしれません。
Win32についてはそこである程度勉強したのですが、部品を組み立てるような感覚で自由にできるので、下手にMFCに手を出すよりはマシかと思ったわけです。
そこまで判断する知識はまだなくて
>>660
>ダイアログにメニューも普通に付く
そんなことが可能なのですね。
https://www.kazetest.com/vcmemo/dialogmenu/dialogmenu.htm
それならダイアログベースでも可能かもしれません。
Win32についてはそこである程度勉強したのですが、部品を組み立てるような感覚で自由にできるので、下手にMFCに手を出すよりはマシかと思ったわけです。
662デフォルトの名無しさん
2020/09/24(木) 19:15:13.93ID:ipSsIIJF >>658
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。
勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。
Doc/Viewモデルを使うとしても、
CDocument::OnOpenDocument(const char *pszFilename)
が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に
データを読み込めばよい。
CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、
CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。
本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、
好き放題出来る。
別に、Doc/Viewモデルを使っていても、ファイルは好き勝手に読み書きできるよ。
勝手にfopen()して、一部だけ読み込んだりとか普通にやってる。
Doc/Viewモデルを使うとしても、
CDocument::OnOpenDocument(const char *pszFilename)
が呼び出されたときに、fopen()して、fread()して、どこか好きな場所に
データを読み込めばよい。
CDocumentの中に読み込まなくても、グローバル変数に読み込んでも、
CViewの中に読み込んでも、好きなクラスの中に読み込んでも良い。
本当に読み込んだかどうかは、MFCのフレームワークは全く感知しないので、
好き放題出来る。
663デフォルトの名無しさん
2020/09/24(木) 19:16:51.84ID:ipSsIIJF664デフォルトの名無しさん
2020/09/24(木) 19:36:48.02ID:CT30hZB8665デフォルトの名無しさん
2020/09/24(木) 20:48:36.72ID:anZxJGRt666デフォルトの名無しさん
2020/09/24(木) 21:07:02.77ID:sDDeHHJX >>664
「MFCによるWindowsプログラミング」ISBN 475611749X
首都圏在住なら国会図書館で見てこい
ttps://iss.ndl.go.jp/books/R100000002-I000002930291-00
田舎住まいなら尼(ISBNで検索)で\32,580で売ってるから上司に頼んでこれ買ってもらえ
「MFCによるWindowsプログラミング」ISBN 475611749X
首都圏在住なら国会図書館で見てこい
ttps://iss.ndl.go.jp/books/R100000002-I000002930291-00
田舎住まいなら尼(ISBNで検索)で\32,580で売ってるから上司に頼んでこれ買ってもらえ
667デフォルトの名無しさん
2020/09/24(木) 21:20:33.40ID:qMR+aI5t668デフォルトの名無しさん
2020/09/24(木) 21:45:13.19ID:bZ1sVv66 SDIでもCFromViewしか使ったことないナ
669デフォルトの名無しさん
2020/09/25(金) 00:33:44.17ID:mGml3uVc MFC は、数十年前w
Jeffrey Richter とかの時代
Win32 API を、クラスにまとめたもの。
メニューバーも作れる
MFCって、まだ存在するのか
Jeffrey Richter とかの時代
Win32 API を、クラスにまとめたもの。
メニューバーも作れる
MFCって、まだ存在するのか
670デフォルトの名無しさん
2020/09/25(金) 00:48:06.02ID:nCkagqzh WindowsでC++とVisual Studioを使ってデスクトップのプログラムするなら、
今でもMFC以外の選択肢はほぼ無いはずだが、
今でもMFC以外の選択肢はほぼ無いはずだが、
671669
2020/09/25(金) 02:04:10.72ID:mGml3uVc かんたん Visual C++[改訂2版]、堀義博、2017
この本では、.net か、managed C++ か、interop か何かを使っていた。
でも結局、このやり方も、流行らなかったのか
MFC ではなかった気がする
この本では、.net か、managed C++ か、interop か何かを使っていた。
でも結局、このやり方も、流行らなかったのか
MFC ではなかった気がする
672デフォルトの名無しさん
2020/09/25(金) 09:17:50.44ID:nCkagqzh >>667
> > 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
>CDocumentには、UpdateAllViews()という名前の関数があるように、
>複数のビューを関連付けられるぞ。
スマソ。記憶違いがあった。
1つのDocに対して複数のViewは、一応は関連付けられる。
しかし、それはどれも1つのCFrameWndの中に入れておかないといけなくなって
しまっているため、WzEditorの「テキストの二重化」のように、
1つのテキストファイルの別の場所を複数のFrameWndの中に表示するという
ようなことが、MFCでは基本的に出来ないハズ。
> > 1つのDocに対して複数のViewなどをしたくても多分、設計上は出来ない。
>CDocumentには、UpdateAllViews()という名前の関数があるように、
>複数のビューを関連付けられるぞ。
スマソ。記憶違いがあった。
1つのDocに対して複数のViewは、一応は関連付けられる。
しかし、それはどれも1つのCFrameWndの中に入れておかないといけなくなって
しまっているため、WzEditorの「テキストの二重化」のように、
1つのテキストファイルの別の場所を複数のFrameWndの中に表示するという
ようなことが、MFCでは基本的に出来ないハズ。
673デフォルトの名無しさん
2020/10/16(金) 18:08:33.74ID:wvravRFo CTreeCtrlクラスでツリー表示の文字色を部分的に変えたいけど、Windows SDKみたいにカスタムドローしないと無理ゲー?
674デフォルトの名無しさん
2020/11/20(金) 05:11:03.85ID:lrgUTmYU 実際にウィンドウ上に表示している画面をBitmapに画像保存するんじゃなくて、
表示させないで、データだけを元に、連続的に画像保存するってどうやるのかな?
例えば、ボタン1つで、円の位置を連続的に動かしたデータを、
それらをわざわざ画面に表示させないで、連続的に画像に保存したいんだけど、
やり方がわからない。
表示させないで、データだけを元に、連続的に画像保存するってどうやるのかな?
例えば、ボタン1つで、円の位置を連続的に動かしたデータを、
それらをわざわざ画面に表示させないで、連続的に画像に保存したいんだけど、
やり方がわからない。
675蟻人間 ◆T6xkBnTXz7B0
2020/11/20(金) 05:14:55.72ID:7Y8jq4/V >>674
CreateCompatibleDC(NULL)とCreateDIBSectionだろう。DIBビットマップオブジェクトを作成し、DCでそれを選択し、DCで描画する形になる。
CreateCompatibleDC(NULL)とCreateDIBSectionだろう。DIBビットマップオブジェクトを作成し、DCでそれを選択し、DCで描画する形になる。
676デフォルトの名無しさん
2020/11/21(土) 18:08:17.32ID:DvxemaNf >>675
ありがとう、教えてもらったキーワードをググってみます。
ありがとう、教えてもらったキーワードをググってみます。
677デフォルトの名無しさん
2021/01/18(月) 23:31:44.08ID:zaIVxsp1 DialogにCMFCFontComboBoxを張り付け
プロパティの「フォントを使用して描画」をTrueにすると
コンボボックスの行の高さを無視して大きく描画されます。
XX明朝とXXゴシックが縦に重なって描画される感じです。
(ディスプレイ設定で拡大表示している場合のみ)
以前は普通に表示されていた気がするのですが。
良いアイデアがあればお願いします。
プロパティの「フォントを使用して描画」をTrueにすると
コンボボックスの行の高さを無視して大きく描画されます。
XX明朝とXXゴシックが縦に重なって描画される感じです。
(ディスプレイ設定で拡大表示している場合のみ)
以前は普通に表示されていた気がするのですが。
良いアイデアがあればお願いします。
678デフォルトの名無しさん
2021/01/21(木) 23:11:43.50ID:CyPBYCkQ あきらめて素のComboboxで作り直しました。
679デフォルトの名無しさん
2021/02/19(金) 22:39:02.63ID:Igsf+004680デフォルトの名無しさん
2021/02/20(土) 00:53:43.48ID:NHEiPkLm WinUI3ってc++で書かれてるからc++ nativeじゃね??
681デフォルトの名無しさん
2021/02/21(日) 22:41:37.64ID:sZqIhPVp >>679
それだけのことなのにそれをやらないマイクロソフト
それだけのことなのにそれをやらないマイクロソフト
682デフォルトの名無しさん
2021/02/22(月) 07:01:41.68ID:1ohBYlrZ Direct3Dは違うのか?
683デフォルトの名無しさん
2021/03/01(月) 23:14:22.24ID:L7jyZAdw 昔あったCFrameWndのLoadBarStateとSaveBarStateは
何に置き換わったのでしょうか?
CMF…系のツーツバーやステータスバーでは保存&復元されないようです。
何に置き換わったのでしょうか?
CMF…系のツーツバーやステータスバーでは保存&復元されないようです。
684デフォルトの名無しさん
2021/03/26(金) 13:13:22.16ID:zWEWautG MFCより先進的なGUIフレームワークを使いたいならQtとかwxWidgetsを使えってことなのかねえ?
685デフォルトの名無しさん
2021/06/19(土) 20:11:27.16ID:Obm1tdWY >>683
m_pszProfileNameを初期化してる?
m_pszProfileNameを初期化してる?
686デフォルトの名無しさん
2021/06/22(火) 01:17:37.30ID:jHGnhlRq >680
WinUI3には期待している。
WinUI3には期待している。
687683
2021/06/28(月) 15:55:19.44ID:yWrL1Flg688デフォルトの名無しさん
2021/06/28(月) 16:12:02.63ID:DiM7L1Ie >>683
CWinAppEx::LoadStateやCWinAppEx::SaveStateが勝手に呼ばれるはずだけど
CWinAppEx::LoadStateやCWinAppEx::SaveStateが勝手に呼ばれるはずだけど
689683
2021/06/28(月) 17:55:27.02ID:yWrL1Flg 解決しました
VS2005で作ったソースをVS2019に移植する際
CWinAppをCWinAppEx
CToolbarをCMFCToolBar
のような作業をやったんだけど
CMainFrameからCFrameWnd::(Exなし)の関数を呼んでたのが原因でした
お恥ずかしい。レスくれた方、ありがとうございました。
VS2005で作ったソースをVS2019に移植する際
CWinAppをCWinAppEx
CToolbarをCMFCToolBar
のような作業をやったんだけど
CMainFrameからCFrameWnd::(Exなし)の関数を呼んでたのが原因でした
お恥ずかしい。レスくれた方、ありがとうございました。
690デフォルトの名無しさん
2021/09/15(水) 12:15:47.57ID:jggBe0Ff691デフォルトの名無しさん
2021/09/15(水) 21:06:18.05ID:u4qV17E7 WinUIは普通にXAML使うが。
692デフォルトの名無しさん
2021/09/16(木) 19:46:16.94ID:yaf4gWdF WPFでもXAMLからコード吐いてるぞ?
693デフォルトの名無しさん
2021/09/16(木) 22:38:06.15ID:vfYN11/r bamlになるだけでコードを吐いたりはしないと思うが?.xaml.cs と混同してる?
694デフォルトの名無しさん
2021/09/19(日) 17:56:08.37ID:k97hf5Wx そうか勘違いか
695デフォルトの名無しさん
2021/09/25(土) 10:57:19.73ID:jFY/PXLr せめてダークモードのテーマ用意して下さい
696デフォルトの名無しさん
2021/10/30(土) 10:54:38.33ID:MPYyHG36 BCGのほうはダイアログや埋め込みスクロールバーもダークテーマにできるんだよなぁ
697デフォルトの名無しさん
2022/03/15(火) 08:26:51.33ID:RM1ltBr1 BCGはロシアのセンペテロブルグだったね。
ドル建てで売ってるからウクライナ侵攻の対ロ経済制裁の影響を受けて倒産とかはなさそうだな。
ドル建てで売ってるからウクライナ侵攻の対ロ経済制裁の影響を受けて倒産とかはなさそうだな。
698デフォルトの名無しさん
2022/03/31(木) 10:44:02.36ID:Jyr8BV0e699デフォルトの名無しさん
2022/04/02(土) 21:39:19.21ID:1+ihffDV700デフォルトの名無しさん
2022/04/03(日) 10:10:08.68ID:cIyOxh+4 BCGは次のバージョンでPer Monitor DPIに対応すると予告していて、ちょっと興味ある
701デフォルトの名無しさん
2022/04/28(木) 07:46:47.14ID:2+PIOWFw BCGは新バージョンのベータ版アナウンスしたし、経済制裁の影響は大してないのかも。
702デフォルトの名無しさん
2022/05/19(木) 18:06:24.38ID:VJOjo1jQ ツベルクリン反応
703デフォルトの名無しさん
2022/06/01(水) 11:16:30.11ID:ENbHFSWO マイクロソフト社がフライドチキン業界に進出したらどんな略称になるんだろう?
704デフォルトの名無しさん
2022/06/05(日) 21:36:12.13ID:re3nd4/n サッカークラブも含めてMSFCの可能性もあり得た
705デフォルトの名無しさん
2022/06/27(月) 13:08:04.25ID:Yq/DwuXq mfcのactivexコントロールの良書教えて下さい
706デフォルトの名無しさん
2022/10/26(水) 22:05:25.04ID:IeA8a0h8 MFCで画像閲覧ソフトを作成しています。
ウィンドウのサイズを変更すると画像が消えてしまいます。
なぜなのかさっぱり検討が付きません。
https://ideone.com/Gn0AsK
ウィンドウのサイズを変更したときにOnPain()が呼ばれることは確認済みです。
また、OnPaint()内の
cbmp = CBitmap::FromHandle(m_image);
の部分を
CImage image;
image.Load("画像データ");
cbmp = CBitmap::FromHandle(image);
のように決め打ちで画像データを表示すると画面サイズを変更しても画像が消えません。
なにか良い手はないかご提示宜しくお願い致します。
ウィンドウのサイズを変更すると画像が消えてしまいます。
なぜなのかさっぱり検討が付きません。
https://ideone.com/Gn0AsK
ウィンドウのサイズを変更したときにOnPain()が呼ばれることは確認済みです。
また、OnPaint()内の
cbmp = CBitmap::FromHandle(m_image);
の部分を
CImage image;
image.Load("画像データ");
cbmp = CBitmap::FromHandle(image);
のように決め打ちで画像データを表示すると画面サイズを変更しても画像が消えません。
なにか良い手はないかご提示宜しくお願い致します。
707706
2022/10/26(水) 22:08:37.07ID:IeA8a0h8 すいません、環境を書くのを忘れていました。
Windows 10 Home 22H2 (64bit)
Microsoft Visual Studio Community 2019 Version 16.11.20
何卒宜しくお願い致します。
Windows 10 Home 22H2 (64bit)
Microsoft Visual Studio Community 2019 Version 16.11.20
何卒宜しくお願い致します。
708デフォルトの名無しさん
2022/10/27(木) 01:28:58.14ID:6HC7kWqW 「mfc onpaint WM_PAINT」で検索してみれば?
MFC とか、こういうのは初心者がやるものじゃない。
たぶん、仕組みを理解するだけでも、10年以上掛かる
MFC とか、こういうのは初心者がやるものじゃない。
たぶん、仕組みを理解するだけでも、10年以上掛かる
709デフォルトの名無しさん
2022/10/27(木) 03:07:34.48ID:niMWpG44 良い手も何も、そういうものだと思うしかない
OnPaint()で描けばいいだけ
いつウインドウがinvalidateされるのか、アプリケーションプログラマが完璧に把握することはたぶんできないし
しても意味はあまりない
OnPaint()で描けばいいだけ
いつウインドウがinvalidateされるのか、アプリケーションプログラマが完璧に把握することはたぶんできないし
しても意味はあまりない
710デフォルトの名無しさん
2022/10/27(木) 05:57:41.65ID:+UGgATct 10年のうち、もう8~9年経っている感じだね
711デフォルトの名無しさん
2022/10/27(木) 22:03:00.16ID:gaUWFwsd712デフォルトの名無しさん
2022/10/27(木) 22:03:59.35ID:gaUWFwsd >>ミスりました…
>>708-710
>>708-710
713デフォルトの名無しさん
2022/10/31(月) 11:29:06.13ID:ENWdRL/8 >>706
そもそも、
cbmp = CBitmap::FromHandle(m_image);
で取得したものを
cbmp->DeleteObject();
で破棄しているのが原因では。
これだと1回目の描画のときにm_imageが破棄されて、
2回目以降は描画されないかと。
そもそも、
cbmp = CBitmap::FromHandle(m_image);
で取得したものを
cbmp->DeleteObject();
で破棄しているのが原因では。
これだと1回目の描画のときにm_imageが破棄されて、
2回目以降は描画されないかと。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ブラジル人研究者「日本はとても安全な国。だから私はここに移住したい」 翌日、千葉県でスリランカ人に殺される [お断り★]
- 【映画】165億円の赤字か 米ディズニー「白雪姫」実写版、大型連休中の日本でも上映打ち切り [ネギうどん★]
- 【大阪・関西万博】来場者数きのう=5日『12万人1千人』(関係者1万7千人含む) [少考さん★]
- 【自主回収】「あんまん」に「肉まん」が混入1314パックを自主回収「肉まん」に「あんまん」が混入の可能性もあり [おっさん友の会★]
- 【MLB】大谷翔平、新加入の“韓国の至宝”活躍を祝福にネット胸アツ! 「泣けてくる」「スポーツに国境なんてない!」 [冬月記者★]
- 生活保護「持ち家を売らないと受けられない」はウソ…役所やネット上の言葉をうのみにする前に…知っておきたい“実際の法制度” [おっさん友の会★]
- ⭐👊😁👊🏡👊😁👊⭐
- 【実況】博衣こよりのえちえちサルゲッチュクリア耐久🧪
- キィー🐢💢🏡
- 【石破悲報】元力士の店主がつくる相撲部屋のまかない飯(スタミナもつ丼890円)、変わり果てた姿で発見される [126042664]
- 【速報】中川翔子さん、双子を妊娠していたwwwwww
- 【悲報】西田昌司さん、結構大ごとになる。自民沖縄県議も「怒り心頭。政治家としての資質自体に問題があるのでは」 [196352351]