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

■ このスレッドは過去ログ倉庫に格納されています

MFC相談室 mfc22d.dll

1 :デフォルトの名無しさん:2011/09/15(木) 18:52:27.68 .net
Microsoft Foundation Classライブラリ専用スレです。

■MFC相談室 mfc21d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1250919279/l50
■MFC リファレンス■
http://msdn.microsoft.com/ja-jp/library/d06h2x6e(v=VS.100).aspx

2 :デフォルトの名無しさん:2011/09/15(木) 19:41:23.34 .net
MFC リファレンス(専ブラ用)
http://goo.gl/PQkAC

3 :デフォルトの名無しさん:2011/09/15(木) 19:46:09.28 .net
http://msdn.microsoft.com/ja-jp/library/d06h2x6e%28v=VS.100%29.aspx

まぁこれでもいけるんですけどね
そろそろしつこいから消えますねノシ

4 :デフォルトの名無しさん:2011/09/18(日) 00:38:47.20 .net
環境は VS2010 use MFC / Windows 7です。

DLL 側でグローバル変数をこのように定義しています
__declspec(dllexport) extern CString hoge[4];

EXE 側でその変数をこのように定義しています
__declspec(dllimport) CString hoge[4];

ビルドすると下記の警告が出てしまいます、そして実行すると、

「xxx.exe の 0x00fa807b でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xfffffff4 を読み込み中にアクセス違反が発生しました。」
経験的に、このエラーの場合アクセスバイオレーションの可能性が高いと思うのですが
グローバル変数のインポート、エクスポートの仕方は間違っていないでしょうか?

警告の内容:
warning C4273: 'hoge' : dll リンクが一貫していません。
'hoge' の前の定義を確認してください

5 :デフォルトの名無しさん:2011/09/18(日) 02:02:09.56 .net
>>4
日本語を勉強して理解できるようになったら、該当するエラーコードをドキュメントで調べる。
それができたら、該当エラーを修正する。
馬鹿は氏ね。

6 :デフォルトの名無しさん:2011/09/18(日) 14:17:26.20 .net
VC6で作成したリソースファイルをVC10は利用できますか?

7 :デフォルトの名無しさん:2011/09/18(日) 14:30:02.01 .net
使えるけど馬鹿には無理かも

8 :デフォルトの名無しさん:2011/09/18(日) 21:00:35.58 .net
>>6
使える。
VisualStudio2010持ってないなら評価版落として試してみるといいよ。

9 :名無し募集中。。。:2011/09/18(日) 21:48:03.42 .net
ただし評価版はMFCが使えないんだけどな

10 :デフォルトの名無しさん:2011/09/18(日) 21:55:11.75 .net
>>9
使えないのはEEだろ、馬鹿が

11 :名無し募集中。。。:2011/09/18(日) 22:35:13.95 .net
Ouch!

12 :デフォルトの名無しさん:2011/09/19(月) 00:15:03.37 .net
試用期間があるだけ
MFCが使えないののはEEのほうじゃないのか

13 :デフォルトの名無しさん:2011/09/19(月) 00:45:09.34 .net
>>12
直前のレスすら読まない、おまえが一番使えない

14 :デフォルトの名無しさん:2011/09/19(月) 23:14:37.52 .net
別に使われてない

15 :デフォルトの名無しさん:2011/09/21(水) 19:55:08.93 .net
>>13
バカは黙れ

16 :デフォルトの名無しさん:2011/10/14(金) 12:31:49.04 .net
VS2005、SDIにてエクスプローラの詳細風の画面を作成中です。
ツリービューの方は表示できたのですが、リストビューが上手く表示できません。
Insertcolumnにてカラムを追加して、戻り値は正常なのですが、
追加後にgetcolumnすると戻り値がfalseになっている状態です。
解決方法んを教えていただけないでしょうか?

17 :デフォルトの名無しさん:2011/10/14(金) 14:24:24.83 .net
ソースを出さずにバグを指摘しろとエスパー募集

18 :デフォルトの名無しさん:2011/10/14(金) 18:59:00.79 .net
LVCOLUMNの中身を真面目に初期化していないとかじゃね?

19 :デフォルトの名無しさん:2011/10/14(金) 19:57:48.56 .net
16です。
ソースがなくて申し訳ないです。
下記のページ丸写しと考えて下さい。
http://www.g-ishihara.com/mfc_sd_03.htm

現状として、新しくプロジェクトを作成したときは上手くできたのですが、
分割ウインドウにしたらできませんでした。

20 :デフォルトの名無しさん:2011/10/14(金) 20:15:36.37 .net
>>19
ちまちまエラーの確認する位ならさっさと例外投げろや糞が、とか思ってしまった。
というか、GetColumnの呼び出しがそのページのどこにも無い件について。

21 :デフォルトの名無しさん:2011/10/14(金) 20:32:17.56 .net
Getcolumnに関しては、insert後にチェックとして私が追加しました。
ソースの変更はそこのみです。

22 :デフォルトの名無しさん:2011/10/14(金) 20:38:48.49 .net
で、cchTextMaxを設定しないまま、
フラグもそのままに呼び出した、と。

23 :デフォルトの名無しさん:2011/10/14(金) 22:18:32.03 .net
はい。
でも文字列を設定すれば必要ないのではないのですか?

24 :デフォルトの名無しさん:2011/10/15(土) 07:49:33.26 .net
最大文字数を負の値で指定されても対応に困るだろ?
デバッグ環境だと0xCCで埋められているだろうから、
-858993460文字にでもなってるんじゃねw

25 :デフォルトの名無しさん:2011/10/15(土) 13:46:25.74 .net
なるほど。
じゃあ新しくプロジェクトを作成して出来たのは
たまたまだったと言うことですね。

26 :デフォルトの名無しさん:2011/11/22(火) 07:49:51.88 .net
質問です。

VS2005で作ったダイアログベースのプログラムなんですが、
プログラム起動時に表示されるダイアログから新しい別の
ダイアログをDoModal()で表示させる際に、元のダイアログを
ShowWindow(SW_HIDE)で非表示にしています。
しかしこのプログラムをWindows7上で実行した場合、たとえ
ShowWindow(SW_HIDE)でいったんは非表示にできたとしても、
タスクバー上のプログラム名をクリックしたりした場合などに、
非表示にしたはずのダイアログが表示されてしまいます。
これを防いで非表示のままにする方法について、、あるいは、
システムがこのようにダイアログを勝手に表示させようとする
時にプログラム側で呼び出されているハンドらか何かについて、
お教えいただけないでしょうか。

27 :デフォルトの名無しさん:2011/11/22(火) 09:28:42.54 .net
>>26
7での動作は知らないけれど、
親を隠した状態で子をモーダルで出したいということであれば、
自分はよくSetWindowRgn()を使ってる。

SetWindowRgn(CreateRectRgn(0, 0, 0, 0), TRUE);
別のダイアログ.DoModal();
SetWindowRgn(NULL, TRUE);


28 :デフォルトの名無しさん:2011/11/22(火) 20:29:25.73 .net
>>27
その方法でできました。Windows7でも問題なく非表示を維持
できるようです。ありがとうございました。

関連して新しい質問なのですが、現在のダイアログから別の
ダイアログをDoModal()で表示したとき、その拡張スタイルに
WS_EX_APPWINDOWが指定されていれば、タスクバー上に
新しいダイアログのボタンが表示されるので、それを押して
最小化することができますが、しかし同時にタスクバー上の
ボタンが元ダイアログと新ダイアログとで別々に2つ表示されて
しまいます。
逆に、新ダイアログについてWS_EX_APPWINDOWの指定が
外れていれば、タスクバー上のボタンは元ダイアログのもの
1つだけしか表示されませんが、そのボタンを押しても最小化
することができなくなります。
タスクバー上のボタンを1つだけ表示させて、かつそのボタンを
押すことで新しいダイアログを最小化できる方法は無いでしょうか?
ModifyStyleExで元のダイアログのほうからWS_EX_APPWINDOWを
取り除くことも試してみましたが、うまく機能しませんでした。

29 :デフォルトの名無しさん:2011/11/23(水) 16:09:42.12 .net
CFrameWndExにドッキングしたCPaneDialog派生のウィンドウ
サイズを固定にすることってできますか?

CFrameWndExに固定サイズのダイアログバーが付けれれば他の
方法でも良いのですが。

30 :デフォルトの名無しさん:2011/11/29(火) 22:05:50.67 .net
アプリケーションを最小化して元に戻すときのイベントって何があるんでしょうか?

最小化したときにタスクバーをクリックしても
元のサイズに戻らなくなってしまう不具合が出てしまって
現在対処中です

元のサイズに戻すイベントがどれかわからずまったく修正のしようがない状態です

31 :デフォルトの名無しさん:2011/11/29(火) 22:09:57.46 .net
Googleで調べてみたところ

// 元のサイズに戻す
AfxGetMainWnd()->PostMessage(WM_SYSCOMMAND, SC_RESTORE);

こんなコードがヒットしたので「RESTORE」でプロジェクトを検索したところ何もヒットしませんでした。

32 :デフォルトの名無しさん:2011/11/30(水) 10:14:45.40 .net
自分で追加しないとプロジェクトには何もないでしょう

33 :デフォルトの名無しさん:2011/11/30(水) 19:07:21.63 .net
>>30
WM_SIZEのwParam見れ

34 :デフォルトの名無しさん:2011/12/01(木) 07:55:06.52 .net
CStringに書式指定(%-04dとか%sとか)を含む文字列が含まれている場合、
その書式指定の部分だけを抽出した部分文字列を得る良い方法ってありますか?

自分でも、'%'が出てこないかFindして出てきた位置の次に最初に'd'や's'が出てくる位置を
それぞれ見つけてきて、その位置の間の長さが最も短くなる部分文字列を取ればいい、
というアルゴリズムは思いつきますが、書式指定子('d'や's')をきちんと網羅できてないと
バグの原因になるのではないかと思い、もしかすると同じコードを今後も流用する可能性が
あることを考えると、より安全確実に実施できる方法が関数として既に用意されているなら
それを利用したいと考えています。

何か良い方法があればご教授ください。

35 :デフォルトの名無しさん:2011/12/01(木) 08:18:17.34 .net
書式指定の部分はprintfなんかと同じ方法でいいと思うけど
何が問題なのか意味不明

36 :デフォルトの名無しさん:2011/12/01(木) 08:37:22.03 .net
えーと'%-04d'とかを、(引数が代入されないままの)そのままその部分だけ取得したい、ということです。

37 :デフォルトの名無しさん:2011/12/01(木) 09:44:49.41 .net
>>34
なんでそこだけを抽出したいの?
全ての書式指定子を網羅的に扱いたいならprintf()(の下請け)がやっている筈の構文解析をやるしかなくなるけど。
例えば、"%2$*1$lld"みたいなものも扱うのかって問題もあるし。

38 :デフォルトの名無しさん:2011/12/02(金) 07:54:32.78 .net
>>37
書式指定を含む文字列に引数を代入する場合、単に代入するだけじゃなくて
変換もかかるので、その引数が代入された後にどういう部分文字列になる
のかを見たい、というのが目的で、具体的には、書式指定を含む任意の
文字列とそこに代入されるべき可変個数引数が与えられた時に各引数の
代入された後の姿(部分文字列)をCStringArrayに格納したい、というのが
直接的にやりたいことです。そのために元の文字列の書式四手が現れる
位置(とその個数)を予め知っておきたい、ということです。

39 :デフォルトの名無しさん:2011/12/02(金) 10:23:41.35 .net
VC持ってるならCRTのソースが入ってるでしょ
解析すればよろし

40 :デフォルトの名無しさん:2011/12/02(金) 10:29:15.05 .net
>>38
なんだかよく判らんが、変換前と変換後を比較すればいいんじゃないのか?

41 :デフォルトの名無しさん:2011/12/02(金) 12:49:55.30 .net
それはそれで大変でしょ
変換前と変換後が一緒だったら検出出来ないし
"%s"が"%s"に置き換わったら無理

42 :デフォルトの名無しさん:2011/12/02(金) 20:32:49.53 .net
>>39
見てみたところ crt/src/output.c と crt/src/input.c に記述されている
_output と _input という関数が、それぞれprintf系とscanf系の実体の
ようで、いずれも愚直に1文字ずつポインタをずらし値をチェックしていき
書式指定を抽出しようとする泥臭い処理になってました。
ここのチェックの処理が関数として独立してくれていればそれを利用して
コードを書くこともできるんですが、現時点では残念ながらこれらの処理を
まるまるコピペして使うしかなさそうです。

43 :デフォルトの名無しさん:2011/12/06(火) 13:35:24.63 .net
VC2008でXPを使用しています。
MFCアプリでOnPaintで描画をしている以下の2つのケースで
ケースAの方だけ描画がされなくなります。
処理はちゃんと走っているのに
最初はちゃんとひょうじされているのに
回数を重ねるとまったく表示されなくなります。
いったいなぜなんでしょうか?同じプログラムに見えるのに。。。

ケースA
for(i = 0;i < 30;i++)
{
pFont = (CFont *)dc.SelectObject(&font);
dc.DrawText(...略);
dc.SelectObject(pFont);
}


ケースB
pFont = (CFont *)dc.SelectObject(&font);
for(i = 0;i < 30;i++)
{
dc.DrawText(...略);
}
dc.SelectObject(pFont);


44 :デフォルトの名無しさん:2011/12/06(火) 14:30:52.31 .net
再現する最小コードを貼るべき

45 :片山博文MZ ◆0lBZNi.Q7evd :2011/12/06(火) 14:55:23.54 .net
>>28 モードレスダイアログ

46 :デフォルトの名無しさん:2011/12/06(火) 15:20:57.90 .net
>>43
フォントオブジェクトの寿命。

47 :デフォルトの名無しさん:2011/12/06(火) 15:41:56.43 .net
>最初はちゃんとひょうじされているのに
>回数を重ねるとまったく表示されなくなります。
GDIオブジェクトのリークが怪しい


48 :デフォルトの名無しさん:2011/12/06(火) 22:01:26.55 .net
>>43
なんか、そこだけじゃなくて、その外側に問題がありそうな希ガス。


49 :デフォルトの名無しさん:2011/12/08(木) 13:53:05.97 .net
VC2005のバグじゃないかと思うんだけど、OnBnSetfocusButtonに入ってこない。
再現させるプロジェクトの作成は簡単。

1.MFCアプリをダイアログベースで新規作成。
2.ダイアログにButton1を載せる。
3.そのButton1を右クリックで、「イベントハンドラの追加」→BN_SETFOCUSを選んで、「追加して編集」。
4.OnBnSetfocusButton1()ができるので、そこにMessageBoxでも書いておく。

これで実行するとダイアログ上には、OK、キャンセル、Button1の3つのボタンがあり、
タブキーでフォーカスを移動していってButton1がフォーカスされても、OnBnSetfocusButton1()の中の処理が実行されない。

これは明らかなバグだよね?
このバグはCButtonだけで、CEditの場合はうまくいくんだ。

50 :片山博文MZ ◆0lBZNi.Q7evd :2011/12/08(木) 13:54:50.22 .net
>>49 BS_NOTIFYスタイルが必要。

51 :デフォルトの名無しさん:2011/12/08(木) 14:07:58.82 .net
>>50
おお!
感謝します!

52 :片山博文MZ ◆0lBZNi.Q7evd :2011/12/08(木) 14:10:17.46 .net
>>51 リファレンスに記載済み。今度質問するときは確認しな。

53 :デフォルトの名無しさん:2011/12/08(木) 14:15:17.59 .net
BS_NOTIFY つけてる?

54 :デフォルトの名無しさん:2011/12/19(月) 11:26:22.88 .net
質問です。
ロケールを動的に変更する方法ってありますか?
例えばAfxMessageBox("・・・", MB_YESNO)を実行した際のダイアログ上の
ボタン表示を「Yes/No」だったり「はい/いいえ」だったりと変更したいのですが。

55 :デフォルトの名無しさん:2011/12/19(月) 13:48:02.54 .net
モードレスダイアログの場合、コンストラクタの「CWnd* pParent」って意味あります?
Createでも指定させるなら、このコンストラクタは無意味ですよね?

56 :デフォルトの名無しさん:2011/12/19(月) 19:08:09.09 .net
突然失礼します。
下記のコードを記述し、WindowsXP及びWindows7で同様のファイルを指定したところ
XPでは正常に動作しますが、7ではファイルを開くことができません。
どなたか原因が分かる方いらっしゃいましたらご教授お願いします。

If(!file.open(fn, CFile::modeRead|CFile::typeBinary)) return FALSE

57 :デフォルトの名無しさん:2011/12/19(月) 19:36:20.03 .net
とりあえずCFileExceptionを受け取るようにしてみたら?

58 :デフォルトの名無しさん:2011/12/19(月) 19:40:10.03 .net
>>55
モードレスダイアログの場合は、
引数無しのコンストラクタを使う決まりになっている。

59 :デフォルトの名無しさん:2011/12/19(月) 19:54:52.76 .net
>>57
ご返信ありがとうございます。
CFileExceptionの値は2になっており、どうやらファイルが存在しないというエラーのようです。
具体的には、フォルダダイアログからファイルを選択しているにも関わらず、m_strFileNameのフォルダ名部分が書き変わらないようなのです。
当該現象はXPでは発生しておりません。
なぜWindows7でのみ発生するのでしょうか。
使用環境は両OS共にVisual Studio2008です。
何か心当たりがある方、宜しくお願いします。



60 :デフォルトの名無しさん:2011/12/19(月) 20:40:25.63 .net
>>59
m_strFileNameって何?
ファイル名はCFileDialog::GetPathName()で取得したの?

61 :デフォルトの名無しさん:2011/12/20(火) 09:13:40.83 .net
>>58
ということは、ダイアログクラスを新規に作った際に勝手に用意される
「CWnd* pParent = NULL」のコンストラクタは、
モードレスダイアログとして使うクラスのときには、
消してしまって構わないということですよね。

62 :デフォルトの名無しさん:2012/01/05(木) 05:47:42.07 .net
CDialogを継承したCHogeDialogクラスがあります。
これは、リソースのID(IDD_HOGE)が指定されています。
ダイアログリソースの中には、IDOK IDCANCEL IDC_HOGELIST(List Control) の3つがあります
変数の追加にて、IDC_HOGELISTに関しては m_listCtrl を指定しました。

CHogeDialog dialog(this);
// この辺りに、 dialog.m_listCtrl.InsertItem のようなことをしたいのですが、
// これだと Debug Assertion Failed! と言われてしまいます。
dialog.DoModal();

ダイアログを表示する前にIDC_HOGELISTにアクセスしたり内容を追加するにはどうすればいいでしょうか?
よろしくお願いします。

63 :デフォルトの名無しさん:2012/01/05(木) 06:20:14.11 .net
>>62
モーダルダイアログとして使う以上、コントロールが作られるのはDoModalのタイミング。
アクセサ経由等でメンバ変数に予め内容を入れておいて、
WM_INITDIALOGのタイミングで生成されたコントロールにセットするのが一般的かと。

64 :62:2012/01/06(金) 01:36:10.66 .net
>>63
動かない理由、納得しました。
クラスに独自の変数を持たせて、
クラスの内部からWM_INITDIALOG時にそのデータを反映させることで対応しようと思います。
適切な助言、どうもありがとうございました。

65 :デフォルトの名無しさん:2012/01/09(月) 16:36:04.05 .net
ウィザード生成したMFCアプリケーションについてです。
他はいじらずにCMainFrameにて、OnCreateの末端辺りにDragAcceptFiles();を追加して、
デバッグ時にファイルをアプリケーションにドラッグ&ドロップした時に
Debug Assertion Failed!と表示されて落ちてしまいます。
その時には、下のような記述があります。
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\appui.cpp Line:88

ドラッグドロップに対応したいのに、エラーで落ちてしまっています。
このエラーの対処法ご存じでしたら教えてください。

66 :デフォルトの名無しさん:2012/01/09(月) 17:45:26.51 .net
>>65
Document-Viewを使わないで生成するとそうなるみたいだな。
既定の流れだとDocument-Viewありきな作りみたいだから、
自前のWM_DROPFILESハンドラを書くのが一番手っ取り早い。

今回は偶々直ぐ判ったけど、VSのバージョンやウィザードでの設定で
生成されるコードが大分変わるから、次からは質問時に一緒に書いておいた方が良いよ。

67 :デフォルトの名無しさん:2012/01/09(月) 17:54:50.47 .net
>>66
現状での不具合のようなものなのですね。

OnDropFiles(HDROP hDropInfo)にて、
CFrameWndEx::OnDropFiles(hDropInfo); を呼ぶ代わりに
DragFinish(hDropInfo); を呼ぶことで対処したいと思います。
それと、次回から環境を書くようにします。
どうもありがとうございました。

68 :デフォルトの名無しさん:2012/01/10(火) 09:07:42.76 .net
>>65
落ちているのではなく、アサートに引っかかっているのだから、
画面に書かれているように「再試行」を押せば一発で原因がわかるよ。

69 :デフォルトの名無しさん:2012/01/13(金) 08:22:36.58 .net
出席管理のプログラム作ったんですが何か使いにくい・・・

研究室で使うように作ったのですが他に足した方が良い所とかありますか?
あと、年間を通して1つのCVCデータで管理したいのですが、どうやったらいいですか?

VC2005でXPを使用しています。

"shine90271.zip [施錠中] よろしく"って書いてあるのです。

DLKey:0309
URL:http://up.shinetworks.net/cgi-bin/snup/upload.html

個人情報とか大学名とかはスルーして貰えると嬉しいです。

70 :デフォルトの名無しさん:2012/01/13(金) 08:33:19.28 .net
CSVです。スイマセン

71 :デフォルトの名無しさん:2012/01/13(金) 23:52:29.00 .net
>>69
一画面に色々機能を詰め込みすぎだ。入退出と管理の画面を分けよう。
名簿リストとか入退室記録は、起動・終了時に決まったファイルに読み書きすれば十分じゃないか?

本当の所はコードを一から書き直したい、というか.NETに移植してしまいたい位だけどw

72 :デフォルトの名無しさん:2012/01/16(月) 14:44:28.17 .net
ファイルとかCFileとかで読めますが
Excelファイルとかどうやったら読めますか?
シートの中のデータ読みたいんですがむりですか?
MFCは2008を使ってます

73 :デフォルトの名無しさん:2012/01/16(月) 14:52:45.20 .net
COM使えば

74 :デフォルトの名無しさん:2012/01/16(月) 16:46:31.18 .net
COMって何ですか?
MFCでできますか?

75 :デフォルトの名無しさん:2012/01/16(月) 16:52:34.69 .net
かなりの初心者質問なのですが、
MFCのボタンにBitmapを貼り付けるにはどうすれば
いいのでしょうか?Iconはうまく行ったのですがBitmapだとうまく行きませんでした。

したいこと。リソースからBitmapをボタンの中央に張りつける。

できなかったコード:
[ヘッダ]
public:
 HBITMAP m_hBmp;

[cpp]

m_hBmp = (HBITMAP)::LoadBitmap( AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDB_BITMAP1) );
cBtnRec.SetBitmap(m_hBmp);

76 :デフォルトの名無しさん:2012/01/16(月) 17:18:47.23 .net
すでにMFCにクラスが用意されてるはずだから
それ使うかソース見ればいい

77 :デフォルトの名無しさん:2012/01/16(月) 19:30:54.43 .net
>>72
http://msdn.microsoft.com/ja-jp/library/fe06teee(v=VS.90).aspx
ここら辺を参考にすれば良いよ。
「Excel MFC」で検索した方が手っ取り早いとは思うけど。

78 :デフォルトの名無しさん:2012/01/19(木) 11:49:11.63 .net
CMainFrame::OnCreate()内で、
ModifyStyle(WS_CAPTION,0);を呼んでタイトルバーを削除してるんですが。

この状態でウィンドウを最大化すると、
全画面表示のような状態になってしまいます
(タスクバーの領域までウィンドウが拡大される)。

通常の最大化状態にするポイントなどご存知でしたら教えてください。
よろしくお願いします。

79 :デフォルトの名無しさん:2012/01/19(木) 12:37:44.41 .net
>>78
OnGetMinMaxInfo()で出来ないかな?

80 :デフォルトの名無しさん:2012/01/19(木) 13:39:53.76 .net
>>79
早速の返信ありがとうございます。
WM_GETMINMAXINFOというメッセージがあったんですね。
Mから始まるメッセージで探してたので盲点でした。
ちょっと試行錯誤してみます。

81 :デフォルトの名無しさん:2012/01/19(木) 16:41:21.31 .net
プライマリモニタだけならこんな感じで動きました。
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
CRect workArea;
::SystemParametersInfo( SPI_GETWORKAREA, 0, &workArea, 0 );

const int BORDER_WIDTH = 3;//境界線の幅
lpMMI->ptMaxSize.x = workArea.Width() + BORDER_WIDTH*2;
lpMMI->ptMaxSize.y = workArea.Height() + BORDER_WIDTH*2;

CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
でもセカンダリモニタだとうまくいかないんですよね。
そもそもセカンダリモニタだとlpMMI->ptMaxSizeの設定が効いてこないんですよね。。。
lpMMI->ptMaxSize.x = 100;とか直接値を指定すると効くみたいなんですけど。

82 :デフォルトの名無しさん:2012/01/19(木) 16:44:04.31 .net
#include <MultiMon.h>
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
CRect windowRect;
GetWindowRect( windowRect );
HMONITOR h = ::MonitorFromPoint( windowRect.TopLeft(), MONITOR_DEFAULTTONEAREST );

MONITORINFO info;
info.cbSize = sizeof( MONITORINFO );

::GetMonitorInfo( h, &info );
CRect workArea = info.rcWork;

const int BORDER_WIDTH = 3;//境界線の幅
lpMMI->ptMaxSize.x = workArea.Width() + BORDER_WIDTH*2;
lpMMI->ptMaxSize.y = workArea.Height() + BORDER_WIDTH*2;

CFrameWnd::OnGetMinMaxInfo(lpMMI);
}
セカンダリモニタのワークエリアを取得して設定もしてみたんですけど、
lpMMI->ptMaxSizeの設定がそもそも効いてこないんですよね。
何か気づいた点がありましたらご指摘いただきたいと思います。

83 :デフォルトの名無しさん:2012/01/19(木) 23:11:07.58 .net
lpMMI->ptMaxSizeではなくlpMMI->ptMaxTrackSizeの方に値を設定したらそれらしく動作しました。

lpMMI->ptMaxTrackSize.x = workArea.Width() + BORDER_WIDTH*2;
lpMMI->ptMaxTrackSize.y = workArea.Height() + BORDER_WIDTH*2;

気持ち的には、ptMaxSizeの方に設定して動いてほしいんですけど、
とりあえずゴリゴリ書いてけば動きそうです。
やりたいことに対して処理が若干複雑な気もしますが、こんなもんですかね〜w

84 :デフォルトの名無しさん:2012/01/26(木) 21:13:32.62 .net
ちょっと気になったんで、ご意見伺いたいんですけど。
CRect::PtInRect()って右辺上と下辺上の点は内部とみなされないんですけど、どうしてこういう仕様なんですかね?
自分的には右辺上も下辺上も内部とみなしてくれた方が使い易いんですけど。

何か合理的な理由ってありそうですか?

85 :デフォルトの名無しさん:2012/01/26(木) 23:49:43.56 .net
>>84
RECTは基本的に右端と下端を含まない範囲を表しているから。
辺の差がそのまま幅や高さになるから、案外こっちの方が便利。

86 :デフォルトの名無しさん:2012/01/27(金) 00:19:11.01 .net
うーむ
CRect r( 0, 0, 100, 100 );だと実際は101ピクセルずつですけど
r.Size();するとサイズは100ずつですもんね。。。

配列のサイズと、有効インデックスと同じような考え方かなぁ?

でも、実際にFrameRect();とかすると右端と下端も描画されるしなぁ
(実はここが引っ掛かりポイントかな。実際に描画されてるのに内部と判定されない。)

やっぱり、それなりに理由は有りそうですけど、まだすっきり理解できてこないなぁ

87 :デフォルトの名無しさん:2012/01/27(金) 01:08:25.33 .net
いや、ちゃんと確かめないで書き込んでしまった
FrameRect();は右端と下端を描画していないようです

これで全部辻褄が合ってるのかなぁ?
もうちょっと自分で考えを整理してみます。

88 :デフォルトの名無しさん:2012/01/27(金) 01:48:50.51 .net
>>85
一人で書き込んでばかりですみませんがw

問題点というか、混乱してた原因が、
CRect::PtInRect()ではなくてCRect::BottomRight()で
混乱してたことが分かりました。

RECTの仕様としては、右端・下端を含まないのが正しそうですね。

それで、
CRect::TopLeft()は、RECT内の有効な点として使えるのに、
CRect::BottomRight()は、RECT内に含まれない右下の点を返すので、
これを使ってちょっと色々やってたので混乱してしまったようです。

お騒がせしました。
でも、RECTの仕様もすっきり分かってきたので良かったです。
ありがとうございました。

89 :デフォルトの名無しさん:2012/01/30(月) 19:48:17.36 .net
Windows1の頃からの仕様だな。

90 :デフォルトの名無しさん:2012/01/30(月) 20:50:18.20 .net
left, top, width, heightの方が分かりやすいよな
POINT二つ分とかにはできなくなるが、そもそもそれがおかしいわけで

91 :デフォルトの名無しさん:2012/02/02(木) 00:38:27.77 .net
CFileFindについてですが、
MSDNではIsDirectoryなどの属性を調べるメンバはすべて
FindNextFileを少なくとも1回は呼んでから使えと書いてあるんですが、
これって一番目のファイル(FindFirstFileで検索したファイル)は属性を調べられないってことでしょうか?
実際に試すとそんなことも無いような気がしておりまして、
とても気になっております。

92 :デフォルトの名無しさん:2012/02/02(木) 08:00:00.06 .net
>>91
CFileFind.FindFileは、内部的には一番目のファイル情報を取得しているけど、
実は、次のCFileFind.FindNextFileを呼び出した時に、その情報が参照できるように細工してある。
詳しくはMFCのソースを見たほうが早いかと。

93 :デフォルトの名無しさん:2012/02/02(木) 12:42:51.76 .net
>>92
ソース見てみました。難しくてなんとなく分かった程度ですが
なんでこんな仕様になってるんだろう?と思いましたが、
ひとつ解決してすっきりしました。ありがとうございました。

94 :デフォルトの名無しさん:2012/03/18(日) 10:46:30.07 .net
VS2010 MFC / Windows 7/32bit です。
MSDN 方法 : リソースを追加または削除する
http://msdn.microsoft.com/ja-jp/library/3bka19x4.aspx
参考にリソースのインポートを行うのですができません。
リソースビュー→Toolbar→右クリック→リソースの追加→インポート→予めエクスポートしておいたbmp ファイルを選択
Bitmap ファイルが表示されます。
その後、当該bmpファイルとIDを関連付けて、リソースビューのToolbarタブの配下に登録したいのですが、どうすればいいのでしょうか?
また、やり方が間違っているならば、正しいリソースのインポート方法を教えて下さい。

95 :デフォルトの名無しさん:2012/03/18(日) 15:51:20.64 .net
環境:VS10 MFC MDI
MDI にダイアログをモードレスダイアログを追加しました
ドキュメントクラスのデータをダイアログで使いたいのですが、
CxxxDoc* pDoc = dynamic_cast<CxxxDoc*>(((CFrameWnd* )AfxGetMainWnd())->GetActiveDocument());
これだと、pDocがNULL で取得できません、どうしたらいいでしょうか。

96 :デフォルトの名無しさん:2012/03/18(日) 15:52:11.11 .net
☓MDI にダイアログをモードレスダイアログを追加しました
○MDI にモードレスダイアログを追加しました

97 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/29(木) 14:47:04.16 .net
>>95-96
もう見ていないかもしれんが、呼ぶ場所による。

メインのフレームウィンドウが生成されていな時点で、AfxGetMainWnd()
を呼ぶとNULLが返されるし、SDIと違ってMDIの場合は何もドキュメントを
開いていなければやっぱりNULLが返される。

前者は、例えばモーダレスダイアログ(CMyDialog)のインスタンスが、アプリ
ケーションクラス(CMyApp)のメンバとして定義して、CMyDialogのコンスト
ラクタ内では、まだドキュメントは開かれていないので、ポインタは取得
できない。(NULLが返される)

あと、MDIだと、AfxGetMainWnd()のキャストは(CFrameWnd *)ではなく、
(CMDIFrameWnd *)でなければならない。


98 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 18:08:57.77 .net
CEditのオブジェクトをCWndのポインタでdeleteしても問題ない(=メモリリークなどは発生しない)のでしょうか?
教えてください。

------------------------------------
// エディットボックス構築
CWnd* pEdit = new CEdit();
pEdit->Create(ES_LEFT| WS_VISIBLE | WS_BORDER, rect, this, IDC_EDIT5);

// エディットボックス削除
delete pEdit;
------------------------------------



99 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 22:51:37.64 .net
今でもMFCは花形ですか?
勉強する価値はありますか?


100 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 23:42:16.84 .net
>>98
CWndが仮想デストラクタになっているから問題無い。

>>99
勉強しなくて良い。

101 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 07:00:07.96 .net
>>99
さすがにぜってー意味ねぇと思うわ
C#+.netやれ

102 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:37:51.08 .net
>>101
先輩まじですか。
マネージで安泰ということでよろしいか?

103 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:57:45.53 .net
安泰つーか、MFCが有り得ないだけだから。

104 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:52:08.46 .net
>>103
津波のシミュレートってテレビでよくやってるじゃないですか。
あーいうのがやりたいんですよ。
ということは、C#でも十分可能ということなんですよね?


105 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 08:23:16.23 .net
>104
まず物理に詳しくて、それをパソコンで計算する手法を知っていることかな
その辺の知識があれば関連書籍やサンプルプログラム見つかるだろうし
そこで使ってるプログラミング言語を選ぶのが楽

106 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:15:53.42 .net
MFCがあり得ないというのは言い過ぎだけど花形ではないは確か。
組み込み系でもない限り使う機会って少ないんじゃないかな?
ちなみに私は組み込み系。有り難く使わせてもらってる。
津波のシミュレートとかだと、計算方法とかをしっかり知ることかな。
そしてその結果を出力していくだけだろうからMFCは関係ない。
何かUIを付けていくんだったら、MFC使うなりC#使うなり
そのとき考えればいい。

107 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 11:21:06.88 .net
組み込み系でMFCってw
それ、組み込み系って言うか、組み込みの支援ツールとかだろww
できの悪いシミュレータでも作っているんだろwww

108 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 18:44:01.03 .net
質問です。
1つのアプリケーションの中で複数のダイアログやウィンドウの間で遷移させたくて次のような実装を考えています。
BOOL CMyApp::InitInstanse(){
  〜中略〜
  int nUI = 0;
  while(1){
    switch(nUI){
      case 0:
        CMyDialog dlg;
        dlg.DoModal();
        nUI = dlg0.m_nNextUI;
        break;
      case 1:
        CMyFrameWnd* pwnd = new CMyFrameWnd;
        if( (pwnd->LoadFrame(〜) == FALSE) || (pwnd->AddDocTemplate == FALSE) ){
           delete pwnd;
           nUI = -1;
        }
        else{
           pwnd->ShowWindow(SW_SHOW);
           nUI = pwnd->m_nNextUI;
        }
        break;
      default:
        return FALSE;
        break;
    }
  }
}
でもCWnd::ShowWindowはCDialog::DoModalのようにUIが閉じられるまで待ってくれないから
このようなコードでは正常に動作しないんですよね。本来はInitInstanseをreturn TRUEで出て
メッセージポンプ開始させるのが普通ですが、InitInstanseを出ずに使う方法は無いですか?

109 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 19:46:48.01 .net
>>108
やりたいことを具体的に書いた方がいいよ。でないと、
どうしてもInitInstance()から出たくないなら、中でメッセージポンプを実装すればいいとしか。
普通に状態フラグみたいなもので作業フェーズを管理すればいいだけだと思うんだけどね。

110 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 20:27:42.10 .net
>>109
あるダイアログ上である特定のUI操作をしたら、そのダイアログが消えて別の
ダイアログ/ウィンドウが新たに表示される、というような画面遷移がいくつか
必要なアプリケーションにおいて、アプリケーション上で生きているダイアログ
やウィンドウを常に1個だけにしたい(使わないダイアログやウィンドウを隠す
のではなく使い終わったものは順次デコンストラクトしてしまいたい)、というの
がやりたいことです。

111 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 20:31:34.33 .net
>>110に追記。
自分が困っているのは、>>108のようにInitiInstanseの中からウィンドウを呼ぶ実装だと、
モーダルダイアログと違って、ウィンドウが閉じられるまでプロセスをそこで待たせるのが
難しいので、もっと簡単に>>110を満たす実装ができないだろうか、というところです。

112 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 21:03:37.10 .net
>>108
case 1:のところでは見えないダイアログをDoModalで出しておいて、
そのダイアログから別スレッドを作ってCMyFrameWndを出して、
ダイアログがタイマーで定期的にスレッドの終了を見張って、
終了していたらダイアログ自身もEndDialog
というようなやりかたならやったことがある。

113 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 23:32:26.46 .net
>>112
その方法だと、タスクバー上に、ダイアログのぶんとウィンドウのぶん、
2つのタイトルボタンが現れてしまいませんか?

114 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 04:42:02.62 .net
>>107
横レスだけど、WinCEは企業じゃ現役だと思うよ
あと、POSとか、大き目の組込みじゃ普通にXPが載ってたりする


115 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 06:56:48.26 .net
>>104
Blenderでできるよ。動画もあったはず。

116 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 20:50:59.12 .net
>>113
そこはWS_EX_TOOLWINDOWを指定するなり、
ダイアログをサイズ0ではなく非表示にするなり、
自身のアプリの動きに合った方法を探ってもらうしか。

自分の場合は、ランチャのようなものがあって、
そこからダイアログやCMyFrameWndをモーダルで出す仕組みだったので、
LoadFrameに渡す親ウィンドウを前述の見えないダイアログにして、
タスクバーに新たに出てこないようにした。

この方法だとCMyFrameWnd自体のタスクバーへの最小化ができないけど、
モーダルダイアログと同じようになればよかったので、最小化は不可にした。

117 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 21:13:49.42 .net
108ですが解決しました。おおざっぱにですが、まずはウィンドウ側。
BOOL CMyFrameWnd::OpenAndHide(CWnd* pwndParent, BOOL* pbIsDestroyed)
{
  // LoadFrameの引数の親ウィンドウへのポインタにはpwndParentを渡さずNULLにしておく
  if( (pwndParent == NULL) || (LoadFrame(〜) == FALSE) || AddDocTemplate(〜) == FALSE) ) return FALSE;
  // pwndParentを消す
  pwndParent->ShowWindow(SW_HIDE);
  LONG lExStyleOfParent = m_lExStyleOfParent = ::GetWindowLong(pwndParent->m_hWnd, GWL_EXSTYLE);
  lExStyleOfParent &= (~WS_EX_APPWINDOW);
  lExStyleOfParent |= WS_EX_TOOLWINDOW;
  ::SetWindowLong(pwndParent->m_hWnd, GWL_EXSTYLE, lExStyleOfParent);
  ::SetWindowPos(pwndParent->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
  ::SetWindowRgn(pwndParent->m_hWnd, CreateRectRgn(0, 0, 0, 0), TRUE);
  // ポインタをメンバ変数に記録
  m_pwndParent = pwndParent;
  if(pbIsDestroyed != NULL){
    m_pbIsDestroyed = pbIsDestroyed;
    (*m_pbIsDestroyed) = FALSE;
  }
  ShowWindow(SW_SHOW);
  return TRUE;
}
void CMyFrameWnd::OnDestroy()
{
  if(m_pbIsDestroyed != NULL) (*m_pbIsDestroyed) = TRUE;
  else{
    ::SetWindowLong(m_pwndParent->m_hWnd, GWL_EXSTYLE, m_lExStyleOfParent);
    ::SetWindowPos(m_pwndParent->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
    ::SetWindowRgn(m_pwndParent->m_hWnd, NULL, TRUE);
  }
  CWnd::OnDestroy();
}

118 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 21:15:54.90 .net
そしてダイアログ側。
BOOL CMyDialogForWindow::OnInitDialog()
{
  if(CDialog::OnInitDialog() == FALSE) return FALSE;
  CMyFrameWnd* pwnd = new CMyFrameWnd;
  if(pwnd->OpenAndHide(this, m_bIsDestroyed) == FALSE){
    delete pwnd;
    OnCancel();
    return FALSE;
  }
  pwnd->ShowWindow(SW_SHOW);
  SetTimer(m_nTimerID, 500);
  return TRUE;
}
void CMyDialogForWindow::OnTimer(UINT nIDEvent)
{
  if(m_bIsDestroyed == TRUE){
    KillTimer(m_nTimerID);
    OnOK();
  }
  CDialog::OnTimer(nIDEvent);
}
これで、>>108のcase 1:の中で、CMyDialogForWindowのインスタンスを作ってDoModal()すれば
(CMyDialogForWindowが自動的に隠れ)CMyFrameWndだけを開いているような状態になるはずです。
>>116さんのようにランチャ的なダイアログから開きたい場合には、上のダイアログ側コードを削除して
void CMyDialogForWindow::OnButtonOpenWindow()
{
  CMyFrameWnd* pwnd = new CMyFrameWnd;
  if(pwnd->OpenAndHide(this, NULL) == FALSE) delete pwnd;
  else pwnd->ShowWindow(SW_SHOW);
}
を加えれば、うまく動作するはずです。

119 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 21:28:20.95 .net
大事な部分が抜けてました。
CMyFrameWnd::OpenAndHideおよびCMyFrameWnd::OnDestroyの中において、
CWinApp::m_pMainWndを移譲する処理を書いておく必要があります。

CMyFrameWnd::OpenAndHideでは
  m_pwndOld = AfxGetApp()->m_pMainWnd;
  AfxGetApp()->m_pMainWnd = this;

CMyFrameWnd::OnDestroyでは
  AfxGetApp()->m_pMainWnd = m_pwndOld;

それぞれ適当な場所に書いてください。

いろいろとご助言ありがとうございました。

120 :デフォルトの名無しさん:2012/04/11(水) 20:41:32.54 .net
>>117
CMyFrameWndを別スレッドにしなくても大丈夫だった?

>>112を作ったときは、
MFCのフレームウィンドウのコマンドUI処理やドッキング処理は
InitInstanceを抜けた後のアイドル時に行うような前提で、
ダイアログベースのアプリケーションのメインスレッドからだと
CMyFrameWndでそのあたりがうまく動かなかったので、
わざわざ別スレッドを経由するするようにしたんだけど。



121 :デフォルトの名無しさん:2012/04/13(金) 16:44:19.01 .net
CDatabaseやCRecordsetを使ってODBCでOracleデータベースにアクセスしています。
しかし、このクラスにはメモリリークのバグがあるみたいなので
別の方法(CDatabaseを使わない)でOracleにアクセスしたいのですが
そんな方法があるんでしょうか?教えてください。

122 :デフォルトの名無しさん:2012/04/13(金) 17:12:53.36 .net
>>121
ADOかなー。
バージョンによってはoo4oのほうがいいかな

123 :デフォルトの名無しさん:2012/04/16(月) 08:14:51.44 .net
ありがとうございます
ADOでやってみます
oo4oは64bitで使えないらしく残念です

124 :デフォルトの名無しさん:2012/04/17(火) 00:54:50.49 .net
>>121
SQLを書いたファイルをsqlplusに食わせて、それをファイルにリダイレクトするバッチファイルを作る。
で、"cmd /c バッチファイル"をsystem関数で実行する。
というダサいプログラムを見たことがある。

125 :デフォルトの名無しさん:2012/04/17(火) 13:19:50.06 .net
ダサいけど、存外安定するんだな。

126 :デフォルトの名無しさん:2012/04/19(木) 00:50:24.86 .net
安貞するの?
安貞しちゃっていいの?
しちゃうよ?
本当にいいの?

127 :デフォルトの名無しさん:2012/04/24(火) 02:17:02.68 .net
滅茶滅茶にして…///

128 :デフォルトの名無しさん:2012/05/01(火) 01:21:14.89 .net
MFC初心者です
質問があります
 
計測データをグラフ表示したい場合
どのような方法が考えられますか?
なんでもいいのでおしえてください

129 :デフォルトの名無しさん:2012/05/01(火) 12:41:20.69 .net
・市販のグラフコントロールを買う
 買ったコントロールのヘルプを読めばいい

・自分で全部描く
 ViewのOnDraw又はOnPaint
 CDCクラス
 CPenクラス
 CBrushクラス
 あたりを調べて勉強する
 理解出来たらオーナー描画を勉強する

130 :デフォルトの名無しさん:2012/05/01(火) 13:23:06.10 .net
>>128
市販のグラフコントロール買うのが一番良いよ。
ただ、それが10万とかすると「高いから自分でコード書け」とかいう馬鹿上司がいたりするんだよなぁ。

131 :デフォルトの名無しさん:2012/05/01(火) 14:57:14.85 .net
まぁ仮に、人月単価40万円の奴が担当したとする。
一週間グラフを作るのに費やしたらそれだけで10万円だよな。

とは言え、我が社ではgnuplotでやっているが。

132 :デフォルトの名無しさん:2012/05/01(火) 15:24:49.15 .net
>>131
それ、メンテナンス工数が入ってないよ。

133 :デフォルトの名無しさん:2012/05/01(火) 23:45:28.86 .net
もう少し大局的に物事を考えられるようになろうぜ

134 :デフォルトの名無しさん:2012/05/02(水) 07:53:50.61 .net
高機能なコントロール=使い易いコントロール
とは限らないのが難しい所だけどな。
MFC使い慣れてるオッサンに仕事を押し付けるのが手っ取り早い。
……MFC以外を検討するのが最善策な気もするけどw

135 :デフォルトの名無しさん:2012/05/03(木) 00:07:29.16 .net
企業として使用する場合MFC以外でGUIライブラリってなにがあるんだ?

シェアウェアとして個人でwwwに公開する場合ならいろいろあるけど。

136 :デフォルトの名無しさん:2012/05/04(金) 20:02:08.50 .net
MFCで組み合わせを計算するアプリ作成しています
いざ計算すると止まってしまい困っています
どうやらユーザ定義関数の階乗を計算する関数が
動作していないことが原因みたいです
C++の要領でメイン関数の上に置いたのはマズかった
のでしょうか?アドバイスおねがいします

137 :デフォルトの名無しさん:2012/05/04(金) 22:02:41.13 .net
ユーザ定義関数を直せばいいんじゃないかな

138 :デフォルトの名無しさん:2012/05/05(土) 04:02:33.96 .net
>>137
どのように直せばいいですか?
方法が分からず困っています

139 :デフォルトの名無しさん:2012/05/05(土) 05:13:56.42 .net
正しく動くように直せばいいんじゃないかな。

140 :デフォルトの名無しさん:2012/05/05(土) 19:46:33.66 .net
>>136
宿題は自分でやれよ、馬鹿が
それとも、聞ける友達すらいないのか

141 :デフォルトの名無しさん:2012/05/06(日) 01:05:34.85 .net
>>140
すみません
たしかに友達が少ないのは事実ですが

なんとかなりそうです
激励ありがとうございます!

142 :デフォルトの名無しさん:2012/05/09(水) 18:32:22.87 .net
>>131
人月単価40万円なんてありえない

それって、個人の給料と勘違いしていない?

工数は8000〜10000円/1H位で見積もるよ


143 :デフォルトの名無しさん:2012/05/09(水) 19:04:15.66 .net
底辺下請けを舐めんなよ。個人でやってるソフトハウスなんてそんなもんだ。
ちなみに、独立系のソフトハウスで80-120万、大手SIerで120-200万円だ。

144 :デフォルトの名無しさん:2012/06/09(土) 18:39:41.26 .net
ソフトウェア業界で飯を食っていこうと考えると
MFCと.NETだと、どちらをマスターしたほうがいいですか?



145 :デフォルトの名無しさん:2012/06/09(土) 21:00:41.38 .net
その2択ならMFCだろうな
.netなんて適当な本読んで、2,3日もすれば完全にマスターできる。

必要になったときにやればいい。


146 :デフォルトの名無しさん:2012/06/09(土) 22:38:58.81 .net
>>144 はスレタイを読んでいる
>>145 は空気を読んでいる
そして死神が漏れを呼んでいる

147 :デフォルトの名無しさん:2012/06/10(日) 08:44:58.86 .net
もう 2ch にはまともなひといないお

148 :デフォルトの名無しさん:2012/06/10(日) 20:14:15.57 .net
質問があります
追加したダイアログのメニューバーを無効(灰色表記)にするのはどうすればいいですか?

149 :デフォルトの名無しさん:2012/06/11(月) 12:48:21.30 .net
>>148
http://support.microsoft.com/kb/242577/ja

150 :デフォルトの名無しさん:2012/06/13(水) 22:47:19.74 .net
吹き出しっぽいものを作ってそこに文字を入力してもらおうと考えています
そこでまずttp://www.yoshibaworks.com/ayacy/inasoft/wpt/ulw.htmlを参考に
UpdateLayeredWindowを使って吹き出し型のウィンドウを作るところまでは出来ました。

しかしそれに対してエディットボックスを貼り付けてみたところ見事に表示されませんでした。
レイヤードウィンドウにコントロールを貼り付けることはできないのでしょうか


151 :デフォルトの名無しさん:2012/06/13(水) 22:57:27.40 .net
出来ますよ

152 :デフォルトの名無しさん:2012/06/13(水) 23:00:05.36 .net
>>151
おお、ホントですか。
何かサンプルになるようなものはありませんか

153 :デフォルトの名無しさん:2012/06/13(水) 23:19:45.71 .net
ウィンドウをダイアログにする

154 :デフォルトの名無しさん:2012/06/13(水) 23:26:20.02 .net
えーとすいません
CDialogを継承したものをUpdateLayeredWindowで消すってことでしょうか
今すでにその状態なんですけど

155 :デフォルトの名無しさん:2012/06/14(木) 00:16:39.69 .net
頑張れMFC

156 :デフォルトの名無しさん:2012/06/15(金) 08:50:49.04 .net
>>154
ソース貼れ

157 :デフォルトの名無しさん:2012/06/23(土) 16:15:42.11 .net
取り込んだデータで山なりの曲線作りたいんですが、どうやってグラフにするのかおしえてください

158 :デフォルトの名無しさん:2012/06/23(土) 16:35:33.83 .net
了解

159 :デフォルトの名無しさん:2012/06/23(土) 16:55:29.93 .net
C#やVBはポトペタできるのに
VC+++MFCは未だにポトペタできないのはなんで?



160 :デフォルトの名無しさん:2012/06/23(土) 17:12:52.77 .net
ttp://www.wilsonc.demon.co.uk/d10resourceeditor.htm


161 :デフォルトの名無しさん:2012/06/23(土) 17:51:39.46 .net

それだと、ショボイコントロールしかポトペタできないじゃん


162 :デフォルトの名無しさん:2012/06/23(土) 20:20:33.32 .net
馬鹿には無理

163 :デフォルトの名無しさん:2012/06/23(土) 20:28:00.17 .net
>>157
Excelを使え。

164 :デフォルトの名無しさん:2012/06/23(土) 23:00:03.40 .net
遅ればせながら、vs2010を使ってみた
MFC、超進化してんじゃん
MFC新規作成から、完了ボタン一発ですげーGUIできた。
C#が生産性が高いなんて過去の話か???

165 :デフォルトの名無しさん:2012/06/23(土) 23:02:51.16 .net
>>163
ExcelだとC+が使えないので…

166 :デフォルトの名無しさん:2012/06/24(日) 00:47:25.78 .net
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。

167 :デフォルトの名無しさん:2012/06/24(日) 04:33:37.16 .net
>>166
ではヒントだけでいいので

168 :デフォルトの名無しさん:2012/06/24(日) 23:10:31.51 .net
クラス名を変更したいですが、どうするのが正確にできますか?

CXxxxView ファイル名 XxxxView.h , XxxxView.cpp


CYyyyView ファイル名 YyyyView.h , YyyyView.cpp

としたいのです。


169 :デフォルトの名無しさん:2012/06/24(日) 23:22:14.92 .net
s/Xxxx/Yyyy/g

170 :デフォルトの名無しさん:2012/06/24(日) 23:29:27.86 .net
bakabakkadana

171 :デフォルトの名無しさん:2012/06/24(日) 23:43:25.78 .net
若かろうがオッサンだろうが、
「これ出来ないとお金払いませんよ、
 あなたの生活がどうなろうと私には関係有りませんし。」
と言うとみんなちゃんと新しい技術をマスターしてくる。
努力しないってっことは努力する必要が無いからなんだと思う。
追い詰められていないんだろうね。
幸せなんじゃないか?
どうでもいいけど。

172 :168:2012/06/25(月) 01:36:45.53 .net
>>171
答えられないくせにどうでもいい長文書くなよw

173 :デフォルトの名無しさん:2012/06/25(月) 01:48:50.20 .net
「会議」がアイデアを潰す

若手や中堅がイノベーションを生み出す新しいアイデアを出す時
立ちはだかるのがジジイどもの支配する「会議」という壁だ

・ジジイどもに理解できる企画でなくてはならない
・ジジイどもの好みに合う企画でなければならない
・既に成功した事例がなくてはならない
・ジジイどもに気に入られている人物が提案者でなくてはならない
・ジジイどもに気に入れられていない人物が関わっていてはならない
・ジジイどもの支援が不要な企画でなくてはならない
・にもかかわらずジジイどもにも活躍の場を与えねばならない
・ジジイどもの気まぐれな口出しにいつでも応じなければならない
・失敗してもジジイどもが責任をとらなくてよい企画でなくてはならない
・成功したらジジイどもの業績になる企画でなくてはならない

若い頃は前世代のおかげで繁栄したくせに、自分らの時代には経済を衰退させ
そのツケを後世代に回す団塊ジジイ、バブルジジイどもが日本の病巣

174 :デフォルトの名無しさん:2012/06/25(月) 07:13:17.15 .net
通報した方がいいのかね、これ。

175 :デフォルトの名無しさん:2012/06/25(月) 14:12:20.49 .net
今更MFCを学ぶのは無駄なんですか?

176 :デフォルトの名無しさん:2012/06/25(月) 14:49:34.12 .net
Don't think, feeeeeeeeeel.

177 :デフォルトの名無しさん:2012/06/27(水) 00:53:22.04 .net
>>175
Windowsの仕組み、Win32API、C++の言語仕様を熟知していればMFCは3日で覚えられる。

178 :デフォルトの名無しさん:2012/06/27(水) 09:56:55.46 .net
>>177
Windowsの仕組み、Win32API、C++の言語仕様を熟知するのにどれくらいかかりますか?

179 :デフォルトの名無しさん:2012/06/27(水) 11:45:01.77 .net
>>178
基本的なOSの仕組み、Cの言語仕様を熟知していれば一週間くらい。

180 :デフォルトの名無しさん:2012/06/27(水) 12:08:16.93 .net
一週間で熟知出来るのか〜
ってどんだけ浅い理解だよ

181 :デフォルトの名無しさん:2012/06/27(水) 18:39:59.86 .net
>>179
無理だな。
最低でも一ヶ月はかかる。

182 :デフォルトの名無しさん:2012/06/27(水) 22:40:47.45 .net
>>178
APIについては最低でも、猫でもわかるくらいの知識が必要。

183 :デフォルトの名無しさん:2012/06/27(水) 23:20:38.30 .net
Windowsの仕組みが1ヶ月と嘘だろ?

15、16年程度Windowsでドライバやアプリケーションを書いてきたが
AdvancedWindows,やInside Windowsを読むのは相当キツイぞ
未だに全部頭に入ってるわけではない

184 :デフォルトの名無しさん:2012/06/28(木) 09:02:21.53 .net
何年やったって全てを熟知するなんて無理
一週間とか一ヶ月とか言ってる奴はネタで言ってるか
単なる馬鹿のどっちか

185 :デフォルトの名無しさん:2012/06/28(木) 23:56:54.15 .net
ソースが入手できないから当たり前

linuxなんかは、ソース読めば全体がくまなくわかるがな

186 :デフォルトの名無しさん:2012/06/29(金) 10:00:04.34 .net
>>185
じゃあソースがあれば一週間で熟知出来るの?
お前天才だろ

187 :デフォルトの名無しさん:2012/06/29(金) 18:51:54.55 .net
まあ、熟知っていうのをどのレベルに想定するかで違ってくるしな。
仕事に支障ないレベルまで習得できた状態までなら、一ヶ月でなんとか行くと思うよ。
(実例は俺)
ただし、その前にOSの仕組みやらC++やらは理解しておく必要があるが。


188 :デフォルトの名無しさん:2012/06/29(金) 19:16:03.68 .net
「仕事で必要な部分」と「全部」は違うだろ

189 :デフォルトの名無しさん:2012/06/29(金) 19:30:03.23 .net
>>188
ああ、違うよ。
悪かったな。

190 :デフォルトの名無しさん:2012/06/29(金) 23:40:01.55 .net
ふふん
まあ兎に角、取り敢えずは、一週間だな
それでで大体はワカルもんだ


191 :デフォルトの名無しさん:2012/07/02(月) 23:55:53.29 .net
子ダイアログに親ダイアログのメンバ変数に格納された数値を移したいのですが、
何故か値が消えて0になってしまいます
解決策をおしえてください

192 :デフォルトの名無しさん:2012/07/03(火) 00:41:09.74 .net
Petzoldを参照せよ!

193 :デフォルトの名無しさん:2012/07/03(火) 01:43:02.81 .net
>>192
さっそくみてみます!

194 :デフォルトの名無しさん:2012/07/03(火) 19:14:29.85 .net
質問です。

リストビュー内のリストコントロールで各行ごとに異なる背景色を与えるとき、
LVS_EX_CHECKBOXESで表示させたチェックボックスの背景はどうやれば
変更できますか?

195 :デフォルトの名無しさん:2012/07/11(水) 20:53:15.43 .net
質問です。WinXP, Visual Studio 2008 ProのMFCダイアログベースアプリで、
フォーム上にコンボボックス(IDC_COMBO1)を配置して、
コンボボックスのプロパティを次のように設定しました。
  Data: アメリカ;ドイツ;日本;インド
  Sort: False
  Type: ドロップダウン リスト
これをビルド・実行して、[▼]ボタンを押すと(1)のようになり、(2)のようにずらーっと選択肢が出ません。
(2)のようにするには、どうすればいいでしょうか?
よろしくお願いします。
 
 -----------
 |      |▼|
 -----------
    ↓ 右の[▼]ボタンを押すと
(1)リストのうち、要素が1個でるだけで、右端のアップダウンボタン[〓]を押して1個ずつ切り換え
 -----------
 |      |▼|
 -----------
 |アメリカ |〓| 
 -----------
(2)
 -----------
 |      |▼|
 -----------
 |アメリカ |
 |ドイツ   |
 |日本   |
 |インド  |
 ---------

196 :デフォルトの名無しさん:2012/07/11(水) 21:15:48.35 .net
(1)エディタ上で[▼]の部分をクリックして、
 ドロップダウンする部分のサイズをリサイズする。
(2)XPのビジュアルスタイルを指定している場合は、
 プロパティのNo Integral HeightをTrueにする。

197 :195:2012/07/11(水) 22:04:42.07 .net
>>196
教えて頂いた方法で、解決しました。
ありがとうございました。

198 :デフォルトの名無しさん:2012/07/13(金) 23:55:35.80 .net
コントロールがフォーカスを持っているときに
枠線が描かれますが、この枠線を 赤の太線にほしいとの客先要望

どのコントロールにフォーカスがあるかをわかりやすくするためだと・・・

できますか?

できませんとお答えしたら、「いやいや、できなってことはないでしょ?」
の一点張り・・・

なにか良いアイデアはありませんか>¥?

199 :デフォルトの名無しさん:2012/07/14(土) 02:21:05.92 .net
>>198
フォーカス時にMoveTo,LineToで線引いてやるとか?

莫大なコード書いて実現しても
「やっぱりできるんじゃん!サボろうとして安易にできないとか言うなよ」
とか言われたりして

まあ入力欄だったら背景色を変えるとかで手打ちしてもらったほうが

200 :デフォルトの名無しさん:2012/07/15(日) 17:25:55.11 .net
おまえら正規版買えよ

201 :デフォルトの名無しさん:2012/07/15(日) 17:31:18.72 .net
コンソールにHello Worldって出力するだけのソフトしかつくれないのに
何万も出すかよ

202 :デフォルトの名無しさん:2012/07/15(日) 17:38:53.40 .net
おまいらに朗報
http://sourceforge.net/projects/owlnext/

203 :デフォルトの名無しさん:2012/07/15(日) 17:42:38.33 .net
そんな屑ライブラリなんて使えるかよ

ライブラリは質より、どこが提供しているかが一番大事なんだぞ
MFCは糞だが、MSっての最強の強み

204 :デフォルトの名無しさん:2012/07/15(日) 17:43:06.69 .net
心配ご無用、新機能満載、非互換版作成中、近々公開

205 :片山博文MZボット ◆0lBZNi.Q7evd :2012/07/15(日) 20:33:56.18 .net
>>198
最前面拡張スタイルの独立したポップアップウィンドウをSetWindowRgnでくりぬく。
フォーカスを監視してフォーカスのあるコントロールに位置とサイズを合わせる。

206 :デフォルトの名無しさん:2012/07/17(火) 18:04:52.52 .net
MSDN正規版を買いましょう

207 :デフォルトの名無しさん:2012/07/21(土) 06:09:51.48 .net
MSDNは買うと言うよりもエントリーするとか登録するとかそういう感覚


208 :デフォルトの名無しさん:2012/07/22(日) 19:13:10.83 .net
すいません、教えてください。

2つのOnTimer( CWnd1::OnTimer と CWnd2::OnTimer)から
同一の関数( func )を呼び出す制御をしていた場合、
関数( func )が2重に呼び出される事はあるのでしょうか?

※以下処理で g_ctr が 2になる可能性はありますでしょうか?

----------------------------------------------
CWnd1::OnTimer( UINT_PTR nIDEvent ) // 10ms間隔のタイマー
{
func();
}

CWnd2::OnTimer( UINT_PTR nIDEvent ) // 20ms間隔のタイマー
{
func();
}

int g_ctr = 0;
void func()
{
g_ctr ++;

// 色々な処理

g_ctr --;
}
----------------------------------------------



209 :デフォルトの名無しさん:2012/07/22(日) 19:19:51.17 .net
>>208
是非とも、実際にやってみて結果を報告して欲しい。
通常は、「ある」ものとして設計するけどな。

210 :デフォルトの名無しさん:2012/07/22(日) 20:32:43.47 .net
メニューの折りたたみをなくしたいだけど
どうすればいいのかしらん?

211 :デフォルトの名無しさん:2012/07/22(日) 21:00:48.42 .net
>>208
OnTimer(=WM_TIMER)はメッセージベースなので、
GetMessage/DispatchMessageとか内部で呼び出さなければOK。
逆にMessageBoxとか出すと、再入するのが確認できるよ。
これらはタイマが一つだろうと二つ以上だろうと当てはまる。

212 :デフォルトの名無しさん:2012/07/22(日) 22:07:26.79 .net
レスありがとうございます。

2つ(CWnd1 , CWnd2)は異なるウィンドウですが、同じメッセージループを回っているのでしょうか?


213 :デフォルトの名無しさん:2012/07/22(日) 22:12:52.77 .net
んなわけねーじゃん
しねよ

214 :デフォルトの名無しさん:2012/07/22(日) 23:00:15.70 .net
ですよね・・。

だって >>211 がおかしな事言うから・・。
しねよ は>>211に言ってよ


215 :デフォルトの名無しさん:2012/07/22(日) 23:50:15.85 .net
もうWinのデスクトップではネイティブアプリって必要なくなっていくんですかね?


216 :デフォルトの名無しさん:2012/07/23(月) 01:12:58.66 .net
>>212
同じUIスレッドのウィンドウなら同じ。
AfxBeginThreadとかで作った、別のUIスレッドのウィンドウとかなら別だけど。

217 :デフォルトの名無しさん:2012/07/23(月) 07:31:49.85 .net
mfcの生産性の低さについて
マイクロソフトは何か対策を練ったりしてないの?
過去の遺産に先進機能を盛った所で相変わらず繁雑なままという印象なのだけれど

218 :デフォルトの名無しさん:2012/07/23(月) 07:57:02.22 .net
今は一部社員の趣味で開発しているだけの予感。
MFCが使われなくても特に困らないんじゃないか?
他に生産性の高いライブラリがあるなら、どうぞそちらをお使いください、
ってスタンスかと。

219 :デフォルトの名無しさん:2012/07/23(月) 08:37:47.73 .net
>過去の遺産に先進機能を盛った所

具体的にどのへんが先進機能?

220 :デフォルトの名無しさん:2012/07/23(月) 18:08:39.83 .net
MFC Feature Packとか
外部には無いでしょ?

221 :デフォルトの名無しさん:2012/07/23(月) 18:53:04.01 .net
mfcってそんなに生産性低いか?
ウィザードに従っていけば、デフォルトですごいカッコいいGUIが出来あるがるぞ

まさかVC++6とかつかってないか?

2008以降はGUIだけならC#より生産性は高い

222 :デフォルトの名無しさん:2012/07/23(月) 19:05:27.83 .net
だがしかし 2008 Express には MFC が付いていない

223 :デフォルトの名無しさん:2012/07/23(月) 19:08:35.74 .net
認識が全然違うのか
ウィザードで大抵の機能が完結するならいいけど
機能を追加する場合にも実際には色々と手作業でしかも複数箇所に渡って変更部分を追記する以外ないわけで
間違いなく生産性の面で言えば現代のプログラミング技術から数歩遅れた所に居ると思う

224 :デフォルトの名無しさん:2012/07/23(月) 19:25:25.71 .net
人が嫌がるものだからこそ金になるんだろ。

225 :デフォルトの名無しさん:2012/07/23(月) 19:34:31.05 .net
嫌がるからどうこうじゃなくて
整備しなかったマイクロソフトの怠慢じゃないの

226 :デフォルトの名無しさん:2012/07/23(月) 19:37:47.48 .net
QtやらMacやらAndroidやらが現れている現在
本来ならここは改善されるべき所

227 :デフォルトの名無しさん:2012/07/23(月) 20:03:36.09 .net
しかし、ネイティブアプリを作成するには、これが一番情報が多いし
使い方も簡単

228 :デフォルトの名無しさん:2012/07/23(月) 20:54:17.01 .net
mfcはジャンク
組み合わせられれば最強だが
全体的に見るとあまりよろしくない

229 :デフォルトの名無しさん:2012/07/23(月) 21:22:08.10 .net
>>222
Qt とか wxWidgets とかおすすめ

230 :デフォルトの名無しさん:2012/07/26(木) 11:01:06.28 .net
MFCでラジオボタンを3つ作ってボタンを押すとそれぞれ3つとも違う処理をしています
ある時に自動で1つめのボタンを押す動作をプログラムで起こしたいのですが
CButtonのSetCheck(1)とするとボタンはへこむのですが
ボタンを押した時のハンドラは呼ばれません
これを呼ばれるようにするにはSetCheckじゃなく何を呼べばいいんでしょうか?
VC2003を使っています。OSはXP

231 :デフォルトの名無しさん:2012/07/26(木) 11:42:28.74 .net
>>230
「ボタンを押した時のハンドラ」

232 :デフォルトの名無しさん:2012/07/26(木) 11:48:31.40 .net
それをやろうとするとプログラムで判定が必要になって不格好です

if(button1.GetCheck()==1)
button1のハンドラ();
if(button2.GetCheck()==1)
button2のハンドラ();
if(button3.GetCheck()==1)
button3のハンドラ();

button1.SetCheck(1)に対して自動でハンドラを呼ばせたいのですが無理ですか?

233 :デフォルトの名無しさん:2012/07/26(木) 12:30:09.30 .net
>それをやろうとするとプログラムで判定が必要になって不格好です
なんで? >230にはGetCheck()の結果でハンドラを呼びたいなんて書いてなかったのに後出し?
つーか、動作のシミュレーションをしたいのならボタンの座標を使ってメッセージ送ればいいじゃん。

234 :デフォルトの名無しさん:2012/07/26(木) 15:34:45.00 .net
馬鹿には無理

235 :デフォルトの名無しさん:2012/07/26(木) 21:32:46.97 .net
CMenuでおしえてください
左クリックでメニューだしてますが以下の構造でポップアップのMeasuredItem処理が分かりません
メニュートップ
  −メニュー1(ポップアップ)
    −サブメニュー(文字列)
    −サブメニュー(文字列)
  −メニュー2(ポップアップ)
    −サブメニュー(文字列)
    −サブメニュー(文字列)
  −メニュー3(文字列)

ポップアップになってるとこはCMenuの派生クラスでMeasuredItemが呼ばれないので
親WindowでOnMeasuredItemを呼ばせてその中でMeasuredItemを読んでます
つづく

236 :デフォルトの名無しさん:2012/07/26(木) 21:37:52.30 .net
OnMeasuredItemでは以下の2つのハンドルが帰ってきますが
  −メニュー1(ポップアップ)
  −メニュー2(ポップアップ)

このハンドルから親であるメニュートップのハンドルが欲しいのですが
取得する方法わかりますか?
CMenuには親メニューを取ってくるメンバ関数はなさそうです
なぜ取得したいかというと親が持ってるメニューの幅と高さ情報が知りたいからです
その情報を使ってMeasuredItemを処理したいのですが
OnMeasuredItemでは親ではなく子のハンドルが帰ってきて困ってます

237 :デフォルトの名無しさん:2012/07/26(木) 23:06:57.75 .net
APIレベルでその機能が無いからなあ。
予めSetMenuItemInfoでdwItemDataに親ハンドルをセットしておくとか、
せこい方法しか思いつかないw

238 :デフォルトの名無しさん:2012/07/28(土) 00:54:53.04 .net
MFCってやたらモッサリしてるんですが、C#でWPFかwinformで書いたほうがいいですかね?

239 :デフォルトの名無しさん:2012/07/28(土) 02:53:59.26 .net
MFCでモッサリならC#で書こうものなら使い物にならんだろ

240 :デフォルトの名無しさん:2012/07/28(土) 09:17:22.63 .net
>>239
釣りだろ。

241 :デフォルトの名無しさん:2012/07/28(土) 09:52:29.42 .net
vs2012では、mfcがなくなったの?

242 :デフォルトの名無しさん:2012/07/28(土) 13:08:52.96 .net
どうしてそう思ったの?

243 :デフォルトの名無しさん:2012/07/28(土) 22:22:49.68 .net
使えなかったから

244 :デフォルトの名無しさん:2012/07/29(日) 09:36:41.17 .net
ExpressEditionには入ってなかった、ってオチだろうな。
Professional入れてるけど普通に使えるし。

245 :デフォルトの名無しさん:2012/07/30(月) 11:00:37.74 .net
CTabCtrlでタブコントロールを使ってますが
InsertItemでタブを複数追加して実行中に
マウスでタブの順番をドラッグで入れ替えたりする機能は
標準でないんでしょうか?IEのタブ表示だと普通にできますけど
CTabCtrlでは無理なんでしょうか?方法があったら教えてください
VCは2005を使用しています

246 :デフォルトの名無しさん:2012/07/30(月) 11:27:27.60 .net
ちなみにVS2010にCMFCTabCtrlというのがあって
コレを使えば実現できるのは知ってます。
問題はVS2005にてこれをやりたいと思っています。
未来Verの機能を使う方法があれば簡単なんでしょうけど
たぶん無理ですよね…

247 :デフォルトの名無しさん:2012/07/30(月) 20:23:02.66 .net
>246
画像素材作るのが面倒だけど、
CButtonあたりを継承して自分で組んでしまえば?

248 :デフォルトの名無しさん:2012/07/31(火) 01:09:37.09 .net
それやるくらいなら、CTabCtrlのイベント処理を自分でやればいいだけのような。

249 :245:2012/07/31(火) 08:59:34.21 .net
やはり自前しかないですか
CTabCtrlをオーナードローして作ることにしました

250 :デフォルトの名無しさん:2012/07/31(火) 16:42:59.08 .net
質問があります
AfxGetMainWnd()->SetMenu(NULL); でメニューを削除したあと
もう一度メニューを表示させることはできますか?
いっかいダイアログを閉じないとメニューをみれないので困っています

251 :デフォルトの名無しさん:2012/08/01(水) 01:25:13.72 .net
オーナードローって
オーナーがドローするんですか?

それとも

オーナーをドローするんですか?

いまいちわからない。
カスタムドローってのもあるし・・・

252 :デフォルトの名無しさん:2012/08/01(水) 07:28:34.37 .net
>>251
オーナーがドローする。
カスタムドローはオーナードローの進化版。
ただ、MFCではDrawItemのオーバーライドやNM_CUSTOMDRAWの
メッセージリフレクションを利用して実装するので、
実際にはコントロールの派生クラス自身が描画するような感じになるけど。

253 :デフォルトの名無しさん:2012/08/01(水) 14:04:58.12 .net
VC++6.0のMFCで作ったActiveXコントロールが
64bit版WindowsのIE上でも動くのはなぜでしょうか?

254 :デフォルトの名無しさん:2012/08/01(水) 14:19:20.04 .net
64bit版WindowsのIEには32bit版と64bit版がある。

255 :デフォルトの名無しさん:2012/08/01(水) 14:21:20.16 .net
マジっすか

256 :デフォルトの名無しさん:2012/08/01(水) 19:05:47.96 .net
むしろ64bit版の方がオマケ扱い。

257 :デフォルトの名無しさん:2012/08/01(水) 19:37:09.67 .net
やはり64bitのIEだと32bitのocxは動かないんですね

258 :片山博文MZボット ◆0lBZNi.Q7evd :2012/08/04(土) 14:55:43.15 .net
>>250 GetMenuで保管しておき、後でまたSetMenuする。

259 :デフォルトの名無しさん:2012/08/08(水) 16:41:02.14 .net
MFC標準機能でダイアログアプリを作って起動させます
これを別アプリで終了させたいんですけど可能ですか?
タスクマネージャでの終了みたいに強制終了じゃなくて
あたかも終了ボタンがおされEndDialog(IDOK)が呼ばれたかのように
安全に終了させたいと思っています
出来ればダイアログアプリに外部から終了させるための特別な処理は入れたくありません。
あくまで外部から正常終了させる物を作りたいのです
よろしくお願いします

260 :デフォルトの名無しさん:2012/08/08(水) 17:23:38.89 .net
どちらかと言えば
可能です


261 :デフォルトの名無しさん:2012/08/08(水) 17:25:30.51 .net
もちろん可能ですよ。

262 :デフォルトの名無しさん:2012/08/08(水) 17:28:43.86 .net
具体的にどうやるんですか?
教えてください

263 :デフォルトの名無しさん:2012/08/08(水) 17:30:47.45 .net
馬鹿には無理

264 :デフォルトの名無しさん:2012/08/08(水) 17:44:00.42 .net
ここで聞いても無駄
小学生にもわかるレベルのことは即応えるけど
技術必要なものははぐらかすだけだから
つまり素人の暇つぶしスレ

265 :デフォルトの名無しさん:2012/08/08(水) 17:49:06.43 .net
>>259
SendMessage


266 :デフォルトの名無しさん:2012/08/08(水) 17:50:39.75 .net
漏れでも出来そう

267 :デフォルトの名無しさん:2012/08/08(水) 17:51:50.21 .net
プロが小学生に質問するスレはここですか?

268 :デフォルトの名無しさん:2012/08/08(水) 18:06:21.33 .net
Spyでメッセージ調べて、そのメッセージをSendMessage()で投げるだけの簡単なお仕事。

269 :デフォルトの名無しさん:2012/08/08(水) 18:38:20.03 .net
x 馬鹿には無理

o おまえには無理


270 :デフォルトの名無しさん:2012/08/08(水) 18:39:46.43 .net
ウィンドウのハンドル取得って制限なかったっけ

271 :デフォルトの名無しさん:2012/08/09(木) 19:08:40.27 .net

あほや!!
発作か〜!!


272 :デフォルトの名無しさん:2012/08/09(木) 21:05:35.13 .net
Monday Football Common!!!

273 :デフォルトの名無しさん:2012/08/12(日) 21:24:07.35 .net
mfcって.netより遅いの?

274 :デフォルトの名無しさん:2012/08/12(日) 21:55:46.48 .net
遅いとか意味がよく分からない

レジストリを勝手に使ってやり取りしてたりするから
その分起動に時間は掛かるけど
.Net Frameworkを起動する程じゃない

それ以上の話はWindowsAPIと大して変わらない

275 :デフォルトの名無しさん:2012/08/23(木) 11:13:26.69 .net
PCが高性能になるとそうとも言えない
APIよりCPUに最適化された中間言語の方が高速になる
もうそうなってきてるよ

276 :デフォルトの名無しさん:2012/08/23(木) 13:44:22.71 .net
中間言語が早くなっても、Windows.Forms系の処理はAPIを経由してるんだから
そこは変わらないって

277 :デフォルトの名無しさん:2012/08/23(木) 13:51:37.57 .net
中間言語のほうが速いなんてありえない

278 :デフォルトの名無しさん:2012/08/24(金) 00:09:18.30 .net
レースゲーでオートマよりマニュアル車の方が
最高速度が速いのと同じような感じじゃないかなあ。
下手な書き方すると、MFCの方が速度落ちそうだし。

279 :デフォルトの名無しさん:2012/08/24(金) 08:30:12.89 .net
文字列連結するのに1文字ずつ領域解放→再確保やっちゃうとか?

280 :デフォルトの名無しさん:2012/08/24(金) 11:19:38.43 .net
std::vector ですねわかります

281 :デフォルトの名無しさん:2012/08/28(火) 10:58:59.48 .net
MFCでwininetを使ってhttpでwebページの取得をしています。
以前まではできていたのですが、先日急にデータが欠落するようになりました。
具体的には、22kBほどのwebページを取得するのに、
2kBくらいでぶつっと切れてしまっています。

CHttpFile::Readの戻り値(取得したデータ長)は切れた部分まで(2k程度)になっています。
QueryInfoStatusCodeでは200が返ってきていますが、
firefoxでアクセスしてパケットのやり取りを見てみると、
最初は302が返ってきて、2〜3度転送されているみたいでした。

SendRequestからReadまでの間にSleep(1000)を入れると取得できるデータ長が
10k以上に増えましたが、やはり途中で切れてしまいます。
Sleepの数値を2000にしたら、すべて受信できるようになりました。
GetQueryInfoで、HTTP_QUERY_CONTENT_LENGTHを取得しようとしたら、
ヘッダが存在しないとエラーが出ました。(errcode:12150 ERROR_HTTP_HEADER_NOT_FOUND)

以前はこんなことは起きなかったのですが、何故だかわかる方はいるでしょうか?
Sleepで改善したということは、SendRequestの後に完了待ちをする必要があるのでしょうか?

282 :デフォルトの名無しさん:2012/08/28(火) 19:23:31.23 .net
>>281
その時点で受信できていた分だけを返してるような気がする。
確か0で戻ってきたら完了じゃなかったっけ?

283 :デフォルトの名無しさん:2012/08/28(火) 19:45:51.15 .net
自分もそう思い、Readで0が返ってくるまで繰り返すようにしてみたのですが
2回目のReadでは確実に0が返ってくるようで、ダメでした。

googleなどで色々と調べてみたのですが、Readの戻り値としては
「指定したbyte数【以下の値が】返ってきたら完了」という記事が一般的なようで、
先ほどの試験結果とも一致するので、そもそも少ない値が返ってくる時点でNGだと認識しました。

それにしては、Sleepで全部読み込めるようになったり、不可思議な点が多いのですが…

284 :デフォルトの名無しさん:2012/08/29(水) 00:00:53.95 .net
select

285 :デフォルトの名無しさん:2012/08/29(水) 11:46:34.07 .net
Sleep()で返る時間が変わるということは、単に経由している回線が細い
とか、Webサイト側でページを動的に生成に時間が掛かっていたり、ボット
対策でリファラーを見ていたりや、ブラウザの種類で何か細工しているん
でないの?

短く途切れる時の取得データと、「Webブラウザのリンク先を保存」などで
取得した正常データの先頭の中身は一致しているか確認した?


286 :デフォルトの名無しさん:2012/08/31(金) 08:43:17.41 .net
どこのリソース取得かを聞かないのは
この板のやさしさかな

287 :デフォルトの名無しさん:2012/09/04(火) 16:19:04.15 .net
>>285
返事が遅くなってしまい、すいませんでした。
先頭というより、切れている部分までは完全に一致しています。
リファラーとUAは、ブラウザで見る場合と同じ値に設定しています。

Web側でページを動的に生成しているとは思います。(更新ごとに内容が変わるので)
ただ、「Webサイト側で生成するのに時間がかかる」としても、
CHttpFile::Readで読み出す場合は問題ないと思っていたのですが…
(ページ内容を全て取得してからロードする、という関数ですよね?)

もしそうでないならば、以下の関数の実装が必要な気がします。
・途中まで読み込んだ後、再度実行することで、残りを読み出せる必要がある。
 (完了した場合は、戻り値、もしくは完了判別関数で、完了したかを判別する)
・Readする前に、「Webページ側の準備完了まで待つ」もしくは「完了を通知する」機能

色々と調べてみたのですが、どちらも見つからないのですよね…。

288 :デフォルトの名無しさん:2012/09/04(火) 19:17:21.44 .net
MFCのソースを見てみる事をお勧めする。
APIのレベルで色々試せば何か見えてくるかもしれないし。

289 :デフォルトの名無しさん:2012/09/04(火) 22:11:53.34 .net
既にやってるかもしれないけど
CInternetSessionのOnStatusCallback()を実装して
もう少しstatusを細かくチェックしてみては。
ネットで検索してもほとんど出てこないけど
中身はWinInetのInternetSetStatusCallback()だから
そっちで検索するといいよ

290 :デフォルトの名無しさん:2012/09/06(木) 10:29:04.71 .net
>>288-289
ありがとうございます。ちょっとそのあたりを確認して色々と試してみます!

291 :片山博文MZボット ◆0lBZNi.Q7evd :2012/09/06(木) 15:02:34.00 .net
もう、MFCは必要なくなった。これからは全部手作りで自由にハックできる。

292 :デフォルトの名無しさん:2012/09/11(火) 01:44:59.84 .net
win7にmfc71.dll入れる場合って何を入れれば入るんだ?
ぐぐっても出てこんわ。

293 :デフォルトの名無しさん:2012/09/11(火) 05:01:33.08 .net
馬鹿には無理

294 :デフォルトの名無しさん:2012/09/22(土) 18:30:35.99 .net
>>292
Visual C++ .NET 2003 に含まれるやつだな。
残念ながら、公式の再頒布パッケージは存在しないので、
ベクター辺りから拾ってくるしかない。
「VC++ .NET ランタイムインストーラー」に入っているのは確認した。

295 :デフォルトの名無しさん:2012/10/17(水) 00:30:47.15 .net
GUIでアプリケーションを作成する場合、MFCを使うべきですか?CLRフォームアプリケーションから作成するべきですか?
MFCは重い古いとか言われますが、、、CLRとMFCを同類としてしまってもいいのかもわかりませんが、、、Visual Studioを利用している限り、
この2つが並ぶので…

296 :デフォルトの名無しさん:2012/10/17(水) 00:41:07.53 .net
>>295
WTLで

297 :デフォルトの名無しさん:2012/10/28(日) 15:53:28.54 .net
MFCでスレッド作る時AfxBeginThread()使ってるんだけど、第一引数で指定するスレッド本体の関数はstaticじゃないとダメっぽい。
となるとstatic関数(スレッド本体)からは、そのクラスのstatic変数にしかアクセスできないから、そのクラスに定義されている変数を全てstaticに
変更したいのだが、一個ずつstaticを付けていくしかない?変数が大量なんどす、、、。

298 :デフォルトの名無しさん:2012/10/28(日) 15:55:31.52 .net
元のソースは非MFCだったから(スレッド作成時のスレッド本体が静的でなくてもいいから)this->でいけたんだが、MFC用に改良する状況になっちゃいまして、、、
そもそもMFCのスレッド本体が静的じゃないとあかん理由もよくわかってませんが…
長文すみません。。。

299 :デフォルトの名無しさん:2012/10/28(日) 16:04:06.37 .net
>>297-298
pParamにインスタンスのポインタを渡して、
スレッド本体からそのインスタンスのメソッドを呼ぶ形にすれば良いんじゃないか?

300 :デフォルトの名無しさん:2012/10/28(日) 16:20:24.69 .net
>>299
現状だと、メインダイアログへのハンドル(文字列表示のためにPostMessage()するため)がpParamに入ってるんです。
構造体かなんかにしてインスタンスのポインタも同時に渡せますかね。

301 :デフォルトの名無しさん:2012/10/28(日) 16:48:15.93 .net
>>297
>static関数(スレッド本体)からは、そのクラスのstatic変数にしかアクセスできないから、

これ都市伝説だから。

302 :デフォルトの名無しさん:2012/10/28(日) 18:48:07.74 .net
えぇっ!?

303 :デフォルトの名無しさん:2012/10/28(日) 21:48:35.73 .net
>>301

え?

304 :デフォルトの名無しさん:2012/10/28(日) 22:42:36.88 .net
>>300
そもそも、そんな質問をしてるような奴にマルチスレッドは無理。

305 :デフォルトの名無しさん:2012/11/09(金) 09:29:05.87 .net
マルチスレッドなんていまどき保育園児だってしてるわハゲ

306 :デフォルトの名無しさん:2012/11/18(日) 14:54:48.27 .net
MFCで作ったソフトをブラウザ上で実行するには、どうすれば良い?
OfficeやAdobe Readerの様に動かしたいです。

307 :デフォルトの名無しさん:2012/11/18(日) 16:16:33.93 .net
activex

308 :デフォルトの名無しさん:2013/03/04(月) 03:41:59.66 .net
cfilefindで、指定フォルダ内の全フォルダの情報を読み出すプログラムを作成しているのですが、
フォルダのプロパティで出た数と、プログラムで読み出した数とで異なるフォルダがあります。

フォルダの階層もちゃんと再帰的に読み出しています。
試しに色々なファイルをフォルダに階層的に入れて数えましたが、
ファイル数303とかちゃんと合っているフォルダもあれば、

実際に確認したいファイル数10136 フォルダ数1654のフォルダでは、
合計11522と、少なく出ます。

FindNextFileのエラー情報も出しましたが、すべて18でした。

なにが原因なんでしょうか?

309 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/04(月) 05:48:08.61 .net
隠しファイル、システムファイル

310 :デフォルトの名無しさん:2013/03/04(月) 11:21:18.51 .net
ソースも貼らずに何を言っておるのかね

311 :308:2013/03/04(月) 20:29:04.81 .net
>>310 そーですよね。
なにか既知の問題とかないかと思ったもので。

原因わかりました。
Cfilefindは問題ありませんでした。
ファイル名に、HTMLの半角文字「&nbsp;」が使われていて、
ワイド文字からマルチバイト文字に変換するときに、nullに変換されていました。
すれよごしすまんです。

312 :デフォルトの名無しさん:2013/03/05(火) 17:24:36.94 .net
通常使用するプリンタの印刷設定で用紙サイズがありますよね?
例えばB5とA4の切り替えをVCプログラムでやりたいのです
やりたいのは用紙サイズ切り替えだけで印刷はしません
印刷はExcel等の印刷ボタンで行います

プリンタの印刷設定の用紙サイズの変更方法(使用するクラス?)など
又は例が載ってるサイトなどがありましたらお教え下さい
よろしくお願いします。

313 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/05(火) 19:48:51.03 .net
GetProfileString,strtok,OpenPrinter,DocumentProperties,DEVMODE

314 :デフォルトの名無しさん:2013/03/05(火) 22:49:10.16 .net
ありがとう
教えてもらったワードで検索してSDKサンプル見つけました
やりたいことができそうです

315 :デフォルトの名無しさん:2013/03/05(火) 23:51:44.81 .net
>>314
基本的に片山は嘘をつくから相手にしないほうがいい
それに片山の相手をしていると他の回答者に無視されるよ

316 :デフォルトの名無しさん:2013/03/05(火) 23:52:58.75 .net
>>315
またお前か

317 :デフォルトの名無しさん:2013/03/06(水) 07:48:12.66 .net
片山さんは真実を教えてくれたよ?
今度から信じるよ?

318 :デフォルトの名無しさん:2013/03/11(月) 17:38:32.83 .net
過疎

319 :デフォルトの名無しさん:2013/03/24(日) 00:36:21.77 .net
質問です。
CTimeSpan::GetTotalSeconds()は閏秒を含んでいますか?

例えば
CTime BirthDay(nYear, nMonth, nDay, nHour, nMin, nSec);
CTime Today(__time64_t(NULL));
CTimeSpan Age = Today - BirthDay;
としたときに、Age.GetTotalSeconds()の戻り値は
2つのCTimeインスタンスの間の期間に挿入された
閏秒を加算した秒数になりますか?

320 :デフォルトの名無しさん:2013/03/24(日) 11:12:08.12 .net
>>319
なるよ。
BirthDayもTodayも__time64_t型の時間を持ってるだけだし。

321 :デフォルトの名無しさん:2013/03/24(日) 15:57:38.80 .net
ならないでしょ
うるう秒がいつ起こったかなんてライブラリは知らないだろうし、
OSもそもそもサポートしてないから知る手段ないのでは

http://support.microsoft.com/kb/2722715/ja

322 :デフォルトの名無しさん:2013/03/24(日) 21:41:31.38 .net
>>321
確かにOSが知らないのであればMFCにも反映されて無さそうですね。
CTimeの派生クラスを作って、operation - や + の際に閏秒の判定と
加減をするよう定義することにします。
ありがとうございました。

323 :デフォルトの名無しさん:2013/03/25(月) 00:36:19.76 .net
まあ過去のうるう秒のあった時刻をまたいで実験してみればいいだけだね
やってみようとおもったが手元にMFCの環境が無いわ、、、

324 :デフォルトの名無しさん:2013/03/25(月) 07:07:49.62 .net
対応は無いよ

325 :デフォルトの名無しさん:2013/03/26(火) 23:20:58.52 .net
CStdioFileのReadStringのfgetsが+1してる件

326 :デフォルトの名無しさん:2013/03/26(火) 23:58:29.64 .net
VS2012付属のソース見る限りは、
最大長+1=バッファ長という意味合いで使っているんじゃないか?
CString::GetBufferは指定文字数+NULL文字のバッファを返すし。

327 :デフォルトの名無しさん:2013/03/28(木) 00:04:33.33 .net
フローチャートかくつーるを作りたい。手始めに四角図形をドラッグ出来るようになりたいけど、ドラッグイベントはないし、どうすればいいの?

328 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/28(木) 00:39:45.35 .net
>>327
WM_LBUTTONDOWNが来たらPtInRectで四角の中か判定、SetCaptureしてフラグを立てる。
WM_MOUSEMOVEが来たらフラグを確認、移動後の位置を計算、再描画で四角を動かす。
WM_LBUTTONUPが来たらフラグを下ろしReleaseCaptureして移動後の位置を計算、再描画で四角を動かす。

329 :デフォルトの名無しさん:2013/03/28(木) 02:05:06.91 .net
ドラッグとりあえず出来ました。ありがとう。
ただドラッグ前の図形が表示削除できていないや。楽に消すとコツあります?

330 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/28(木) 05:50:40.39 .net
>>329
InvalidateRect
WM_PAINT
WM_ERASEBKGND
ダブルバッファリング

331 :デフォルトの名無しさん:2013/03/28(木) 09:48:06.91 .net
DrawClient サンプルを見た方が良い
フラグを使うなら WM_CAPTURECHANGED も処理する必要がある

332 :デフォルトの名無しさん:2013/03/28(木) 22:09:09.98 .net
もと図形の削除もできた、drowclientはまだ見てない。

図形の左下をクリックして動かすと左下を掴んだまま図形を動かすのは難しい?

四角図形の座標とマウス座標の相対座標も計算するのかな

333 :デフォルトの名無しさん:2013/03/29(金) 05:49:47.99 .net
WinFormsやWPFがあるのにわざわざMFCで作る理由ってなに?

334 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/29(金) 07:45:11.41 .net
>>332
GetCursorPos、ClientToScreen、ScreenToClientを使って座標系を統一して
ホットスポット(図形からマウスへの相対位置)を計算。
マウスの位置からホットスポットを引けば図形の新しい位置が求まる。

335 :デフォルトの名無しさん:2013/03/29(金) 07:57:01.32 .net
>>334
ありがとう出来ました。
あとはドラッグ中に画面更新して画面がちらつくのが気になるだけですね。
グリッドを表示させてみたんですがボタンや線がチラチラしすぎ。

メモリーデバイスコンテキスト検討しようかな

336 :デフォルトの名無しさん:2013/03/29(金) 08:48:40.52 .net
wixformsやwfpがそもそも何かわからないです。それだとフローチャートを書くツールを作りやすいんですか?

337 :デフォルトの名無しさん:2013/03/29(金) 08:57:56.13 .net
>>336
そういうのに特にwpfはめっちゃ向いてる

338 :デフォルトの名無しさん:2013/03/29(金) 09:36:27.67 .net
DrawClient見りゃ質問した内容は全部書いてあるのに…
そもそもそのツールを作る理由って何?
プログラムの勉強をしたいのかと思ってたけど、ツールが欲しいだけの
ような気がしてきた…

339 :デフォルトの名無しさん:2013/03/29(金) 13:01:26.49 .net
質問した理由は、umlのような図形プログラムを作りたかったからです。
かなり用途を限定したRPGツクールのプログラム版のようなものでしょうか
だから自作実装しておきたい。

340 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/29(金) 13:18:40.56 .net
>>335
ちらつきをなくすならWM_ERASEBKGNDとメモリDCですね。

341 :デフォルトの名無しさん:2013/04/04(木) 08:35:29.83 .net
>>340
書き込み規制で遅くなったけど メモリーdcは少し面倒だったので、WM_ ERASEBKGND で対応しました。
当初の目標は達成できましたが、 フローチャートを描くツールとしては 図形クラス設計しておいて、 表示や当たり判 定、図形の中に文字を書くなどなどですね

342 :デフォルトの名無しさん:2013/04/04(木) 08:40:42.10 .net
WPFのベクタグラフィックス最高だぞ

343 :デフォルトの名無しさん:2013/06/15(土) 01:17:00.33 .net
このスレは生きているのかな?

BOOL Cmessage_winDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、
// Framework は、この設定を自動的に行います。
SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定
// TODO: 初期化をここに追加します。
SetWindowPos(&Cmessage_winDlg::wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。
}

ダイアログウインドウを出すだけのプログラムですけど、
普通に起動すると常に最前面に出せるのに、
タスクマネージャーにより起動させると、常に最前面になりません。

なんで?

344 :デフォルトの名無しさん:2013/06/15(土) 22:38:41.60 .net
WS_EX_TOPMOST

345 :343:2013/06/19(水) 19:47:44.63 .net
thanks

346 :デフォルトの名無しさん:2013/06/29(土) 21:32:41.43 .net
ドキュメント/ビューの基本的なところで教えてください。
SDIではCDocumentとCViewが使いまわされますが、あるドキュメントで作業した後に
別のドキュメントを開いた際、それまで使用していたCViewの後始末はどこで行えば
いいんでしょうか?
CView::OnInitialUpdateの冒頭で初期化に先立って行うのが普通なんでしょうか?

347 :デフォルトの名無しさん:2013/06/30(日) 10:03:31.41 .net
SDIならそうするしかないんじゃないの

348 :デフォルトの名無しさん:2013/06/30(日) 11:28:36.66 .net
なるほど、ありがとうございます。
そうすると、CView::OnInitialUpdateはCDocument::DeleteContentと違って
終了時に呼ばれないですから、同じ後始末処理をOnDestroyかどっかと
両方に書かなきゃならないんですかね。

349 :デフォルトの名無しさん:2013/06/30(日) 12:59:08.90 .net
>>346
何なのかわからないけど、その後始末の必要な物をCDocument側に置けないの?

350 :デフォルトの名無しさん:2013/06/30(日) 13:54:16.13 .net
MFC+SDIなら綺麗な設計にはならんw

351 :デフォルトの名無しさん:2013/06/30(日) 16:19:10.64 .net
>>349
具体的には、ドキュメントの内容に応じて動的に作成するコントロールなどです。

352 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN .net
CDockablePaneとかのMFCの比較的新しい機能を解説した書籍ってないもんかな。

353 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN .net
VS2008のMFCで、CMDIFrameWndEx::ShowFullScreenを使って全画面表示をしようとしています。
ただ、そのままだと完全な全画面にはならずタブと枠が残ってしまいますが、完全な全画面に
するにはどうすればいいでしょうか?
ちなみにCFullScreenImpl::EnableTabsAreaで制御できるのかなと思いましたが、アクセスする
方法がわかりませんでした。

354 :デフォルトの名無しさん:2013/07/28(日) NY:AN:NY.AN .net
MFCの共有DLLを読み込んだDLL同士でスレッド情報を共有させ、CWndの仮想関数を
機能させるには、それぞれのDLLのエクスポート関数の先頭にマクロを書けば良いのですか?

355 :デフォルトの名無しさん:2013/08/08(木) NY:AN:NY.AN .net
telnetネゴシエーションがよくわからない。mfcのソースコピーできるとこない?

356 :デフォルトの名無しさん:2013/08/10(土) NY:AN:NY.AN .net
エスパーさん ━キョロ━(゚∀゚≡゚∀゚)━キョロ━マダ━?

357 :デフォルトの名無しさん:2013/09/03(火) 22:50:16.50 .net
タブ形式のMDIでクローズボックスを表示させない方法ってありますか?
検索するとhttp://support.microsoft.com/kb/201553/jaのような方法は
見つかるのですが、どうもタブ形式では効かないようで。

358 :デフォルトの名無しさん:2013/09/08(日) 20:53:43.35 .net
.NET 2003なんですけど、プロジェクトを作成した時点で
例えば#include "LeftView.h"ってソースにインクルードされてるのに、
いつのまにか自動的に#include ".\leftview.h"
とかってソースに追加でインクルードされるのを抑制することは出来ますか?
VS6とか、以前のバージョンではこんな余計な機能無かったのに。
うざくてしょうがない。

359 :デフォルトの名無しさん:2013/09/09(月) 00:42:20.96 .net
>>358
VisualStudioスレへどうぞ。

360 :デフォルトの名無しさん:2013/09/12(木) 19:20:25.96 .net
VS2010のVC++でCListCtrlのCreateDragImageでドラッグアンドドロップを実装しています。
開発、動作とも32ビット環境で、Unicodeでコンパイルしています。
XPとWin7で作成される画像が違うのですが、仕様が変わったのでしょうか?
リストコントロールはFULLROWSELECTにされていて、XPでは存在する全ての列のイメージが作成されますが
Win7だと一番左のセル1個の画像だけ作られて、他の列は作られません。
全く同じバイナリを動作してXPと7で差があるのですが、それに関する文献はありませんか?

361 :デフォルトの名無しさん:2013/10/02(水) 15:02:10.69 .net
MFCでIPアドレスコントロールをReadOnlyにしたいのですが関数がありません
どうにかReadOnlyにすることはできませんか?
DisableではなくReadOnlyにしたいです

362 :デフォルトの名無しさん:2013/10/02(水) 17:09:04.63 .net
ReadOnlyなら自前で書けばいいじゃん。
つーか、目的を書いた方が早いよ。

363 :デフォルトの名無しさん:2013/10/04(金) 18:05:52.81 .net
ダイアログアプリにメニューを設け、起動時に特定の条件の時にメニューに新規項目を追加する、
と言うのをやりたいと考えています。
メニューバー部(最上位)に1件追加し、その下に項目を設けたかったのですが、最上位に追加した
項目をGetSubMenu()するとNULLが帰ってきて、当然その下に項目を設けることができません。

CxxDlg::OnInitDialog()
{
  // <省略>
  CMenu *mnu = this->GetMenu();
  mnu->AppendMenu(MF_STRING , ID_MNU_0001, _T("test"));
}

CxxDlg::OnInitMenu()
{
  CDialog::OnInitMenu(pMenu);
  CMenu *mnu = this->GetMenu();
  CMenu *mnuSub;

  mnuSub = mnu->GetSubMenu(4);  // (新規追加項目の位置)
  ASSERT(mnuSub);  // ここでエラー
}
 最上位への追加まではできているのですが、追加した項目のCMenu*を得るにはどうすれば良いでしょうか?

364 :デフォルトの名無しさん:2013/10/04(金) 20:51:42.84 .net
>>363
最上位に追加するメニュー項目の時点で間違い。
そこは、作ったポップアップメニューを追加するという形になる。
実装方法の詳細は以下のURLを参照。
http://msdn.microsoft.com/ja-jp/library/vstudio/ya33w9f2.aspx

365 :デフォルトの名無しさん:2013/10/08(火) 21:04:30.33 .net
MFCのリスト表示で悩んでいます。
どうすれば良いか方法を教えて下さい。
よろしくお願いします。

[環境]
・Windows7 Professional 64bit/Microsoft Visual Stadio 2005
・MFCダイアログベース

[やりたいこと]
・ MFCリストボックスの文字列表示(インデント)を揃えたい
 →こんな風に表示したいです(http://www.dotup.org/uploda/www.dotup.org4564440.jpg
・ 1列に「Address Length Parameter Message」の表題をつけた後にそれぞれの情報を表示したい
・ Addressは8桁固定、Lenghtは4桁固定、parameterは2〜8桁可変、メッセージは可変長(最大32文字 2バイト文字あり)で表示したい

[試した事]
1. リストボックスの追加(AddString)をする際に全角スペースや\tを入れてみた
  →結果はガタガタで全く揃わなかった
2. MultiColumnを有効にしてみた
  →やりたい事と違っていた(リストが水平方向に表示された)
3. SetTabStopsを使ってみた
  →下記リンク先の記事を参考にして実装してみたが何が変わったのか分らなかった。
  →http://msdn.microsoft.com/ja-jp/library/vstudio/25d6hs9f.aspx
  →http://mfc-ml.ldblog.jp/archives/305171.html
4. オーナードロウを使ってみる
  →下記リンク先の記事を参考にして複数行のリストボックスは表示出来た。ベースを弄って見たが(Height→Widthに変えるとか)複数列は出来なかった
  →http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_LBowner.html

366 :デフォルトの名無しさん:2013/10/09(水) 00:40:39.71 .net
フォントを固定ピッチに変更するだけなんじゃ・・・

367 :デフォルトの名無しさん:2013/10/09(水) 20:23:05.72 .net
MS PゴシックじゃなくMSゴシックみたいにPが付いてないフォントを選べばいい

368 :365:2013/10/09(水) 22:18:18.60 .net
>>366-367
返信ありがとうございます。
とりあえずこんな風にしてみました。

// ヘッダのクラス定義内に登録
// 等幅フォントを格納するメンバ変数を定義する
CFont m_inFixedPitchFont;
CListBox m_list;


// 等幅フォントを作成します。
LOGFONT sLogFont;
memset(&sLogFont, 0, sizeof(LOGFONT));
sLogFont.lfHeight = 12;
sLogFont.lfCharSet = SHIFTJIS_CHARSET;
sLogFont.lfPitchAndFamily = FIXED_PITCH;
m_inFixedPitchFont.CreateFontIndirect(&sLogFont);

m_list.SetFont(&m_inFixedPitchFont);
m_list.AddString("Address Value Name Message");
m_list.AddString("[0x00000] [0002] [Jpeg Stat] Jpegのステータス");

こうすればとりあえずインデントを揃える事は出来ました。
AddStringは\tとかのエスケープシーケンスを自動で判断する事が出来なさそうなので
その辺の処理を追加するか、完全手動に必要がありそうですが・・。

もしもっと他に方法がありましたら教えてください。

369 :片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/09(水) 23:39:52.42 .net
列がいくつもある場合には、リストボックスよりもリストビューの詳細表示の方がいいよ

370 :デフォルトの名無しさん:2013/10/09(水) 23:56:52.70 .net
>>368
リストボックスのスタイル指定忘れが原因で、
タブ処理が有効になっていない予感。
VS2012のダイアログエディタだと「Use TabsStops」をTrueにする。
API的にはLBS_USETABSTOPSだな。

371 :デフォルトの名無しさん:2013/11/02(土) 18:48:46.47 .net
ある子ウィンドウで、キー入力のうち自分が処理しないものを親ウィンドウに処理してもらいたいとき、
OnKeyDown() の中から親に SendMessage(WM_KEYDOWN,...) で委譲するしかないですかね?
それとも他にもっと適した方法がありますか?
また、SendMessageで委譲するとした場合、他に併せて送らなければならないメッセージとか
ありますか?たとえばWM_KEYUPとか。

372 :デフォルトの名無しさん:2013/11/03(日) 05:12:50.93 .net
親のOnKeyDownを直接呼ぶ

373 :デフォルトの名無しさん:2013/11/04(月) 07:58:02.05 .net
初歩的な質問で恐縮です。
Windows 7 & VC++ 2010 で MFC をスタティックリンクで開発してきました。
今度、開発環境のOSだけ 8.1 にしようと思っております。
動作OSの下位互換は開発環境さえ変えなければ維持できるでしょうか?
(リンクするライブラリさえ変わらなければ問題無いと思うのですが)
それともそれを保証するなにかオプション設定は必要でしょうか?
ご教示お願いします。

374 :デフォルトの名無しさん:2013/11/04(月) 08:48:33.45 .net
テストは必須です。

375 :デフォルトの名無しさん:2013/11/04(月) 11:29:48.10 .net
>>374
実環境でのテストは必須として、基本的に問題ないということですね。(>>373

376 :デフォルトの名無しさん:2013/11/04(月) 11:33:17.77 .net
すべてはテスト次第です

377 :デフォルトの名無しさん:2013/11/04(月) 11:41:19.70 .net
「テストが必須」っていうのはお飾りじゃないよ。

378 :デフォルトの名無しさん:2013/11/04(月) 11:56:45.00 .net
>>376-377
はい、肝に銘じて。
ありがとうございます。

379 :デフォルトの名無しさん:2013/11/04(月) 12:07:22.56 .net
>>373
targetver.hでググッてみ

#define WINVER 0x0600
等の定義で、新OSでなければ動かないAPI等を弾ける
ただし100%信頼できるものではないので、テストは必須

380 :デフォルトの名無しさん:2013/11/04(月) 12:14:56.54 .net
そりゃターゲットのバージョンを変える場合だろ。

381 :デフォルトの名無しさん:2013/11/04(月) 12:38:08.38 .net
BCGライブラリをくっつけた今のMFCには、
OS依存のバグがかなりあるよ。

382 :デフォルトの名無しさん:2013/11/06(水) 20:36:39.31 .net
たとえば?

383 :デフォルトの名無しさん:2013/11/17(日) 17:35:08.43 .net
docviewsdiでxxxというプロジェクトを作成すると
CxxxViewクラスのヘッダファイルに
CxxxDoc* GetDocument();と宣言されている

CxxxDoc.hもincludeされていないのになぜコンパイルできるですか?

384 :デフォルトの名無しさん:2013/11/17(日) 21:56:18.63 .net
コンパイルされるのはソースファイルだから。

385 :デフォルトの名無しさん:2013/11/17(日) 22:25:06.54 .net
分かりました

386 :デフォルトの名無しさん:2013/11/18(月) 12:00:55.75 .net
使う側のインクルードの順番が違うとコンパイルが通らないのは、欠陥だと思うけどな。
通常はxxxView.h自身がxxxDoc.hをインクルードするか、前方宣言するべき。

387 :デフォルトの名無しさん:2013/11/18(月) 14:16:29.23 .net
pch肥大化対策か

388 :デフォルトの名無しさん:2013/11/18(月) 15:02:21.80 .net
循環回避だろう

389 :デフォルトの名無しさん:2013/11/19(火) 09:30:33.55 .net
MFCって、エラークラスありましたっけ?_?

390 :デフォルトの名無しさん:2013/11/20(水) 07:48:06.60 .net
CExceptionとか?

391 :デフォルトの名無しさん:2013/11/20(水) 10:36:58.89 .net
あ、あるんですか。

C++ Builderだと、throw Exception("err");、を良く見るけど、
MFCプログラムだと、throw CException("err")、ってのは見たことないですね。

392 :デフォルトの名無しさん:2013/11/20(水) 12:10:57.39 .net
>>391
AfxThrow〜〜〜Exception()ってのがいろいろある

393 :デフォルトの名無しさん:2013/11/20(水) 12:35:12.18 .net
>>391
CExceptionはMFCの全ての例外クラスの"抽象"基本クラスだから、アプリのソースに直接使われることは無いよ。
派生クラスのCFileExceptionなんかが良く使われる。

394 :デフォルトの名無しさん:2013/11/20(水) 17:55:35.24 .net
>C++ Builderだと、throw Exception("err");、を良く見るけど、

これってクラスのインスタンスを投げてるんじゃなくて
文字列を投げてるだけなんじゃないの?

395 :デフォルトの名無しさん:2013/11/20(水) 18:30:58.02 .net
>>394
Exceptionクラスのインスタンスを値で投げてる。
ここら辺、MFCは歴史的経緯でポインタを投げるから、
CATCHマクロでハンドリング、もしくはcatchしたらDeleteメソッド呼んで
明示的に削除とか妙な話になってるんだよなあ。

396 :デフォルトの名無しさん:2013/11/29(金) 21:24:48.64 .net
visual studio2012でMFCを使っているんですが、
各種コントロールを拡張して一つのライブラリにまとめたいと思っているのですが、
詳しいやり方が分からず困っています
mfc active コントロール ウィザード ってのでいいんでしょうか?
普段複数列のコンボボックスとかなにかと標準のでは
かゆいところに手が届かないと思うんですが、
皆さんはどのようにされていますか?

397 :デフォルトの名無しさん:2013/11/30(土) 01:54:22.82 .net
>>396
サブクラス化

398 :デフォルトの名無しさん:2013/11/30(土) 02:25:33.79 .net
>>397
サブクラス化
の意味知ってる?

使いたかっただけだよねw

399 :デフォルトの名無しさん:2013/11/30(土) 11:24:26.99 .net
「複数列のコンボボックス」の内容にもよるんじゃないか?
サブクラス化で実装できる内容もあるだろうし。

ライブラリ化するなら、ソースレベルに留めておいた方が扱い易そう。
ActiveXコントロールは明らかにやり過ぎとしても、
MFCのDLLとかにしても依存関係とかで面倒な話になりそうだし。

400 :デフォルトの名無しさん:2013/12/02(月) 20:48:21.51 .net
画面を作るときの書き方についてアドバイスください
画面にラインやテキスト、動的に生成したコントロール等を配置する際に、
int width = マウス等で広げた画面の幅
DrawText(_T("aaa"), CRect(20, 50, 120 + width, 70)...
と、もろに数字を書いて場所を指定しているのですが、
印刷も実装しようとした際に解像度が違うので、数値を変えないといけなくなってしまいますが、
皆さんは描画の際にどのように位置等を指定していますか?
画面の何%のようにすれば解像度が変わっても問題ないのでしょうが、
細かい調整等ができないのと、描画する物が多くなればなるほど面倒になります
こういう場合どういう実装が一般出来なのでしょうか
皆さんの意見をお聞かせください。

401 :デフォルトの名無しさん:2013/12/02(月) 21:13:02.67 .net
>>400 拡張メタファイルを使え

402 :デフォルトの名無しさん:2013/12/02(月) 21:35:28.65 .net
>>401
調べてみたのですが、こんなものがあったのですね
詳しい使い方がいまいち分からないのですが、
普通に描画して印刷の際に拡大縮小して表示するということでしょうか?
大量のリストを表示するような画面で、画面ではスクロールバーを生成して
画面に表示できる量だけを計算して表示しているようにしているのですが、印刷時は全部を印刷したいと思っています。
画面の描画も印刷も同じOnDrawでpDC->IsPrinting()で判断するようなので、
とりあえずOnDrawにすべて記述しているのですが、メタファイルの作成はあらかじめしておくのでしょうか?

403 :デフォルトの名無しさん:2013/12/02(月) 21:58:55.97 .net
CDC::SetMapModeで論理単位で指定するモードに切り替える。
たぶん。

404 :デフォルトの名無しさん:2013/12/02(月) 22:30:58.31 .net
表示と印刷の両方に使える描画関数を用意する。サイズなどは引数で抽象化する。
印刷する場合はアスペクト比を取得し、描画関数を使って
メタファイルを作成し、用紙サイズに合わせてメタファイルを描画する。

405 :デフォルトの名無しさん:2013/12/10(火) 20:03:54.43 .net
structにCStringをメンバとして含ませて、そのstructのオブジェクトをnewで大量に作成するとdelete時にコケる事がある
CStringが元凶だと分かるまでに1時間位かかった

406 :デフォルトの名無しさん:2013/12/11(水) 06:18:45.09 .net
ごめん>>405は忘れてくれ、全然関係ない事が原因だった

407 :デフォルトの名無しさん:2013/12/11(水) 10:22:33.81 .net
実はCStringをメンバとして持つ構造体にmemset()でクリアする馬鹿がいたとか。
十年前、私のいる会社でそれをやった馬鹿は今では立派に部長兼任理事ですw

408 :デフォルトの名無しさん:2013/12/11(水) 11:32:06.13 .net
まだCString使ってるひとがいたとは

409 :デフォルトの名無しさん:2013/12/11(水) 18:54:56.56 .net
MFC使ってるなら使わざるを得ないだろ

410 :デフォルトの名無しさん:2013/12/11(水) 19:12:59.24 .net
CString使って何が悪いの?

411 :デフォルトの名無しさん:2013/12/11(水) 19:20:10.65 .net
速度

412 :デフォルトの名無しさん:2013/12/11(水) 19:55:18.40 .net
どういう処理の速度が何と比べてどれぐらい遅いの?

413 :デフォルトの名無しさん:2013/12/11(水) 20:22:07.70 .net
中身はただのcharとかwchar_tなの知らないで、断片的にメモリ確保させまくって遅いとか言ってるんジャマイカ?

414 :デフォルトの名無しさん:2014/02/07(金) 19:55:50.98 .net
数年ぶりにmfcでPG作ったけどサクサク動く感じはいいなー

415 :デフォルトの名無しさん:2014/02/08(土) 10:26:19.29 .net
なんだかんだ言っても、ネイティブコード直結はレスポンスが良いからね。

416 :デフォルトの名無しさん:2014/02/08(土) 13:47:20.30 .net
CFileDialogにIFileDialogCustomizeでコントロールを追加する場合、やっぱり
ダイアログを表示した後は変更不可なんでしょうか?
OnTypeChange()で選択されたファイルタイプ毎に別の表示を行いたいと
思っているんですが。

417 :デフォルトの名無しさん:2014/02/08(土) 14:01:26.88 .net
既存のテンプレートに追加する仕組み自体
苦し紛れの裏技みたいなものじゃなかったかな

該当部分全体を1個の複合コントロールにまとめてしまって
コントロール内部の変化として吸収してしまう手はあるかもしれないw

418 :デフォルトの名無しさん:2014/02/08(土) 14:55:45.70 .net
Vistaから、テンプレートを使う方式のかわりにIFileDialogCustomizeになったんですよ。

419 :416:2014/02/08(土) 19:07:30.66 .net
自己解決。
一旦表示したらAdd/Removeできないのは仕様。
かわりにSetControlStateで見えなくすることはできる、ということらしい。

420 :デフォルトの名無しさん:2014/03/04(火) 23:52:51.41 .net
質問させてください。
windows7+VC2005の環境で、ダイアログベースのMFCアプリを作成しています。
目的はブラウザ(IE)のリンクをドロップし、リンクパスの表示と、リンク先のファイル(主にzipかlzh)をダウンロードすることです。
現在、ドロップを受け取る方法が分からず困っています。
ググるとファイルドロップの方法ばかりでリンクをドロップするにはどうしたらよいのかがわからないです。
(ゆくゆくはブラウザで選択した文字列を取得するドロップにも対応したいです。)
たまにテキストのドロップを受け付けられるサンプルソースがあるのですが、
MFCを使用せずに作成されており、どうやってMFCアプリに組み込めばよいのか理解できていません。
(ttp://hp.vector.co.jp/authors/VA016117/oledragdrop5.htmlを参考にしたのですが、DropTargetクラスをMFCで作成したクラスにどう組み込めばよいのかわからなかったです)

windowプログラム初挑戦で分からないことだらけなのですが、リンクのドロップを受け付ける手順を教えていただけませんでしょうか。
よろしくお願いします。

421 :デフォルトの名無しさん:2014/03/05(水) 00:25:03.37 .net
COleDropTargetかな?

422 :デフォルトの名無しさん:2014/03/05(水) 10:46:52.92 .net
.netならちょろいのになぁ

423 :420:2014/03/06(木) 01:25:01.97 .net
>421
COleDropTargetをダイアログクラスの面罵にして、Initでレジスト関数にポインタを渡すと
ドロップに対応できるくさいことはどこかのHPで呼んだのですが、上手くいっていなんです...
とりあえずDrop関数でbreakできるようになれば後は頑張れると思うのですが...
今日は別の仕事が立て込んでて作業できなかったので、明日もう少し向き合ってみます。
(携帯がauで規制かかってるため、日中質問したりできないのが辛い...)

>422
.netなら簡単に実装できるのですか。
Windowプログラミングをあまり必要としない分野なもので、手持ちのツールがVC2005しかないので駄目そうです。
残念です。

424 :デフォルトの名無しさん:2014/03/06(木) 07:22:51.09 .net
>>423
.netなら10行で実装できるぜ。
VisualStudioは無料だからいつでもダウンロードして使えるぜ。
サンプル
http://dobon.net/vb/dotnet/control/dropfromwebbrowser.html

425 :デフォルトの名無しさん:2014/03/08(土) 09:48:30.95 .net
>>424
そのコードをReflectorで解析すれば出来るんじゃないのか
根性があるのならば

426 :デフォルトの名無しさん:2014/03/08(土) 19:03:03.76 .net
>>420
かなり昔のことなのでだいぶ忘れてるけど
当時のソース見てみるとIDropTargetを継承したクラスを作って
仮想関数のDragEnter、DragLeave、DragOver、Dropをオーバーライドして
チマチマやってたみたい。ほとんどがwin95でも動くようにするためのコード
なのでwin95を捨てればほんの数行かも。

427 :426:2014/03/08(土) 19:05:41.94 .net
ごめん、これMFCじゃないね

428 :デフォルトの名無しさん:2014/03/12(水) 00:50:01.17 ID:Ja3A3JiQ.net
>>424
あっさり捨てられた環境を勧めなくても

429 :デフォルトの名無しさん:2014/03/16(日) 13:19:59.09 ID:JfqgfTA8.net
皆さんアドバイスをください
SDIで開発してて、ドキュメント1つに対してビューを2つ用意して、
一つは一つの商品の情報を表示して、もう一つは複数の商品の一覧を表示しています。
商品に対して表示する情報は同じなので、2つのビューで共通する処理が多数あるのですが、
(OnPaintの半分ほど、スクロール、マウス、キーボード等の処理はほぼ同じ)
この場合共通する処理だけ実装したビューを作成し、
それぞれが共通ビューを継承して違うところだけ実装した方がよいのでしょうか?
それとも後々処理が変わることを見越してこのまま同じ処理のビュー2つでいいのでしょうか?
むやみに継承しても他の人が触るときにどうなのか客観的にみて皆さんはどちらがいいと思いますか?

430 :デフォルトの名無しさん:2014/03/16(日) 13:44:15.19 ID:qeSKPaCp.net
>> それぞれが共通ビューを継承して違うところだけ実装した方がよいのでしょうか?
これに一票。小さいプログラムなら単一Viewを状況に応じて使い分けるってのもアリかも。

>> 他の人が触るときにどうなのか
あなたと引き継ぐ人の腕前が分からないと判断しかねます。

431 :デフォルトの名無しさん:2014/03/16(日) 21:15:21.38 ID:JfqgfTA8.net
>>430
ありがとうございます
システム関係の部署もなく現在は私一人で開発しているもので、
どうしても主観的になっているのではないかと思い客観的な意見が聞きたかったのでありがたいです!
できればもう一つアドバイスを頂きたいのですが、
現在exeをサーバーの共有フォルダに置いており、各クライアントからはショートカットで起動しているのですが、
このようなやり方はいかがなものなのでしょうか?
やはりなにか自動アップデート的な機能を付けた方がいいのでしょうか?
各システムの使用者はそれぞれ10名程度なので、更新するときはサーバーのだけ上書きすればいいので楽なのですが、
はたして正しいのかどうなのかひっかかってます…。

432 :430:2014/03/16(日) 22:06:38.19 ID:qeSKPaCp.net
read onlyなら問題無いと思います。サーバー上にドキュメントがあり、さらにその更新も
やるプログラムであれば、サーバー側にも1個別なPGがないと厳しいかも。

433 :デフォルトの名無しさん:2014/03/21(金) 07:50:08.86 ID:ptiv3+4J.net
ヘルプ(*.chm)が共有フォルダ上だと見れない(見るには要レジストリ変更)とか無かったっけ?
ヘルプは無いのかな

434 :デフォルトの名無しさん:2014/03/22(土) 22:24:24.27 ID:7IgIWHBV.net
CWndの1つ1つが別スレッドで出来てるってマジ?

435 :デフォルトの名無しさん:2014/03/22(土) 22:29:33.95 ID:EwCIeJkp.net
ないない

436 :デフォルトの名無しさん:2014/03/22(土) 22:33:41.89 ID:7IgIWHBV.net
そうだよね
読み間違えたか^^

437 :デフォルトの名無しさん:2014/03/29(土) 09:52:32.60 ID:WP7oRJZ8.net
Javaだとやりかねないけどな

438 :デフォルトの名無しさん:2014/05/20(火) 15:49:35.48 ID:egqFhnIS.net
ダイアログアプリケーションについての質問です。

ダイアログ上に貼り付けたピクチャーコントロールに、リソースからビットマップを選択して表示、
と言うのをやっています。
これに追加して、ビットマップの内側にあるあらかじめ色bで塗りつぶされている領域を、
あとから指定する任意の色(c)で塗りつぶす、と言うのを行いたいと考えています。

 CDC cDC;
 CBitmap *pOldBitmap;
 BITMAP bmp;
 CPaintDC paintDC((CWnd *)&m_Static);
 cDC.CreateCompatibleDC(&cpdc);
 pOldBitmap = cDC.SelectObject(&m_Bitmap);
 m_Bitmap.GetBitmap(&bmp);
 paintDC.FillSolidRect(0, 0, bmp.bmWidth, bmp.bmHeight, color_back);
 paintDC.TransparentBlt(0, 0, bmp.bmWidth, bmp.bmHeight,
  &cDC, 0, 0, bmp.bmWidth, bmp.bmHeight, color_Transparent);
 paintDC.FloodFill (15, 30, color_c); // <-ここで塗りつぶしを意図
 cDC.SelectObject(pOldBitmap);

 OnPaint()中でこんな感じにすれば出来るか、と考えていたのですが、うまくいきませんでした。
正しい(出来れば簡便な)手順はどのようになりますでしょうか?

439 :デフォルトの名無しさん:2014/05/20(火) 17:03:36.36 ID:mSiEAm6Z.net
ビットマップにメモリ上で描画してから張るしかないんじゃないの? MFCよく知らんけどw

440 :デフォルトの名無しさん:2014/05/20(火) 17:43:21.64 ID:fbMM1sIr.net
OnPaintなら引数でdcわたってくる

441 :デフォルトの名無しさん:2014/05/20(火) 17:50:37.88 ID:Dt1y8Hrx.net
CDC *pDC = m_Static.GetDC();
// 描画
m_Static.ReleaseDC(pDC);

じゃ駄目?

442 :デフォルトの名無しさん:2014/05/20(火) 18:17:50.66 ID:/jbaDLb2.net
仮にそれでうまく塗りつぶせたとしても、ピクチャーコントロールの再描画が発生したら
ピクチャーコントロールが持つ元のビットマップが再描画され、塗りつぶしは消えてしまうよ

443 :デフォルトの名無しさん:2014/05/20(火) 19:42:37.71 ID:fbMM1sIr.net
GetDCとかは描画のためじゃなくて属性の取得・切替くらいにしか使えない

444 :デフォルトの名無しさん:2014/05/20(火) 22:33:38.27 ID:3MxWeU1m.net
>>438
CPaintDCは基本的に、WM_PAINTのハンドラOnPaintで引数にthisを渡して使う。
他のウィンドウに書きたい時は442の通り。ReleaseDCは不要だけど。
また、443の通りなので、オーナー描画にしてOnDrawItemで描画する方が良さげ。
あと、ピクチャコントロールはCS_PARENTDCなので、
実際にはダイアログ上に直接描画するのと同じことになる。
FloodFillがコントロール外に溢れだすかと。

445 :439:2014/05/23(金) 21:19:46.12 ID:bGbo8U4D.net
 いろいろとアドバイスをありがとうございます。
 あれから、いろいろと自分なりに試行錯誤を続けていたのですが、
どうにもうまくいきませんでした……自分がアホなのが悪いのですが orz
(描画方面を触る機会が無かったので、セオリーが全然わからないのです)

 他力本願で申し訳ないのですが、似たような事例で参考になるページ等、
ご存じでしたら誘導をお願いできませんでしょうか?

446 :デフォルトの名無しさん:2014/05/25(日) 04:23:16.90 ID:1TiKn05Y.net
できないことは諦めるのがいいとおもうんだ。

447 :445:2014/05/25(日) 10:10:34.15 ID:LQ1sHYmR.net
.NETのWindowsForms使った方が楽。
あれだけグダグダ書いといてなんだけど。
今時こんな知識糞の役にも立たんよ。

448 :デフォルトの名無しさん:2014/05/28(水) 10:47:36.15 ID:GoJRs+ay.net
VS2013のC#でFormにいくつかのボタンやテキストボックス、
リストボックスなどある簡単なGUI作った経験があるのですが、
それと同じのをC++で作りたいのです。
それで、MFCのダイアログベースのアプリを試してみたのですが、
C++初心者の私には、ちょっと難しすぎて困っています。
C++で簡単なGUI作る何か良い方法ありませんか?

449 :デフォルトの名無しさん:2014/05/28(水) 12:43:57.89 ID:2nt5gxIs.net
>>448
目的によるんじゃね?

・.Netで楽したい
→C++/CLI
・MSに縋りつきたい
→VSで頑張ってMFC
・どうしてもC++は馴染めない
→WinAPI直呼び
・できれば他のOSでも使いたい
→QtをQtCreatorで

450 :デフォルトの名無しさん:2014/05/28(水) 13:57:12.78 ID:GoJRs+ay.net
アドバイスありがとうございます。
MFCを少し使ってみたのですが、例えばボタンを配置してダブルクリックすると
自動的にOnBnClickedButton1()関数が追加されますよね。
このあたりはC#と同じですが、でもその関数が不要になり削除してビルドすると
エラーしました。C#だと問題なくビルドできます。それでMFCは使いづらいなあと
いう印象を持ちました。
私としては、そんなに複雑なGUIを作る予定はないので、高機能なものよりも、
GUI作成時の操作性の良さを優先したいです。例えば上で指摘したような件は、
些細な事ですが私にとっては重要です。
WTLというのを試してみようかなと思っていますが、どうでしょうか?

>・.Netで楽したい
>→C++/CLI
C++/CLIは少しやってみましたが、複雑で断念しました。

>・MSに縋りつきたい
>→VSで頑張ってMFC
今ここで迷っています。

>・どうしてもC++は馴染めない
>→WinAPI直呼び
それは避けたい。

>・できれば他のOSでも使いたい
>→QtをQtCreatorで
これも試してみます。

451 :デフォルトの名無しさん:2014/05/28(水) 14:07:41.68 ID:D+f+jZyP.net
.hと.cppとMESSAGE_MAPの3箇所修正しないといけないな

452 :デフォルトの名無しさん:2014/05/28(水) 18:03:43.00 ID:6RxarYIU.net
Qt は初心者でも使えるけど、どちらかというと上級者向きで、使い込むほど上級にステップアップできる。
MFC は初心者向きで、いつまでたっても初心者を脱出できないカタワになること享けあい。

453 :デフォルトの名無しさん:2014/05/28(水) 21:26:02.80 ID:2bmOQwT6.net
つ C++Builder

454 :デフォルトの名無しさん:2014/05/28(水) 21:56:51.16 ID:vt8gBzLM.net
WTLはMFCよりメッセージ周り理解してないと面倒、昔はMFCみたいにVSから編集できたような気がしたが今はだめっぽい?
Win32++がウィンドウのサンプル多いから改造しやすいがリソースファイル周りがちょっと面倒

455 :デフォルトの名無しさん:2014/05/28(水) 23:19:13.72 ID:tZBZVEkH.net
>>450
大昔にC++Builder使ったことあるけどサクサク組めて簡単だった。
でもC++/CLIを複雑過ぎると言う方には、どうなんだろ。

C#やVBで、簡単なサンプルじゃなく、自分が欲しいアプリを出来るだけ妥協せずに
1本組んでみたらいかがでしょうか。その後でC++に手を出しても遅くないと思います。
今の段階ではマニュアルが読めないんじゃないかな?

456 :デフォルトの名無しさん:2014/05/28(水) 23:26:41.66 ID:8pIXW7AP.net
初心者なんだから情報の多いMFCでいいと思うがな。
C++自体初めてなのにわざわざマイナーな環境で苦労することはない。

457 :デフォルトの名無しさん:2014/05/29(木) 01:27:30.54 ID:yMYw3hJp.net
つうかIDE使うこととライブラリ使うことと言語がごっちゃになってるじゃん。
何使ったってうまく行かないよ、そういう人は。

458 :デフォルトの名無しさん:2014/05/29(木) 02:18:03.33 ID:PR7m/tdq.net
>>457
より良い開発環境を求めて何が悪いと?

459 :デフォルトの名無しさん:2014/05/29(木) 02:37:26.16 ID:yMYw3hJp.net
>>458
言語仕様は開発環境じゃ変わらないよ?
そんなこともわからない奴がより良い環境って。

460 :449:2014/05/29(木) 05:33:31.36 ID:82BFXyhl.net
WTL試してみましたがMFCと同じくらいややこしそうなので、やめました。
Qtは試していませんが、調べた限りではちょっと大掛かりな感じなので
やめました。
ということでMFCを勉強することにしました。
C#の場合だと、プロパティ設定でフラットスタイルや、上下左右のアンカー
など簡単でしたがMFCでは難しそうですね。それとタブコントロールにタブページ
の追加方法が分らなくて困っています。ああ、難しい。

461 :デフォルトの名無しさん:2014/05/29(木) 10:03:57.83 ID:7BbAPvjC.net
簡単さを求めるならC#一択だと思うんだけど
VC++に手を出すなら猫でも分かるプログラミングでも見て
API直叩きのプログラミングを経験した方が良いよ
MFCはそれを楽にするためのクラス群だし

難しいってのは基礎知識が無いってだけの話だからね
掛け算を知らないのに因数分解を学ぼうとするようなもの
そういった意味ではC#は完全に別物だよね

462 :デフォルトの名無しさん:2014/05/29(木) 22:27:10.25 ID:vpEOP7D2.net
>>461
MFCはそれ自体で完結しているから、MFCとWin32という界面の違いというだけで
どっちから始めても大して変わらんだろ。
Win32の知識があればMFCの個々の設計がなぜそのようになっているか理解
しやすいだろうが、Win32の設計を1から理解しようとしたら歴史の知識が必要だw

463 :デフォルトの名無しさん:2014/05/29(木) 23:40:45.66 ID:82BFXyhl.net
このHPを参考にしてComboBoxにアイテムを追加したいのですが、
http://www.g-ishihara.com/mfc_cb_01.htm

メンバ変数追加ウィザードの画面で、コントロール変数のチェックボックスなどがインアクティブ
な状態になっていて選択できません。できるのはコントロール変数ではなく、普通のint型などのメンバ
変数の追加のみです。
どうすればコントロール変数を追加できるでしょうか?
VisualStudio2013のMFCプロジェクトです。

464 :デフォルトの名無しさん:2014/05/30(金) 03:08:54.26 ID:+JiPsEdl.net
>>463
カテゴリの項目が「Value」になっていないか?

465 :デフォルトの名無しさん:2014/05/30(金) 08:02:41.98 ID:5UIEmL2b.net
>>464
カテゴリの項目もインアクティブで変更できませんでした。
その後、プロジェクトを保存して再度開いたりしていたら、
自然に解決しました。原因はわかりません。

466 :デフォルトの名無しさん:2014/06/03(火) 18:10:20.28 ID:hUkg2c+Y.net
MFCで作ったダイアログ画面を
IEとかでそのまま使う方法ありますか?
やりたいことは、遠隔からIEにIP指定して画面を起動したいです
ttp://111.111.111.111:8080/index.htmlみたいな感じで
ダイアログ画面を起動したいです
ASP.netとかじゃないと無理ですかねえ

467 :デフォルトの名無しさん:2014/06/03(火) 19:52:51.86 ID:x+JfIFfH.net
index.htmlからMFCのexeファイルへリダイレクト。
って話では無いよなあw
その説明だけだと、本当にやりたい事がわからないな。

468 :デフォルトの名無しさん:2014/06/03(火) 20:02:12.83 ID:ldg7iKBp.net
cgiのプロセスメモリを監視して
GUI遠隔操作とかやったことある

469 :片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 :2014/06/03(火) 20:14:14.90 ID:t1Kppqzn.net
MFCアプリの画面イメージやマウスクリックを通信する方法もあるけど、Win実機が必要になる。
素直に作りなおすといいよ。

470 :デフォルトの名無しさん:2014/06/03(火) 20:36:11.35 ID:ihOB1yvw.net
エスパー凄いな
びっくりだ

471 :デフォルトの名無しさん:2014/06/04(水) 17:22:01.33 ID:MuCyUmqy.net
PropertySheetにPropertyPageが数枚あるだけのシンプルなMFCアプリを
作りたいのですが、その場合、親のウインドウはダイアログウインドウになるのでしょうか?
それともダイアログウインドウ無しでPropertySheet自身が親ウインドウになれるのでしょうか?
一般的な方法を教えてください。

472 :デフォルトの名無しさん:2014/06/04(水) 17:28:06.51 ID:2ij5JthN.net
> 470
Uchan の出番だな

473 :デフォルトの名無しさん:2014/06/04(水) 22:03:25.69 ID:CdPl8bsr.net
>>471
好きに作ればエエ

474 :デフォルトの名無しさん:2014/06/04(水) 22:33:13.64 ID:jM6qArUI.net
>>470
ゆい姉さん

475 :464:2014/06/08(日) 12:51:14.20 ID:psuIHcXy.net
先日464で質問したのですが、今でもコントロール変数が追加できない症状が解決できません。
一時、治っていたのですが、また発症しました。
http://www.g-ishihara.com/mfc_cb_01.htm
を見ながら作っているのですが、
メンバ変数追加ウィザードの画面
http://www.g-ishihara.com/mfc_cb_01_05.png
で、コントロール変数のチェックボックスなどがインアクティブな状態になっていて選択できません。
つまり、3列あるこの画面で、中央と右側の列が全部インアクティブ状態で、左側の
 アクセス(A)
 変数の種類(V)
 変数名(N)
の欄のみ入力可能です。中央列のコントロール変数チェックボックスが有効に出来ないのです。
どうすればコントロール変数を追加できるでしょうか?
VisualStudio2013のMFCプロジェクトです。

476 :デフォルトの名無しさん:2014/06/08(日) 13:51:27.69 ID:OVTpY++G.net
>>475
プルダウンのボタンを右クリックしてるとか?

477 :デフォルトの名無しさん:2014/06/12(木) 09:18:24.66 ID:GvZA3DBS.net
MFCのソースはスパゲッティーだと思う人いますか?
ちなみに自分は思います。

シンプルなことを複雑に書いてしまっているので、ちょっとした機能向上
のために自前で何かを追加すると、アクティブ化やDocking, Floating関連、
CFrame,CView,CDocument関連の一部で妙な不具合が出てきます。

478 :デフォルトの名無しさん:2014/06/12(木) 09:26:17.26 ID:GvZA3DBS.net
Document&View Architecture は、一つの CDocumentを複数のCViewで
表示する事が基本理念なのに、VC++6.0のMFCで用意されている関数は、
CFrame,CView,CDocumentを一括で作成する物だけで、既存の
CDocumentを新しいCViewにリンクするような関数は無いようです。

メッセージ・ルーティングも、実装が複雑なせいか、Doc&View
Architecute から離れて、単独の CView や CWnd などを持つと、
当たり前のことが当たり前に出来ないような事態になります。

479 :デフォルトの名無しさん:2014/06/12(木) 09:43:07.98 ID:XjWc7dDP.net
ちなみに自分はどうでもいいです。

480 :デフォルトの名無しさん:2014/06/12(木) 09:52:17.91 ID:iyKKJxWh.net
CDocument::AddView じゃ出来ないってこと?

MFCをそのまま使うだけじゃ出来ないことも多いけど
使い方を理解せずに「出来ない」って言ってるようにしか見えない

481 :デフォルトの名無しさん:2014/06/12(木) 10:00:12.19 ID:GvZA3DBS.net
VC++6.0でMFCのMDIアプリのプロジェクトを作成し、直後にビルド。
アプリに作成されたCViewの継承クラスに OnActivateView() の仮想関数を
追加。その中で:
MyDebugPrintf( "OnActivateView(), bActv = %d, pAct=%08X, pDeact=%08X, this=%08X\n",
        bActivate, pActivateView, pDeactiveView, this );
と書く。この関数は、OutpurDebugString()にvspritnf()を使って、
書式付出力機能をつけた物。

デバッグを開始し、アプリのファイルメニューから新規作成を二度行い、
MDI Child Frame を二個作って、アクティブ化のテストを行う。

別アプリをアクティブ化して、このアプリのタイトルバーをクリックす
ると、pAct==pDeact==this で上記の仮想関数三回呼び出されてくる。
bActvは、1,0,1 の順。で、三回とも、同じ this の値は同じ。つまり、
pAct==pDeact==this は、計9回同じ値が表示され、bActvだけが1,0,1。

別アプリをアクティブ化して、このアプリの中のMDI子ウィンドウをクリック
した場合は、これが、4回となる。

482 :デフォルトの名無しさん:2014/06/12(木) 10:11:18.90 ID:GvZA3DBS.net
>>480
なるほど。それはすみませんでした。
ちなみに、MSDN Library によれば:

pView = new CMyView;
pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
rectDefault, this, AFX_IDW_PANE_FIRST + 1, NULL);
//pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); // ???
pView->ShowWindow(SW_SHOW);
AddView( pView );
SetActiveView(pViewAdd);
RecalcLayout();

とするとのことですが、CViewのCFrameWnd はどうなりますか?
自動作成ですか、自前で用意するのですか?
CViewを追加するだけでこのように大量のコードが必要なのですか?

483 :デフォルトの名無しさん:2014/06/12(木) 10:24:14.20 ID:GvZA3DBS.net
誤字訂正:
誤:AddView( pView );
正:pDocument->AddView( pView );


ただ、CDocument::AddView(CView *pView) より、
virtual CFrameWnd *CDocTemplate::CreateNewFrame( CDocument* pDoc, CFrameWnd* pOther );
の方が「まだまし」な関数です。なぜなら、後者は、ちゃんとCFrame
を作成してくれるからです。

しかし、これが正しく動作するかは誰にも分かりませんが。

484 :デフォルトの名無しさん:2014/06/12(木) 11:23:14.63 ID:iyKKJxWh.net
ドキュメントとビューが結びつかないと書いたからAddViewを書いただけ
ドキュメントテンプレートを理解しないと無理
それっぽいメンバ関数を呼べばいいってものじゃない
中途半端な知識を捨てて1から勉強したほうがいいよ

485 :デフォルトの名無しさん:2014/06/12(木) 11:31:25.92 ID:GvZA3DBS.net
ちなみに、CDocument::AddView(CView *pView) が公開されていることで、
CViewは、どんなCFrameWndに入れても正しく動作するわけではないことは
実験的にはっきりしています。もちろん、一般のCWndに入れたらそれ以上
に駄目です。

MDIの場合、結露から言うと、CViewは、CMainFrm (<-- CMDIFrameWnd) に
入れるか MDI CLIENT WINDOW の子であるところの CMDIChildWnd に入れ
ないと正しく動作しません。

それ以外のCFrameWndに入れた場合、メッセージルーティングがおかし
くったり、アクティブ化が誤動作します。Docking<--->Floatingでは、
親であるところのCFrameWndの「すげ換え」が置きますが、CControlBar
にCViewを入れたりすると、Floating化後に「二重アクティブCView現象」
が発生し、CMainFrmのメニューが(開こうとすると点滅して)開けなく
なります。

486 :デフォルトの名無しさん:2014/06/12(木) 11:45:23.41 ID:GvZA3DBS.net
>>484
釈迦に説法。
自分はIPA認定の天才プログラマを超えている。
その上でかなりMFCの経験をつみ、よく調べた上で書いている。

MFCはスパゲッティーで、ドキュメントに書かれている理念でさえ
満たせていない。ほぼデフォルトの状態でしか使えないと見た方がいい。
変えようとするとさまざまな不具合に遭遇し、MFCのソースを解析、
SPY++でメッセージの調査、テストアプリの製作が必要となり、
最終的にはMFCのソースを大量にコピーして修正する必要が有るか、
または、そうした方が楽。

487 :デフォルトの名無しさん:2014/06/12(木) 11:57:26.63 ID:ps0VIDNa.net
使いこなせないなら自分で1からフレームワーク書けばいいじゃん

488 :デフォルトの名無しさん:2014/06/12(木) 12:00:14.51 ID:iyKKJxWh.net
経験を積んだ天才プログラマがよく調べた結果に対して
もう何も言うことはありません
いや、天才プログラマを超えてるわけだから…

489 :デフォルトの名無しさん:2014/06/12(木) 12:00:25.93 ID:GvZA3DBS.net
>>487
実際書いてるし、これからもっと書くつもり。

490 :デフォルトの名無しさん:2014/06/12(木) 12:04:03.31 ID:GvZA3DBS.net
>>487
「使いこなせない」わけじゃない。普通のプログラマなら、デフォルト
状態に毛の生えた状態でしかしようとしない。

自分の場合は、機能拡張を試みるので、機能拡張が全く出来ないよう
ものが困るだけ。

491 :デフォルトの名無しさん:2014/06/12(木) 12:10:17.33 ID:GvZA3DBS.net
>>485 の誤字訂正:

誤:ちなみに、CDocument::AddView(CView *pView) が公開されていることで、
  CViewは、どんなCFrameWndに入れても正しく動作するわけではないことは

正:ちなみに、CDocument::AddView(CView *pView) が公開されているので
  勘違いしそうですが、CView を、どんなCFrameWndに入れても正しく
  動作するわけではありません。それは、

492 :デフォルトの名無しさん:2014/06/12(木) 12:14:12.78 ID:GvZA3DBS.net
>>484
その理解もホントは間違い。

なぜなら、オブジェクト指向の理念からすると、公開されている
関数は、どのような使い方をしても正しく動作しなければならない
から。

CView *pView を引数に持つ関数を公開するのなら、ありとあらゆる
方法で作成した CView でも絶対的に正常に動作しなければならない。


この理念の理解の仕方が、天才プログラマのオイラとMFCの設計者や
あなたとの違いだ。

493 :デフォルトの名無しさん:2014/06/12(木) 12:24:41.32 ID:GvZA3DBS.net
公開さらたメンバ関数に、CView *pView を引数に持つ場合、本来、
次のようなことが守られて無ければならない。

・pView = new CView した pView でも良い。
・CDocTemplate などから間接的に作成したものでも良い。
・既にどこかで使われている既存の CView でも良い。
・CView は、Create() や CreateEx() などでウィンドウオブジェクト
 を作成する前でも後でも良い。
・CView は、クラスの集合で公開されている方法を使ってそうなった
 なら、他のどんな種類のウィンドウの子であっても良い。
 もし、一般の CWnd の子に成り得てしまうのなら、その場合でも
 正常に動作しなければならない。
・CView は、どんなスタイルや属性を持ってCreate()やCreateEx()
 されていても良い。


これが、C++ の基本的な理念。これが一つでも守られていなければ
アウト。ただし、CView は、一般の CWnd ではなく、必ず CFrameWnd
に入れる、程度の制約は、ドキュメント化されているならセーフ。

494 :デフォルトの名無しさん:2014/06/12(木) 13:47:21.08 ID:foAgyfNc.net
天才じゃなくてもMFCが20年以上前の古代C++と化石PC向けに設計されたことくらい知ってるだろう

495 :デフォルトの名無しさん:2014/06/12(木) 14:35:40.14 ID:VbjypW4u.net
これが若気の至りってやつかw
MFCの考え方が素晴らしいから他の環境にもどんどん適用していこう、
なんて奴はどこにもいないから安心して良いよ。
あとは>>494の通り。MFC1.0はWin3.1より前じゃないかな。

496 :デフォルトの名無しさん:2014/06/12(木) 15:05:09.91 ID:gzq5J5qE.net
1.0はWindows用でも無かった気がする

497 :デフォルトの名無しさん:2014/06/12(木) 15:16:34.79 ID:CisCdg7y.net
>>477-479 >>486 >>490 >>492
MFCは使わない方が良い
むしろ使うべきではない
天才ならもっと早く気付け

498 :デフォルトの名無しさん:2014/06/12(木) 15:26:31.26 ID:GvZA3DBS.net
少なくとも、.Net はもっと使いたくないですけどね。

499 :デフォルトの名無しさん:2014/06/12(木) 16:06:59.23 ID:SK659vFt.net
MFC も .NET も糞
Win32API 最高

500 :デフォルトの名無しさん:2014/06/12(木) 16:28:21.32 ID:C+ZFNT6Q.net
と言ってしまうのもどうかと思うが。

501 :デフォルトの名無しさん:2014/06/12(木) 19:51:14.40 ID:yC50SOGl.net
MFC も .NET も最高
Win32API 糞

502 :デフォルトの名無しさん:2014/06/12(木) 21:33:14.80 ID:yC50SOGl.net
ちょ
おまwww

503 :デフォルトの名無しさん:2014/06/12(木) 23:05:59.49 ID:kwwtPGed.net
>>492
iteratorにoperator*()があるからといって、end()に対して使ったらアホ。

504 :デフォルトの名無しさん:2014/06/13(金) 11:27:32.37 ID:V8AWh71l.net
>>503
end() に対して使っても、不整合は起きませんよね。

そこでiterator 自体がエラー処理するか、一般保護例外などがおきて
停止しませんか。

もしそうだとすれば、最高の安全性が確保されているということです。


AddView() して何のエラーも出ず、内部データの整合性がめちゃくちゃ
になって、後々原因不明のエラーになるのとは大違いです。

505 :デフォルトの名無しさん:2014/06/13(金) 11:55:52.36 ID:xgzZYZB7.net
天才プログラマなのに2chで質問…
天才プログラマなのに使い方が分からず悪戦苦闘…
MFCなんてソースが付いてるんだからちょっと見れば分かるだろ
適当にやって「うまく動かないのはMFCのせいだ!」って…
天才プログラマなんだから自力で解決しろや
それができないならさっさと諦めろ

506 :デフォルトの名無しさん:2014/06/13(金) 14:17:17.16 ID:ooUx6NQl.net
天才プログラマはMFCを使わない

507 :デフォルトの名無しさん:2014/06/13(金) 14:56:01.24 ID:zlKbN8L5.net
Pacalは使うのかね?

508 :デフォルトの名無しさん:2014/06/13(金) 14:56:41.14 ID:zlKbN8L5.net
おっとsが抜けた、台無しw

509 :デフォルトの名無しさん:2014/06/13(金) 15:51:29.59 ID:0JUM4RsI.net
天才プログラマはMFCを使わない
  ↓             ↓
天災プログラマはMFCを使えない

510 :デフォルトの名無しさん:2014/06/13(金) 16:36:21.63 ID:ooUx6NQl.net
Python
いいよ

511 :デフォルトの名無しさん:2014/06/13(金) 17:57:11.17 ID:28pi4WtW.net
なんかと紙一重って言うからな。

512 :デフォルトの名無しさん:2014/06/14(土) 19:11:48.30 ID:/GIgISes.net
ウィンドウのアクティブ化なんてものは、大して難しい処理でないことは、
ある程度以上のプログラマなら分かるだろうが、MFCのソースを見ると、
非常に複雑なコーディングになっていて、はっきりいって、こんがらがっ
てる。

513 :デフォルトの名無しさん:2014/06/14(土) 19:14:18.65 ID:/GIgISes.net
それだけで数千行を超えてるんじゃないか。

514 :デフォルトの名無しさん:2014/06/14(土) 20:10:23.73 ID:fnX3+qSk.net
━━MFCユーザーを解放せよ━━

MZC3が始まる……

515 :デフォルトの名無しさん:2014/06/15(日) 00:42:18.00 ID:gWcHCSVq.net
数年後にこの書き込みを見直したら、
恥ずかしさで転げまわる羽目になるのだろうなw

516 :デフォルトの名無しさん:2014/06/15(日) 07:29:11.43 ID:CUPMZUG2.net
ならない。

517 :デフォルトの名無しさん:2014/06/15(日) 09:44:50.27 ID:H0hqrU74.net
>>515
数年後も馬鹿のままだからならないよ

518 :デフォルトの名無しさん:2014/06/15(日) 10:25:15.21 ID:CUPMZUG2.net
人の力の大小を見極めるには、見極める側にも有る程度力が必要だと
いうことが如実に分かるスレですね。

519 :デフォルトの名無しさん:2014/06/15(日) 11:00:43.99 ID:H0hqrU74.net
>>518
ですよね〜
MFCのソースはほめられたものじゃないけど、ある程度の経験をつめば
「非常に複雑でこんがらがる」ほどではないことが分かる
だからあの程度で「非常に複雑でこんがらがってしまう」天才プログラマは
本当に天才なのか?って思ってしまう
でも見極める側に力がないからしょうがないですよね

520 :デフォルトの名無しさん:2014/06/15(日) 11:18:22.32 ID:Yby/fsOm.net
見極められる能力がある天才なら
MFC なんて使い物にならないと
とっくに見切ってるはず

521 :デフォルトの名無しさん:2014/06/15(日) 13:27:21.91 ID:paCDnv+x.net
>>520
それも間違い。

MFCはスパゲッティーではあるが、Visual Studio と統合されている
ことで、メッセージ・ハンドラの追加作業が、手でコーディングする
より遥かに効率的に行える。その他、CString が使えたり、
メニューの有効/無効が、OnUpdate 系のハンドラで、CCmdUI を
使って楽に行えたり、自作ダイアログのデータをCStringやintに
最初から入れてくれたりと、とても便利で効率的なことも多い。

つまりWin32を直に使うよりは、遥かに生産性が高い。

しかし、MFCがスパゲッティーで有ることもまた事実。スパゲッティー
だが、IDEとの連携で効率は良い、という複雑な事情が有る。

522 :デフォルトの名無しさん:2014/06/15(日) 13:32:09.43 ID:paCDnv+x.net
>>519
それも違うな。

あのソースを「スパゲッティー」だと思わないのは、あなたも
あの程度のスパゲッティーなプログラムしか出来ないからだ。

もっと遥かに美しい設計をいつもしている人なら、あんなソース
は問題外に感じるはず。

523 :デフォルトの名無しさん:2014/06/15(日) 13:57:18.48 ID:H0hqrU74.net
>>522
そんな話はしてない
スパゲッティーだろうがなんだろうが天才なら理解出来るでしょ
あの程度が理解出来ないなんて…

実際多いんだよね
プライドだけ高くて何も出来ない奴が…
実力が無いことがばれそうになると言い訳ばっかして逃げる
実力があるならごちゃごちゃ言ってないでさっさと解決すればいいのに、
あれが悪いだのこれが駄目だの…

524 :デフォルトの名無しさん:2014/06/15(日) 14:03:48.04 ID:VrQXXusG.net
明日この場所にもう一度来てください
俺が本物のスパゲッティーをお見せしてあげましょう

525 :デフォルトの名無しさん:2014/06/15(日) 14:14:02.72 ID:paCDnv+x.net
>>523
実際読んでみたの?

すくなくとも、オイラはスパゲッティーなコードを解読する能力が
高くはない。

ではそれでもなぜ、天才的なプログラミングが出来るのかというと、
スパゲッティーなコードを自分では絶対に書かないからだ。

一目瞭然で、サルでも分かるような単純なコードになっている。

それでも出来上がった作品は、天才的だといわれる。

526 :デフォルトの名無しさん:2014/06/15(日) 14:20:57.70 ID:Rg7+Zgkt.net
やっぱり天才だったかw

527 :デフォルトの名無しさん:2014/06/15(日) 14:25:59.59 ID:paCDnv+x.net
>>523
何を言ってるの? 「解決」とは何のこと?

スパゲッティーなコードをスパゲッティーだと断言することが、
目的であって、特に解決すべきことはない。

MS は、公式に「MFCのソースを直接変えるな」といっている。
あのレベルのスパゲッティーさを解決するには、
「リファクタリング」するのは最善の策。

それをMSは「禁止」している。

だから、直すためには禁止事項を破る必用が有る。

528 :デフォルトの名無しさん:2014/06/15(日) 14:59:56.67 ID:Yby/fsOm.net
MFC の中身のコードがすぱげっちぃなんは
人間が書いたものじゃなくて
MSDN の翻訳サイトみたいに
機械生成で造らせたコードだからかも知れないぬ

529 :デフォルトの名無しさん:2014/06/15(日) 15:01:57.17 ID:paCDnv+x.net
>>528
そんな可能性は低いと思うけど、ちなみに中身の汚さは外にも出てる。
だから拡張性が低く、ソースがないと利用するのが困難。

本当に美しい論理構造を持っていれば、ソースが無くともスラスラと
利用できるライブラリになる。

530 :デフォルトの名無しさん:2014/06/15(日) 15:12:49.29 ID:VrQXXusG.net
熱烈な要望にお応えしてMSが MFC Museum Edition を300万円で発売するってさ

531 :デフォルトの名無しさん:2014/06/15(日) 15:22:14.63 ID:H0hqrU74.net
>>527
禁止事項?

http://msdn.microsoft.com/ja-jp/library/ms235264%28v=vs.100%29.aspx
MFC ソースを変更し、その MFC DLL を再度ビルドする場合は、変更後の
MFC DLL が Visual Studio にインクルードされている MFC DLL と競合
しないように名前を変更する必要があります。
MFC DLL のリビルドおよび名前の変更は、できる限り行わないでください。
詳細については、MFC のテクニカル ノート 33 を参照してください。

http://msdn.microsoft.com/ja-jp/library/hw85e4bb%28v=vs.100%29.aspx
したがって、MFC のソース コードを変更して MFC DLL のカスタム
バージョンを作成するときは、別の名前を使ってください。
"MFC" を含まない名前をお勧めします。

532 :デフォルトの名無しさん:2014/06/15(日) 15:42:51.93 ID:paCDnv+x.net
「禁止」というのは言いすぎだった。
よく思い出してみると、「MFCソースは直接、修正すべきではない」
だったような気がする。

そりゃそうかもしれないな。

533 :デフォルトの名無しさん:2014/06/15(日) 16:02:33.95 ID:paCDnv+x.net
>>523
>実際多いんだよね
>プライドだけ高くて何も出来ない奴が…
>実力が無いことがばれそうになると言い訳ばっかして逃げる
>実力があるならごちゃごちゃ言ってないでさっさと解決すればいいのに、
>あれが悪いだのこれが駄目だの…

そういう人も多いかもしれないが、オイラはそれには当てはまらない。
作品や他人の評価を知れば、それは証明できる。

534 :デフォルトの名無しさん:2014/06/21(土) 19:35:59.51 ID:+tlHdBiN.net
>>523 って素人?

535 :デフォルトの名無しさん:2014/06/21(土) 20:31:21.24 ID:9Y4wI++n.net
遅い

536 :デフォルトの名無しさん:2014/06/21(土) 23:42:09.50 ID:+tlHdBiN.net
予想を超えたレス…

537 :デフォルトの名無しさん:2014/06/23(月) 09:55:52.21 ID:xVD6cdY2.net
キチガイに対するレスに素人も玄人もないだろ

538 :デフォルトの名無しさん:2014/06/23(月) 10:46:22.84 ID:Vv3nlqf+.net
キチガイに対するレスに遅いも早いもないだろ

539 :デフォルトの名無しさん:2014/06/23(月) 10:48:14.50 ID:Vv3nlqf+.net
いや、やっぱあるよねw

540 :デフォルトの名無しさん:2014/06/24(火) 02:16:01.71 ID:4sDn2htr.net
 C++のプログラムを、Windowsのダイアログボックスで操作するMFCベースの
ダイアログプログラムに移植しようとしたが、STLでビルドエラーだ、困った
もんだ。
 setコンテナのinsert()メンバ関数とかでエラーになる。
 Visual C++ 6.0の[プロジェクトの設定]ダイアログボックスの[C/C++]タブ
の[プロジェクト オプション(O)]に、/GX を追加しても、ビルドで警告表示
は解消しないし、エラーも出てしまう。
 どうすれば良いものか。
 もちろんヘッダーファイルはインクルードしているし、移植前のプログラム
は、普通にコンパイルが通ったものを使ってる。
 Visual C++ 6.0での話しで、それは会社にしかないので、今はそのエラー
メッセージは確認できないが。
 自分のVisual C++ .net 2003なら、何も問題なくビルドが普通に通ったが。

 どうすれば、STLを普通にビルドを通せるようになるでしょうか。
 または、それが無理なら、STLと同様の処理が可能なMFCのライブラリという
ものはないですか。

541 :デフォルトの名無しさん:2014/06/24(火) 03:12:42.64 ID:y3aUZP9H.net
vc6なんてテンプレート展開が大きすぎるとかで警告出たよな
それなら
#pragma warning disable

542 :デフォルトの名無しさん:2014/06/24(火) 06:51:46.67 ID:G9G4AQQ3.net
つーか、何故既にサポートの切れている環境でしか使えないVC6を使おうとするのか。
保守案件ならSTLを新規に使うことはないわけだし。

543 :デフォルトの名無しさん:2014/06/24(火) 07:42:17.49 ID:LohfYnwo.net
VS Express入れて、そいつでビルドしたexeを呼び出す作りにしてみるとか。
VC6でSTLをまともに使おうとするのは一寸無謀すぎる。

544 :デフォルトの名無しさん:2014/06/24(火) 09:13:55.66 ID:sHZWMGRb.net
>>542
サポートされていない「機能」でも、自分で解決するのが
プログラマ、だという主張がされているよね。

どんなにMFCがスパゲッティーでも、使いこなせなければプログラマの
能力が低いとされる。

であるならば、サポート切れした開発環境でも使いこなしてみせ
るのが優秀なプログラマだという事だよね。

なぜなら、ちゃんと設計できてないMFCでも、プログラマが苦労して
使うという意味では同じだもの。

545 :デフォルトの名無しさん:2014/06/24(火) 09:16:30.66 ID:oDNeDxJ6.net
弘法筆を選ばず

546 :デフォルトの名無しさん:2014/06/24(火) 09:58:31.06 ID:sHZWMGRb.net
実際の弘法は、筆に強いこだわりがあったらしいけれども。
悪い筆でもそれなりに上手く書けるが、良い筆で無いと到達できない
領域が有るのであろう。

547 :デフォルトの名無しさん:2014/06/24(火) 10:30:56.85 ID:AoaCOEto.net
>>544
どこにそんな話があったんだ?
自称天才プログラマが人の話を聞かずにギャーギャー騒ぐから
天才なら自分で何とかしろよって話になっただけでしょ。

548 :名無しさん@0新周年:2014/06/24(火) 11:09:51.36 ID:I/LXKLNz.net
堂が歪んでは経が読めぬ

549 :デフォルトの名無しさん:2014/06/24(火) 11:16:32.92 ID:rOvxW007.net
サポートが切れているかどうかは個々の企業によるのではないか

550 :デフォルトの名無しさん:2014/06/24(火) 11:35:09.26 ID:EGSIKm2X.net
サポートが切れているかが問題ではない。VC6で新規開発をすることに意義があるかどうかだ。

551 :デフォルトの名無しさん:2014/06/24(火) 13:10:51.35 ID:sHZWMGRb.net
>>547
優秀そうな人の集まりであるかのような書き込みで満ち溢れている2ch
が、実際は凡夫の集まりで有ることに気づかなかったんだよ。

552 :デフォルトの名無しさん:2014/06/24(火) 13:13:02.70 ID:rOvxW007.net
隠しきれずににじみ出てしまう知性と
ギトギトしたアピールとの区别くらいつくやろ

553 :デフォルトの名無しさん:2014/06/24(火) 13:29:38.06 ID:sHZWMGRb.net
例えば、灘や開成高校などの環境で育つと周囲には出来るといった
ことは本当に出来る人がほとんど。
「プライドが高い」のではなく本当に出来るから出来ると言っている。
そのつもりで2chを見ていれば、何でも答えられる人の集まりなのだと
勘違いしてしまうんだよ。

554 :デフォルトの名無しさん:2014/06/24(火) 13:40:42.42 ID:AoaCOEto.net
仮に何でも答えられる人が居たとしても、
「俺は天才だから、その指摘は俺には当てはまらない」
なんて言ってたら何も答えてくれなくなる
すぐ話をすり替えるし…
いい加減気付けよ

555 :デフォルトの名無しさん:2014/06/24(火) 13:59:13.02 ID:sHZWMGRb.net
>>554
はっきり言わないと、世界中からアクセスされてくる2chでは
通用しないんだよ。
それに、天才の言うことを凡人が見ると、知的障害者のように
馬鹿げて見えることが有るようだし。
さらに、2chでは、どのように態度をとっても、「意味有る答えは
めったに返って来ない」ようだし。

556 :デフォルトの名無しさん:2014/06/24(火) 14:01:28.16 ID:sHZWMGRb.net
>>554
>仮に何でも答えられる人が居たとしても、

MFCのソースのダメさが理解できない人たちにそれは出来ない。

557 :デフォルトの名無しさん:2014/06/24(火) 14:21:31.33 ID:oDNeDxJ6.net
天才でも歯が立たないMFC

558 :デフォルトの名無しさん:2014/06/24(火) 14:24:39.26 ID:oDNeDxJ6.net
すごいぞMFC

559 :デフォルトの名無しさん:2014/06/24(火) 14:25:33.90 ID:oDNeDxJ6.net
がんばれMFC

560 :デフォルトの名無しさん:2014/06/24(火) 15:05:47.32 ID:AAHBTYvg.net
やったねMFC

561 :デフォルトの名無しさん:2014/06/24(火) 17:05:49.94 ID:AoaCOEto.net
>>556
MFCのソースが良いソースなんて誰も言ってない

最初はMFCの質問かと思っていたけど、要するに
「MFCは糞だよね、天才の自分でも理解できないんだから」って
意見に賛同して欲しかっただけでしょ

562 :デフォルトの名無しさん:2014/06/24(火) 17:27:47.46 ID:sHZWMGRb.net
>>561
>>「MFCは糞だよね、天才の自分でも理解できないんだから」って

まあ、勝手に言ってなさいな。

563 :デフォルトの名無しさん:2014/06/24(火) 19:38:35.52 ID:rOvxW007.net
ソースがスパゲッティ云々いう以前に日本語で意思疎通できてない
笑え…ない

564 :デフォルトの名無しさん:2014/06/24(火) 21:15:46.36 ID:lP72EcqD.net
>> 541
VC++5のときにSTL系でコンパイルエラーがよく出てた気がする。
そのときはリリースビルドだとエラーがでなくなったことがある。

MFCにCMapってクラスがあるからsetの代わりになるんじゃないの?
もう全然覚えてないけど。

565 :デフォルトの名無しさん:2014/06/25(水) 02:21:32.59 ID:kNLYduIt.net
 普段は、単一のC++ソースファイルにプログラムを記述して、Visual C++ 6.0の
clコマンドでコンパイル・リンクして、コマンドプロンプト上で実行するプログラム
を作ることが多い。STLは不可欠だ。
 そして、Visual C++ 6.0でWindowsプログラムを作成する方法を学習して、少し理解
できてきたところだ。
 >>540のプログラムは、標準入出力(コマンドプロンプト)で実行するものを、GUI化
しようとした。
 MFCベースのダイアログプログラムを最初にウィザードで作成して、リソースエディタ
を編集して、コマンドライン引数や標準入力から取得していたものは、エディットボックス
から取得するように変更して、コマンドボタンのメッセージハンドラの関数に、main()関数
から実行していたコードを移植して、標準出力していたものは、メッセージボックスで表示
するように変更するという方法で、GUI化を考えた。
 STLは使ってるけれど、同じVisual C++ 6.0のclコマンドで、コマンドプロンプトで実行
するプログラムは、問題なく作成できたものだから、ダイアログプログラムにしたからと
いって、ビルドエラーになるとは考えていなかった。clコマンドでは、STLのコードで大量の
警告は出るが、/GX を指定すると出ない。だから、[プロジェクトの設定]ダイアログボックス
で、その設定はしたけれど、効果なしだったし、>>541で教えてくれた #pragma warning disable
も効果なしだった。
 これはもう、MFCでのクラスで代替手段を使ったほうがいいかもしれんな。>>564がリリースビルド
と言ってるし、明日会社で、リリースビルドで試して、それでも解決しなければ、MFCに変更する。
MFCのクラス階層図を見ると、配列、リスト、マップというものがあるな。これからは、これらを
勉強したほうがいいな。CSetというクラスは存在してないので、>>564の言う通り、CMapで代用す
るしかないな。そして、CMultiMapも存在してないので、multimapを使ったコードの移植もどう
するか対策の検討が必要になりそうだな。

566 :デフォルトの名無しさん:2014/06/25(水) 02:29:01.82 ID:kNLYduIt.net
プロポーショナルフォントだから、「dコマンド」に見えてしまうな。
"d" (D) でなくて、 "c"と"l" (CL) コマンド。

567 :デフォルトの名無しさん:2014/06/25(水) 02:52:13.26 ID:kNLYduIt.net
>>542
会社のパソコンのC++コンパイラは、それしかなく、またフリーソフトのダウンロード
は禁止なので、Visual Studio Express等を入れるわけにもいかないので、仕方ないのです。

568 :デフォルトの名無しさん:2014/06/25(水) 03:12:57.65 ID:kNLYduIt.net
 Visual Studio .net 2003は持ってるけれど、Visual C++ 6.0とは操作方法の違い等
もあることだし、Visual C++ 6.0の学習本で効果的に学習するためと、会社のパソコン
で使うVisual C++ 6.0でのプログラム作成能力を身に付けるために、Visual C++ 6.0
の購入も検討したが、AmazonでEnterprise版の中古は68,000円Professional版は新品で98,000円、中古で4万円、Standard版
の中古で2万もするからな。
 これだけのために、この高額な出費は厳しいな。

569 :デフォルトの名無しさん:2014/06/25(水) 05:57:09.42 ID:UIqp9yq9.net
未だにVC6にしがみついている会社って何なの?

570 :デフォルトの名無しさん:2014/06/25(水) 07:47:30.11 ID:ddPSuVSv.net
>>563
意思疎通できてる。もし日本語が変に感じるなら、
天才の言語感覚と、凡人であるあなたの言語感覚とが違っているだけ。

571 :デフォルトの名無しさん:2014/06/26(木) 00:23:56.26 ID:EUltEyNe.net
VC6強制とか、追い出し部屋にでも閉じ込められているとしか思えん。

572 :デフォルトの名無しさん:2014/06/26(木) 01:07:03.23 ID:yx8r5ZXb.net
それが割と有るから恐ろしい。
過去製品のサポートだとかでも必要だし、新しい製品と言ってもベースは過去ソースだったり。

573 :デフォルトの名無しさん:2014/06/27(金) 10:14:28.00 ID:MD/Kgkpe.net
VC6とSTL-PORT の組み合わせで使ってます。

574 :デフォルトの名無しさん:2014/06/27(金) 22:15:14.18 ID:+f+jTPw3.net
.Netでいきなり使いにくくなったりおかしな事になったからVC6を使わざる得ない状態はある。
最新のVSは過去のWindowsどんどん切り捨ててるし

575 :デフォルトの名無しさん:2014/06/27(金) 23:05:23.42 ID:tyj/D5gs.net
> VC6を使わざる得ない状態はある



え???

576 :デフォルトの名無しさん:2014/06/28(土) 06:00:04.81 ID:WBXNiQjo.net
staticおじさんキター

577 :デフォルトの名無しさん:2014/06/28(土) 12:37:49.66 ID:57e/13Kx.net
>>574
>最新のVSは過去のWindowsどんどん切り捨ててるし

具体的にお願いします:

578 :デフォルトの名無しさん:2014/06/28(土) 13:01:24.20 ID:pkB82Erl.net
strhogehoge 関数を使おうとすると
いちいち「もっと secure なの使え」って警告出るのはやめて

579 :デフォルトの名無しさん:2014/06/29(日) 13:47:10.57 ID:HJOUXsHi.net
>>578
#define _CRT_SECURE_NO_DEPRECATE

580 :デフォルトの名無しさん:2014/07/03(木) 23:29:52.68 ID:2beLGnBn.net
>>577
VS2008でWin9X系のバイナリは作れない。2010でWin2kのバイナリは作れない

>>575
お前はプロではないのか?

581 :デフォルトの名無しさん:2014/07/04(金) 00:24:28.83 ID:Qf+YHaeI.net
ちょっと教えてくれ。CRichEditCtrlでDrag&Drop編集の無効化ってできないの?

582 :デフォルトの名無しさん:2014/07/04(金) 20:37:20.76 ID:4D1jvaxN.net
DragAcceptFiles(FALSE)
だめなら派生させ、WM_DROPFILES/OnDropFiles()で何もせずリターン

583 :デフォルトの名無しさん:2014/07/05(土) 10:07:33.38 ID:4+ZYXVfC.net
DragAcceptFilesはなんか違うだろうと思って調べたら、ES_NOOLEDRAGDROPだった。

584 :デフォルトの名無しさん:2014/07/25(金) 23:59:28.12 ID:KWe1DoCq.net
ModifyMenuでメニューのテキストを変えたいのですが
HMENUはどれを指定したらいいのでしょうか。
4つ試したのですが、うまく動作しませんでした。

void CMainFrame::OnTestSettext(){
CMenu* main_menu = AfxGetMainWnd()->GetMenu();
CMenu* this_menu = this->GetMenu();
CMenu* menu_menu = this->m_wndMenuBar.GetMenu();
CMenu* tool_menu = this->m_wndToolBar.GetMenu();
::ModifyMenu(tool_menu->m_hMenu,ID_TEST_HELLOWORLD,
MF_BYCOMMAND|MFT_STRING,ID_TEST_HELLOWORLD
,L"こんにちは世界");
}

585 :デフォルトの名無しさん:2014/07/26(土) 02:10:56.54 ID:pKa/BFWU.net
Windowsネイティブのメニューなら反映されるだろうけど、
メニューバーのように元ネタとしてしか使っていない場合、
メニュー自体を変更しても画面には反映されないような気が。

MFCの流儀に従って、UPDATE_COMMAND_UIメッセージのタイミングで
CCmdUI::SetTextで変更するのがお勧めだな。

586 :585:2014/07/26(土) 05:33:55.28 ID:ozo5SIol.net
>>585
おお、ありがとうございました。
WTLでは似たようなやり方でなんとか動いていたのですが、
CCmdUI::SetTextですか。
無事、動きました。

587 :デフォルトの名無しさん:2014/08/09(土) 13:55:36.09 ID:H0g9sw/6.net
MFCのダイアログベースアプリをWizardで生成すると
CMyxxxDlgクラスが生成されると思うのですが
これってなんでデストラクタが生成されてないんですか?
MFCのCDialog派生クラスではデストラクタ禁止とか?

588 :デフォルトの名無しさん:2014/08/09(土) 16:53:38.54 ID:Tp6ekRy+.net
ComboBox(Type:ドロップダウンリスト)はフォーカス時(ドロップダウンしていなくても)、↑↓キーやマウスホイールに反応しますが、これを簡単に禁止する方法はありませんか?
Spin はリソースのプロパティで止められるのに Comboはできません。メンバ関数も無いようです。

よろしくお願いします。

589 :デフォルトの名無しさん:2014/08/11(月) 14:59:20.29 ID:ZBtQaP4y.net
>>587
(クラスウィザードで生成されたコードには)不要だから。
必要があれば自分で書けばいい。

>>588
派生クラスを作成して PreTranslateMessage で握りつぶす

590 :588:2014/08/11(月) 22:44:20.22 ID:Tf915yWy.net
>>589
サンクス!それを聞いて安心して自分で追加できます。
不安神経症で。。

591 :デフォルトの名無しさん:2014/08/26(火) 01:09:40.18 ID:q2uUhQ1i.net
中国語版(簡体字)を作ることになりました。
GB18030に対応するとなると、Unicodeアプリにしないとだめ?
それとも、UTF-8対応アプリとして作成したほうがよいのかな。
経験者いませんか。

592 :デフォルトの名無しさん:2014/09/01(月) 15:55:55.89 ID:nQghNeel.net
>>591
んなこと気にするな、ロジックは変わらない。

593 :デフォルトの名無しさん:2014/09/01(月) 16:21:50.10 ID:xK7WN8k/.net
なんだかんだ言って
使ってるライブラリによって選択肢が絞られるというのが
いつものパターン

594 :デフォルトの名無しさん:2014/09/01(月) 16:27:29.06 ID:X69OanmZ.net
>>591
UNICODE(ここでは WIDE 文字の意味)だけだと、2BYTE文字までの対応に
とどまる。
それでは足りないと言うことで、サロゲートペアが導入された。
もともと、1文字を 1 つの wchar_t 変数だけで済まそうと思った
のが Windows における UNICODE 対応だったが、その前提が崩れた。

元々、国産機時代から、SHIFT-JIS が使われていたが、
それは、1文字を全部2BYTEで表すよりは効率が良かったからだ。
8 bits, 16 bits マシンでも効率が良く処理できた。
同様の仕組みの UTF8 は全てを WIDE 文字で表す Windows の
UNICODE 対応よりは効率が良い可能性が高い。
分かりやすい上に、一度対応してしまうとその後何もすること
も無い。

2BYTEでも1BYTEでも今のCPUでは速度が変わらないように思えるが、
使用するメモリが増大することによる効率低下はまだ無視できない。
ASCII文字まで2BYTEで書くのは効率が悪い。最近、ASCII文字まで
2BYTEで表現されたテキストファイルを見たことがあるが、
あれは馬鹿ではなかろうか。

595 :デフォルトの名無しさん:2014/09/01(月) 16:44:51.95 ID:xK7WN8k/.net
シフトJISだったのはメモリが絶対的に足りなかったから
64kBスモールモデルからやり直せ

596 :デフォルトの名無しさん:2014/09/01(月) 16:46:39.82 ID:riC6owF6.net
もともとASCIIの上に乗っけるために
シフトしてるだけだしなあ

597 :デフォルトの名無しさん:2014/09/01(月) 16:48:05.28 ID:riC6owF6.net
K-IN K-OUT (SI,SOが使われてる体系が大元にあったんだよね

598 :デフォルトの名無しさん:2014/09/02(火) 11:03:19.57 ID:TmMSlGm8.net
>>597
それは状態変数のある文字コードと呼ばれていて、SJISや
UTF8よりはプログラミングしにくい事が知られている。以下は理由の
一部:

・文字列を別の場所にコピーするような場合、状態まで含めてコピーする
 必要がある。
・文字列の内容を正しく示すためには、ポインタだけでは足りず、状態も
 必要となる。

一方、SJISや、UTF8は、読み込みと書き込みだけを関数に任してしまえば
プログラミングは楽。uint32 の変数に読み込んだ後の文字を入れてしまい、
それを処理すればよいだけ。それでいてメモリ効率が良い。

599 :デフォルトの名無しさん:2014/09/02(火) 11:38:30.46 ID:wdU1cIJ3.net
本来の意味通りの合理的なSHIFTをしてるのは
むしろEUCの方だと思う
SJISのはギクシャクしてる

600 :デフォルトの名無しさん:2014/09/02(火) 11:48:42.68 ID:/m8AfW3s.net
SJISは半角カナとBASICで使うコードを避けたからな

601 :デフォルトの名無しさん:2014/09/02(火) 22:56:33.42 ID:wdU1cIJ3.net
5cは裂けませんでした

602 :デフォルトの名無しさん:2014/09/03(水) 02:29:54.86 ID:nJQEVZbi.net
そこは間が抜けているよな。

603 :デフォルトの名無しさん:2014/09/03(水) 11:47:08.57 ID:wH3fvtih.net
CMFCListCtrlを使ったCListViewを作ろうと思うけど、CListView派生型で、GetListCtrl()をオーバーライドするだけじゃダメだよね?

一般的な方法、もしくはその詳細を示しているサイトがあれば教えていただきたいですが…

604 :デフォルトの名無しさん:2014/09/12(金) 14:47:30.54 ID:1g4SS1Y1.net
とある現場ではまだ現役なのに解説本がもう10年出てないってどういうことなの

605 :デフォルトの名無しさん:2014/09/12(金) 22:16:07.10 ID:560WHGrX.net
そういうこと

606 :デフォルトの名無しさん:2014/09/13(土) 11:33:38.69 ID:dGFUkkE8.net
2〜3千円で本出しても元取れないってこと

607 :デフォルトの名無しさん:2014/09/13(土) 12:10:33.35 ID:81UxBdfS.net
基本的な部分は既にある本で間に合うからいいとして、2008sp1で追加された機能の
解説書が出ないうちに消えたのが残念だな。

608 :デフォルトの名無しさん:2014/10/04(土) 18:27:06.54 ID:IMKf9Y45.net
MFCって将来消えないのですか?

609 :デフォルトの名無しさん:2014/10/04(土) 22:39:45.47 ID:HPG7vLa4.net
消える言われて10年ぐらいたってる気がするがなぜか消えない
なぜかはわからんけどフリーでは配布されないぐらいの扱いをされているかもしれない

610 :デフォルトの名無しさん:2014/10/04(土) 23:04:16.99 ID:H28nZv4o.net
C++の需要がある限りMFCを捨てるわけにはいかんだろうな。
Win7のサポートが切れる頃にはWinRTに移行してくれると思うが。

611 :デフォルトの名無しさん:2014/10/06(月) 00:28:22.14 ID:zc3GSDUD.net
C++の需要ってあるの?

612 :デフォルトの名無しさん:2014/10/06(月) 19:25:31.42 ID:4uiIGAjI.net
>>611
少なくともキミにはない。

613 :デフォルトの名無しさん:2014/10/06(月) 23:46:27.02 ID:P5y3Kt/6.net
>>611
新規は少ないのでは?

614 :デフォルトの名無しさん:2014/10/07(火) 00:21:21.14 ID:AGZyHAPk.net
C#があればVBはもういらないと言っていいと思うけど、C++いらないというところまでは
まだのように思うなぁ。
MS自身、ストアアプリをC#に一本化できずにC++/CXなんてやらざるを得なかったくらいだし。

615 :デフォルトの名無しさん:2014/10/07(火) 01:29:54.99 ID:WYpWzpgi.net
Windows自身をc#で書いてみろってんだ

616 :デフォルトの名無しさん:2014/10/07(火) 07:18:25.41 ID:F2JbrDrK.net
VBはいらないと言っても、慣れ親しんだ書き方から、なかなか変えられないからな。
最初に習得した言語で十分と、新しい言語を学ぼうとしない人も多いし。

その結果、技術の進歩に取り残されて、使えない技術者になってしまうんだけどな。

617 :デフォルトの名無しさん:2014/10/07(火) 07:59:02.03 ID:FEWSCUR/.net
VBは、そうしたロートルを集めるのに役立った。
後は束ねてゴミの日に出すだけだ。

618 :デフォルトの名無しさん:2014/10/07(火) 08:55:52.03 ID:nFAJZCFr.net
最近は trend micro の製品だと思ってる人の方が多い

619 :デフォルトの名無しさん:2014/10/09(木) 05:33:26.89 ID:Jo0mqKMo.net
VBはほんと糞をまき散らしただけだったなぁ
ポインタも理解できない奴が人類に居ることが驚き

620 :デフォルトの名無しさん:2014/10/09(木) 06:31:36.52 ID:rubchCfk.net
もっと早い段階で免許ないとプログラミング出来ない様にしておくべきだった

621 :デフォルトの名無しさん:2014/10/09(木) 20:39:37.17 ID:tOThY/oR.net
その免許を得るための試験問題をひとつあげてみてよ

622 :デフォルトの名無しさん:2014/10/10(金) 00:18:37.32 ID:G9TwYsex.net
6809で39hはなにか。

623 :デフォルトの名無しさん:2014/10/10(金) 15:45:19.01 ID:T0LFFi4l.net
NOP

624 :デフォルトの名無しさん:2014/10/10(金) 18:44:47.65 ID:Xd6YjWLK.net
>>619
プログラミングにおいてポインタを理解していないことは致命的な弱点なのか?

625 :デフォルトの名無しさん:2014/10/10(金) 18:52:38.32 ID:T0LFFi4l.net
move ip, (sp++)

626 :デフォルトの名無しさん:2014/10/11(土) 12:48:59.62 ID:gz4lvABW.net
ポインタを理解できないのは致命的弱点だがな。
高度に規制の掛かった、WEBアプリのような物しか組めなくなる

627 :デフォルトの名無しさん:2014/10/12(日) 08:33:49.16 ID:5zSMLK5i.net
ポインタを理解できない頭が致命的

628 :デフォルトの名無しさん:2014/10/22(水) 12:29:14.98 ID:GnesLG+L.net
ポインタと再帰が理解できない頭ならこの仕事は無理だ

629 :デフォルトの名無しさん:2014/10/22(水) 23:18:56.35 ID:a0guCzhK.net
本当は無理なんだが
無理なのに無理やりやらせておかしくなってるのがこの業界でもあるな。

630 :デフォルトの名無しさん:2014/10/23(木) 09:01:43.18 ID:sksS7kTY.net
昔々に日立様が「ソフトウェア工場」なんて考えを流布したから
日本ではプログラミングはエンジニアではなくて技能職扱いなんだよね
ドヤ顔でプログラムの「製造」とか言っちゃうでしょ?

631 :デフォルトの名無しさん:2014/10/23(木) 09:28:03.02 ID:GVukQ4G4.net
へー
ITドカタが標準だと思ってた

632 :デフォルトの名無しさん:2014/10/24(金) 13:47:58.20 ID:k8b8ruuQ.net
>>630
実態そのものじゃないか

633 :デフォルトの名無しさん:2014/10/24(金) 14:28:26.53 ID:0u2i7qBO.net
それは日立だけの用語?
不治痛でも使ってる?

634 :デフォルトの名無しさん:2014/10/24(金) 15:12:48.39 ID:LInCoF9d.net
なんとなく大きな所はどこでもそう言うのかと思ったけど、
そういえば日立用語かも?

で、日立に関わったことがある営業とかマネージャが得意げに言うのよ
製造って

635 :デフォルトの名無しさん:2014/10/25(土) 08:41:51.34 ID:kNxHTA5N.net
Visual Studio 2012でMFCを用いて開発するんだけど、
「タイプ ライブラリからの MFC クラスの追加」でExcel 2010を追加したのだが、
xlDialogActivateとかの定数や列挙体ってインポートされないんだっけ?

みんなどうしてる?

636 :デフォルトの名無しさん:2014/10/25(土) 10:25:54.88 ID:kNxHTA5N.net
自己解決

*.tlhをインクルードするんだったな

637 :デフォルトの名無しさん:2014/10/28(火) 04:21:41.46 ID:eRgiBxYV.net
すいません、教えて下さい
環境は、VS2013 Pro とWin 8.1 です。

問題は、ダイアログを5つ作り、画面を移れる様にしました。

そのつど、Timerを作り、ダイアログを作りました。
移る時、はkillTimerを使い、Timerを切っていますが
その中の一つが、そのダイアログに移った瞬間
ボタンが、張り付き押せません。

最初は、他のtimerが動いていて、高速で動いている為と思い
debagでブレークポイントを付けて、見て見たのですが、動いている気配が無いです。
timerのIDを変えてみたのですが、それでもボタンが押せません。
Sleep(100)も入れてみました。症状は改善しません

「原因は、何が考えられる」でしょうか?

ソースは、大きいのと仕事なので記載出来ません。
エラー名も出ません、困っています。お願いします。

638 :デフォルトの名無しさん:2014/10/28(火) 04:26:43.63 ID:IaTzRo42.net
日本語の勉強からやり直した方が良い
割とマジレス

639 :片山博文MZ次期CEO ◆T6xkBnTXz7B0 :2014/10/28(火) 23:14:57.34 ID:RQAouJbt.net
そのダイアログはモーダルかモードレスか。親子関係はどうなっているのか?
なぜそのような画面遷移が必要なのか?

640 :デフォルトの名無しさん:2014/10/29(水) 07:11:34.45 ID:gYeqyNVo.net
親子関係とは何ですか?

641 :デフォルトの名無しさん:2014/10/29(水) 07:37:41.85 ID:N8JvcROE.net
>>640
勉強不足。Win32の基礎からやり直せ

642 :638:2014/10/29(水) 22:07:35.02 ID:r8pQJvlw.net
640他

有難う御座います。
ダイアログは、モーダルです。
親1 子4です。

未だ、原因は分かっていませんが
対処は、出来そうです。

新しく、ダイアログを作成して置き換えると
動作しそうです。(リソースが壊れた?)

因みに641は、私では無いです。

643 : 【東電 74.8 %】 :2014/10/30(木) 12:42:12.45 ID:VubmAqci.net
>>634
もしもしキミキミ!そうキミや。それはそうと、あれさ

神戸市の東、芦屋西宮の知的障害者施設で未成年利用者に性的な行為をして淫行条例で逮捕された三田谷学園元職員の堂垣直人(西宮市老松町)は、結局どういう罪になったの?
被害者家族のケアを芦屋市役所と兵庫県警はちゃんとやったのか?
差別や虐待は環境を選べない子供には関係ない。

http://www.youtube.com/watch?v=JxMzW3ZlV4g&sns=em

644 :デフォルトの名無しさん:2014/10/30(木) 19:13:54.92 ID:P+CVnAvq.net
モーダルの意味が分かってねーだろ?
モードレスにしろよ

645 :デフォルトの名無しさん:2014/11/07(金) 09:51:07.09 ID:FbMgv0lz.net
ちょっと教えてください。
スレッド内でUpdateDataを使うと
debug asseetion failedになって
あまりよろしくありません。
で検索すると、PostMassage経由でUpdateDataに
アクセスすれば上記のエラーはでない模様です。
でもPostMassageもUpdateDataも
同じCWndメンバーなのに何故UpdateDataは
直接スレッドからアクセスできないのでしょうか。

646 :デフォルトの名無しさん:2014/11/07(金) 10:07:48.63 ID:nUR92w6F.net
直接関数呼び出しになるのと
メッセージループで処理されるのとが違う

647 :デフォルトの名無しさん:2014/11/08(土) 06:18:29.33 ID:F238qiEh.net
>>645
UIスレッドと違うスレッドから呼び出したのなら当たり前かと。
MFCのオブジェクトは、基本マルチスレッドには非対応。
PostMessageは殆どAPI直結だから偶々通るだけ。

648 :デフォルトの名無しさん:2014/11/08(土) 14:40:24.68 ID:FUUNkC7E.net
>>647
> PostMessageは殆どAPI直結だから偶々通るだけ。
嘘書くなよ。メイン(UI)スレッドでしかできない処理(スレッドコンテキストに依存する処理)を
他のスレッドから行わせるときはメッセージをpostして、メッセージループ経由でメインスレッドに
処理させるのは常道。『偶々通る』、なんてことじゃない。

649 :デフォルトの名無しさん:2014/11/08(土) 18:10:20.71 ID:F238qiEh.net
別スレッドからでも問題無くメソッドを呼び出せる、
という思い込みだけで呼び出しているみたいだから、偶々と書いたわけで。
事実UpdateDataはASSERTに引っかかっているし。

厳密には、KB147578に書いてある通りHWNDでPostMessageしろって話なのだろうけど、
流石にそこまではしなくても大丈夫かとw

650 :デフォルトの名無しさん:2014/11/11(火) 20:45:36.67 ID:rXOccRM9.net
assertが出るのはCWndオブジェクト管理用のポインタ配列がスレッド単位で
独立しているからでなかったかな。

CWinThread派生クラスにHWND型のデータメンバを追加しておいて、ワーカ
スレッドをサスペンド状態で作成して、ワーカスレッド内からメインスレ
ッドを呼び出す際に、

CWnd *pWnd=CWnd::FromHandle(m_hWnd);
pWnd->UpdateData();

でよかった気がする。

651 :デフォルトの名無しさん:2014/11/12(水) 00:43:51.10 ID:3AwZRy+LK
CStaticから派生させCStaticHogeを作成し
ダイアログにCStaticを配置し

ダイアログクラスに
CStaticHoge hogeしてDDX_Controlしたのですが

Createが呼ばれません。

どうすれば呼ばれますか?

652 :デフォルトの名無しさん:2014/11/12(水) 19:52:49.25 ID:3AwZRy+LK
解決しました

653 :デフォルトの名無しさん:2014/11/14(金) 21:50:11.08 ID:bZ12n+rg.net
Community版ってPro相当の条件付き無料版みたいだけど
ProってことはMFCもあるんだよね?
個人的にはどうでもいいけどw

654 :デフォルトの名無しさん:2014/11/15(土) 13:56:53.32 ID:I36Ez7uH.net
MFCないとGUI出来んだろ

655 :デフォルトの名無しさん:2014/11/15(土) 17:28:43.57 ID:yJPCIm/Q.net
自宅のPCにインストール中。
VS2005以来なのでワクワクする。

656 :デフォルトの名無しさん:2014/11/16(日) 08:28:58.89 ID:lR2mulvd.net
WTL/ATL も入っちょる

657 :デフォルトの名無しさん:2014/11/16(日) 09:36:56.35 ID:IB4rlMlg.net
WTL?

658 :652:2014/11/16(日) 11:07:47.88 ID:fYw/Ek9p.net
>>654 の真意がよくわからん
>>653で言いたかったのはExpressとかの無料版はMFCなかったけど
Pro相当の無料版はMFCついてるなら、スレ的には価値のあるものかと思った。
個人的にどうでもいいのはVS2010Proもってて新規にMFCのアプリつくることはないので
それで十分とおもっているから。
MFCなくてもGUIのアプリなら
・他のライブラリを使う(QT,wx等)
・WindowsAPIを使う
・Managed系 Cli とかから System.Windows.Forms等を使う

659 :デフォルトの名無しさん:2014/11/16(日) 13:49:32.07 ID:zDSUi8Bd.net
http://peace.2ch.net/test/read.cgi/tech/1329830536/

660 :デフォルトの名無しさん:2014/11/16(日) 19:18:00.51 ID:mcbtcq3H.net
VS2013Communityで遊んでます。
二つのプロジェクト間でリーソースをドラッグでコピーしようとすると
ドラッグされた側が異常終了してコピー出来ません。回避策ありますか?
Comunity版じゃない方はコピーできます?
vs2005で作ったプロジェクトにドッキングウィンドウを仕込もうとしてるんですが
menu,toolbar,statusbarをCMFC?に変えるところで上記問題にぶつかってます。

661 :デフォルトの名無しさん:2014/11/17(月) 09:09:01.05 ID:8aBncdye.net
>>660
リソースビュー上での操作のことであれば、
VS2008やVS2010ではドラッグでもコピーできるようだけど、
まずは普通にキーボードやコンテキストメニューなどでコピーしてみては。

662 :デフォルトの名無しさん:2014/11/17(月) 17:41:31.02 ID:MImLrqGZ.net
>>661
レスありがとうございます。
IDEからプロジェクトを閉じ、ファイルを開くから2つのプロジェクトが持つrcを開いたら
コピー可能でした。が、ちょっと不便ですね。
http://msdn.microsoft.com/ja-jp/library/a5axa064.aspx

663 :デフォルトの名無しさん:2014/11/20(木) 22:18:02.24 ID:4UHhfVdJ.net
2013Comunityで初めてMFC Feature Packを使ってみた。
何の根拠もなく夢のようなライブラリだと思い込んでたけど
ソース見たら今まで自分でコツコツ作っていた機能を最初から用意している
程度のものもありちょっとショック。
ドッキングウィンドウは良いと思うけどね。

664 :デフォルトの名無しさん:2014/11/21(金) 06:01:51.64 ID:4QqWErIn.net
車輪の再発明か

665 :デフォルトの名無しさん:2014/11/21(金) 07:53:26.36 ID:4wsWtGd6.net
FeaturePack相当のものがC#で手軽に使えたらMFCを捨てて移行してもいいと思ってるんだが、
WPFは自由度が高い代わりに自分でなんとかしろって感じなんだよなぁ。

666 :デフォルトの名無しさん:2014/11/21(金) 19:04:11.77 ID:msdaycSCF
FeaturePack程度ならゼロから書いても大した工数にはならんだろ?

667 :デフォルトの名無しさん:2014/11/21(金) 21:22:31.27 ID:hLSIsWv9.net
MFC, WinForms, WPF比較すると自分的にはMFCが一番自由度高いとおもうけどな
ただし、ひたすら面倒。特にダイアログが色んな意味で低レベルだから
なんか自分でポトペタできるようなライブラリか何か作ったほうがいいんじゃないかと思うぐらいだ。
WPFは見た感じや動作をある程度までは比較的簡単にいじれるけど
いちいち覚えることが多いのと、ある程度以上のことはできませんな感じがする。
個人的にはFormsが一番バランスがいいと思う。

668 :デフォルトの名無しさん:2014/11/21(金) 22:53:56.82 ID:vZidNcEn.net
>>667
日曜プログラマからの質問ですが
MFC, WinForms, WPFの動作速度(初回起動込)は
MFCを100とするとどんな感じですか?
昔C++/CLIを勉強したことがあるのですが、あまりの遅さに
1週間で見捨てました。今は違うのかな。

669 :デフォルトの名無しさん:2014/11/22(土) 02:18:29.59 ID:5aB+VkQwk
日曜にプログラミングするの?
どんだけ仕事熱心なの、つかブラック?

670 :デフォルトの名無しさん:2014/11/22(土) 08:49:46.19 ID:XJHA90H/.net
速度なんかそんなかわんないんじゃない?
少なくとも体感できるほど遅いのはなんか別の問題だろう。
特にC++/CLIでGUI作ると・・・
動作時の速度じゃないけど、コンパイルがくっそ重かったり
そもそもいきなりGUIエディタがエラーになってGUIいじれなくなったりしてたから
C++/CLIでGUIを作る奴は居ない。

671 :デフォルトの名無しさん:2014/11/22(土) 22:29:21.32 ID:w+0AKoeG.net
>>670
見捨てた当時、遅すぎると思ったのはシンプルなGDIでの描画です。
VS2013でリビルドしたらだいぶマシになってるようですね。
それでもMFCに比べると倍以上遅いけど、、

672 :668:2014/11/22(土) 22:33:39.76 ID:w+0AKoeG.net
訂正
GDIはMFC側の話でDotNet側は中身不明。

673 :665:2014/11/22(土) 23:41:35.56 ID:nO/Ts9Hc.net
昔(2005あたり)と比べると初回起動は速くなってるというか、PC自体が速いのが大きいと思う。
最近のWindowsは元から.Net入ってるのも速い理由になってると思う。
C++のアプリと比べると起動遅いと思うときはあるけど問題にするほどでは無い速度と思う。
Windowsは長いこと使ってると起動時間とかどんどん長くなっていって
OSインストールしなおしたりするとOSの起動もアプリの起動も早くなるので
環境や状況によっては遅いと思い込んでいる人もいると思う。

最近WinFormsでDraw系のツールを作ったが実用になる速度ではあると思う。速いとは思わない。
だいぶ以前(VS2005のころ)ビットマップ系のアプリを作成したことがあるが
それは遅いと思った。いわゆるマップチップ表示のようなものだったが、
メモリーDCとかなかったのでビットマップの転送が効率悪いのだろうと思ったが、
最近はPCが速いのか何か改善されたのかわからないけど、以前よりかなり速くなっていた。

C++/CLIとかはほとんど使って無いのでわからない。

674 :666:2014/11/23(日) 00:10:08.48 ID:b8N83vrz.net
>>実用になる速度ではあると思う。
リビルドの結果、全く同感です。

>>速いとは思わない。
個人的にはここがネックです。

少しWPFの勉強してみようかな。DirectXで描画みたいだし。

675 :デフォルトの名無しさん:2014/11/23(日) 10:30:56.90 ID:BbKFBihK.net
WinFormsはGDI+で描画のはず。
昔はGDI+のハードウェアアクセラレーション予定もあった筈なんだけど、
結局ソフトウェアレンダラで落ち着いたみたいだ。

676 :デフォルトの名無しさん:2014/11/24(月) 14:45:44.59 ID:vXnR58zu.net
visual c++はニートになって勉強を続けないと身につけられる気がしない。
週末に学習に専念したくらいでは休み明けに成果を発揮するのは無理だし。
業務でvisual c++の開発をしてるわけではないし、その学習する時間で他の
やるべきことに使う時間が失われるほうが問題かもしれんな。
かなり難しいプログラムコードを書く割に、ウィンドウを表示して画面に
文字や図形を描画する程度で実用性があまりないもののために勉強するの
は大変だな。

677 :デフォルトの名無しさん:2014/11/24(月) 15:29:38.34 ID:EXpXIrWI.net
単にコンパイラとして使えば良いよ

678 :デフォルトの名無しさん:2014/11/24(月) 19:00:37.24 ID:c3LF4k/CB
wwwでは画面に文字を書いたり、図形を描いたりしてるところまでは無数にあるけど
そんなの誰でもすぐできるだろw

679 :デフォルトの名無しさん:2014/11/28(金) 00:47:55.19 ID:mpqlgBjO.net
確かに職場で勉強する暇は無かったな。スケルトンを分かってないとMFCも上手く使えないしな
だが、他の環境よりずっとラクに組めるがなぁ

680 :デフォルトの名無しさん:2014/11/28(金) 03:00:48.15 ID:0GRBX8Eb.net
UIをWin32やMFCで作るのなんてやってられないw
C#が一番楽でいいよw

681 :デフォルトの名無しさん:2014/11/29(土) 18:59:41.93 ID:Uw3xE4X+.net
ただ作るだけ、ならばな。ややこしい仕様を満たすとなると話は違ってくる

682 :デフォルトの名無しさん:2014/11/29(土) 20:17:17.73 ID:WqomWRNe.net
MFCでプログラム組む人と、楽なことが一番な人とでは話がかみ合わない
と思う。そんなに大変なものでもないと思うけどね。ニートにならないと
VC身につけられないって人は、何でここ見に来てるんだろう。平日の昼間
に、、いや何でもない。

683 :デフォルトの名無しさん:2014/11/29(土) 21:12:43.94 ID:AKpgIRGl.net
一ヶ月くらい社内ニートをやってたらそこそこ使えるようになったけどなあ。
そこそこ止まりの頭しか持ってないがw

684 :デフォルトの名無しさん:2014/11/29(土) 21:40:51.77 ID:WqomWRNe.net
それは言い方の問題だろ(w
会社から(会社の意図はともかく)学習する時間を貰って、成長した。
と言うか、社内ニートと言うかで大分印象は変わってくる.
私も仕様がいつまでも確定しないでそんなことあったけど、あの時間は
ありがたかったと思う。

685 :デフォルトの名無しさん:2014/11/29(土) 23:22:26.88 ID:SoXvwZNw.net
社内ニートしてたら会社が潰れたでござる

686 :デフォルトの名無しさん:2014/11/29(土) 23:43:48.02 ID:YaXrgfF9.net
在宅ニートがはかどるな

687 :デフォルトの名無しさん:2014/11/30(日) 03:54:06.81 ID:JKdMgMZL.net
ごく初期の学習コストが高めというのはあるかもね。
WIN32APIだけでいろいろやった経験がある人とない人でも違うし
他のフレームワークの経験の有無でも違うだろうけど。

688 :デフォルトの名無しさん:2014/11/30(日) 14:35:38.02 ID:5xl03gb+V
MFC程度なら1から書いても大した工数かからんだろ

689 :デフォルトの名無しさん:2014/12/02(火) 18:59:16.69 ID:JIqSIT6x.net
>>682
>平日の昼間
>に
不正解。祝日だ。

690 :デフォルトの名無しさん:2014/12/07(日) 20:14:45.08 ID:Dmo74Gnoq
はに?

691 :デフォルトの名無しさん:2014/12/07(日) 20:16:04.56 ID:TbxrJZXQ.net
わけわか

692 :デフォルトの名無しさん:2014/12/07(日) 20:18:42.56 ID:S3RAav3h.net
www

693 :デフォルトの名無しさん:2014/12/07(日) 20:29:33.97 ID:S3RAav3h.net
e

694 :デフォルトの名無しさん:2014/12/07(日) 20:29:57.32 ID:TbxrJZXQ.net
f

695 :デフォルトの名無しさん:2014/12/08(月) 01:49:22.71 ID:x2ZB8QJM.net


696 :デフォルトの名無しさん:2014/12/12(金) 12:19:08.79 ID:r3Fvlg1D.net
結局、MS Office は .NET では書かれないんだからな。そりゃCOMとOLEが残るわな。

697 :デフォルトの名無しさん:2014/12/12(金) 19:47:56.62 ID:igsJCovF.net
スレタイ、デバッグライブラリ?

698 :デフォルトの名無しさん:2014/12/15(月) 01:18:35.68 ID:aYRUZIwr.net
ドトネで書いたらソース丸見えなんだから売れなくなるだろ。

699 :デフォルトの名無しさん:2014/12/22(月) 21:09:04.99 ID:qPtfkPzc.net
678のように、そんなに大変なものでもないと思う人は、きっと頭がいいんだろうな。
本に書かれているプログラムは、いずれも幼児のおもちゃレベルでしかないけれど、
今はこれで我慢して勉強を続けるしかないんだろうな。

700 :デフォルトの名無しさん:2014/12/23(火) 05:47:15.20 ID:Cbd3aR0Y.net
最初から最高のパフォーマンス出せるひとなんてそうそういない
成功の裏にはたくさんの見える失敗や見えない失敗がある
だから初心者は失敗をおそれず色々やればいい

701 :デフォルトの名無しさん:2014/12/27(土) 02:10:36.27 ID:x6PZI0I4.net
失敗ばかりしてる人が成功するはずが無い

成功者は大抵は失敗がかなり少ない

702 :デフォルトの名無しさん:2014/12/27(土) 07:22:14.31 ID:w+/gOU5E.net
なるほど
一理ある

703 :デフォルトの名無しさん:2014/12/27(土) 09:25:34.66 ID:AKOS2ykD.net
失敗しないのは天賦の才能かね
経験積んで失敗しなくなる訳じゃないんかね
運が良いだけならそうそう続かないと思うんだが
どうなんだろうね

704 :デフォルトの名無しさん:2014/12/27(土) 16:20:15.39 ID:y4iXYZp5.net
諦めたら失敗が確定する。
最終的に成功すれば、それは試行錯誤となる。
まあ見極めも大事ではある。

705 :デフォルトの名無しさん:2014/12/28(日) 13:53:50.40 ID:6jddN626.net
うむ

706 :デフォルトの名無しさん:2014/12/28(日) 14:04:15.85 ID:0mcuX8gP.net
"成功"が多数の挑戦の結果ならば多数の失敗がある

失敗が少ないのなら成功ではなく安定という名の停滞である

707 :デフォルトの名無しさん:2014/12/28(日) 14:45:00.04 ID:Lg3Cm6Ji.net
日本人的感覚って気がするなあ
失敗からどれだけ学ぶかじゃない

708 :デフォルトの名無しさん:2014/12/29(月) 10:49:16.66 ID:naIzv4vi.net
ノーベル賞を取る人は数限りなく失敗してるんだが
あるいは分量を間違えたら新素材が出来ちゃったとか

709 :デフォルトの名無しさん:2014/12/29(月) 10:50:09.49 ID:/fu+2Q3X.net
ノーベル賞の選考基準に
「失敗からの発見」てのがあるからな
失敗したひとしかノーベル賞取れない

710 :デフォルトの名無しさん:2014/12/31(水) 07:07:57.90 ID:69RlDRjx.net
たしかに川上会長は失敗したイメージが全然記憶にないぬ

711 :デフォルトの名無しさん:2015/01/04(日) 02:10:23.24 ID:OfghjWl9.net
>>704, >>706
単なる詭弁だよね

712 :デフォルトの名無しさん:2015/01/04(日) 07:09:28.20 ID:eaSAVEXU.net
5.資料を示さず持論が支持されていると思わせる

713 :デフォルトの名無しさん:2015/01/04(日) 16:34:17.47 ID:w2TCoU2v.net
一部の特殊な例だけ取り上げて
それが全体の傾向であるように結論付けることはするべきでないが
往々にして成功者ヒストリーは一部の特殊な例である

714 :デフォルトの名無しさん:2015/01/04(日) 23:29:20.98 ID:cZc1COaa.net
変な人が一人で意味のない話をしているように見える。
日本語変だし外人さんかな。

715 :デフォルトの名無しさん:2015/02/08(日) 20:19:57.27 ID:vjMoB+W3.net
VS2013のC++でMFCのアプリケーションウィザードを使うと、自動的に
WindowsのファイルExplorerみたいなアプリが作れますが、例えば、
 アプリケーション種類:マルチドキュメント
 プロジェクト形式:Office (Ribbon有り)
この上にListBoxとかCheckBoxとかいろんなコントロールを配置して
自作のGUIを作りたいのですが、その場合、Dialogベースのアプリなら、
リソースのエディタでそのダイアログに自由に部品を配置して作成できますが、
上記のアプリの場合、自動生成されたリソースにはIDD_ABOUTBOXくらいしか
ありませんでした。
部品の追加は、プログラムに直接手書きして行くしか方法は無いのでしょうか?
要するにRibbonを持ったGUIを作りたいのですが、部品の配置はDialogを作る場合
のように自由に配置したいのですが。可能でしょうか?

716 :デフォルトの名無しさん:2015/02/08(日) 20:36:51.73 ID:tUjKNEQ0.net
マルチドキュメントなんだからあたりまえ
シングルドキュメント煮汁

717 :デフォルトの名無しさん:2015/02/08(日) 20:59:52.70 ID:vjMoB+W3.net
>>716
レスありがとございました。
さっそくシングルドキュメントでウィザードで作ってみたのですが
やはり、リソースフォルダの中身を見ると、BitmapとかIconとかMenuとか
いろいろ自動で追加されていますが、Dialogに関しては、IDD_ABOUTBOX
しか見当たりません。部品を自由に配置できるそういうリソースは
自動生成されないのでしょうか?

718 :デフォルトの名無しさん:2015/02/08(日) 21:30:40.01 ID:p5pYedXE.net
リボンはDialogじゃなくてRibbonというリソースだよ。マルチ/シングルは関係ない。

719 :デフォルトの名無しさん:2015/02/08(日) 21:37:34.81 ID:vjMoB+W3.net
>>718
レス有難うございます。

□□□□□□□□□□□□ Ribbon
□□□□□□□□□□□□
■■■■■■■■■■■■
□□□■□□□□□□□□
□□□■□□□□□□□□
□□□■□この部分に□□
□□□■□部品を置きたい
□□□■□□□□□□□□

Ribbonではなくて↑の部分に
部品を置きたいのですが。
Dialogを作るのと同じようにマウスで
部品配置可能でしょうか?

720 :デフォルトの名無しさん:2015/02/08(日) 22:56:31.70 ID:z5GqJ8Sh.net
2013は知らないけど、FormViewっていうのがあったような気がする。

721 :デフォルトの名無しさん:2015/02/09(月) 07:47:29.91 ID:iJdyGTL3.net
>>719
馬鹿には無理

722 :デフォルトの名無しさん:2015/02/09(月) 09:12:25.99 ID:dbrw/Pr1.net
>>721
知っているなら教えてくれよ

723 :デフォルトの名無しさん:2015/02/09(月) 12:55:12.06 ID:eUOrTSr4.net
>>717
・CViewではなくCFormViewを使う
・CViewのまま子ダイアログを貼り付けるようにする

724 :デフォルトの名無しさん:2015/02/09(月) 14:31:52.36 ID:dbrw/Pr1.net
>>720>>723
出来ました。
有難うございました。感謝です。

725 :デフォルトの名無しさん:2015/02/09(月) 14:39:13.44 ID:jsF3Jw1x.net
デュアルブートできますか?

726 :デフォルトの名無しさん:2015/02/09(月) 20:21:42.80 ID:V0EspmSl.net
>>725
はい?

727 :デフォルトの名無しさん:2015/02/09(月) 21:38:48.12 ID:dbrw/Pr1.net
MFCにはC#のTableLayoutPanelとかSplitContainerに相当する
部品はありませんか?
もし無い場合、皆さん、自作するのでしょうか?
私には難しくて無理です。

728 :デフォルトの名無しさん:2015/02/09(月) 22:42:56.03 ID:EPzT3drr.net
2013は知らないけど、CSplitterWndがあったと思う。
動的にすると勝手にスクロールするキモいやつにできる。

> もし無い場合、皆さん、自作するのでしょうか?
ネットで検索したら大体似たものは見つかってたけど最近は知らない。

729 :デフォルトの名無しさん:2015/02/18(水) 14:24:22.49 ID:o+3lLWFr.net
Win7-64bit+VS2010(SP1)で開発してるんだが、
1ヶ月前あたりからこんな現象が頻発するようになったんだが、同じ症状の人いる?
ttp://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+201205/12050011.txt

今まで問題なかった昔のソースを実行してみても同じ現象になるのよね。
条件はDebugモード、MFCスタティック、CFileDialogを連続して2回以上使う、bVisualStyleを変更しても出る。
CFileDialog使ってから数十秒〜数分の間で出る時もあるし出ない時もある。
出力ログを見るとCOM自動開放時に例外0xC0000005でしくじってる模様(ole.dllがエラー出してる)

OSのFileDialog仕様が変更されたのか、セキュリティのせいなのかよく分からん

730 :デフォルトの名無しさん:2015/02/18(水) 15:10:07.84 ID:X3xI6x7N.net
>>729
CFileDialog CoInitialize でググったら幸せになれるかな?

731 :デフォルトの名無しさん:2015/02/18(水) 21:56:24.15 ID:289WFADr.net
Win95のころダイアログ使うとVCのログウインドウによく出てたような気がする。
NT系では出なかった気がする。
プログラム強制終了するわけじゃなかったし原因がわからなかったから放置してたな。
これと一緒かどうかは知らないけど。

732 :デフォルトの名無しさん:2015/02/19(木) 10:48:51.10 ID:mAv7fs9q.net
MFCのプログラムでウィンドウのないタスクトレイ常駐プログラムを作っていて
起動時にSetTimerを設定したいのですが、ネットで調べてもウィンドウの初期化時にセットしているものばかりなのですが、
SetTimerはウィンドウがないと使えないでしょうか

733 :デフォルトの名無しさん:2015/02/19(木) 11:34:26.01 ID:hRb8aPHh.net
ウィンドウはなくてもいいがメッセージループは
廻す必要がある

734 :デフォルトの名無しさん:2015/02/19(木) 12:10:50.17 ID:mAv7fs9q.net
起動時にSetTimerを設定する場合はOnInitDialog()の中で行うという解説が多いのですが
ウィンドウがなければOnInitDialog()もないと思うのですが、ウィンドウがない場合はどこにSetTimerを入れるべきでしょうか

735 :デフォルトの名無しさん:2015/02/19(木) 12:21:25.34 ID:ra0CCNS1.net
そのプログラムがタイマーが必要なタイミングで通るとこに置けばいい
いつからいつまで必要なの?

736 :デフォルトの名無しさん:2015/02/19(木) 12:34:49.08 ID:mAv7fs9q.net
起動から終了までずっとです

737 :デフォルトの名無しさん:2015/02/19(木) 13:33:51.98 ID:ra0CCNS1.net
>>736
InitInstanceでSetTimerしてExitInstanceでKillすればいいと思うよ。

738 :デフォルトの名無しさん:2015/02/19(木) 13:47:12.53 ID:ra0CCNS1.net
あーでもタスクトレイのアプリ作った時はトレイからの通知受け取り用に
表示しないままのウィンドウ作ってたけどな、あまりに昔の話なので
今の状況知らないけど。

739 :デフォルトの名無しさん:2015/02/19(木) 14:10:56.99 ID:mAv7fs9q.net
>>737-738
ありがとうございます。やってみます。

740 :デフォルトの名無しさん:2015/02/19(木) 16:05:37.86 ID:m5LZC2Jw.net
>>730
ありがとう。
(*´∀`*)幸せになれた。
2006年頃はAcrobat 7.0が何かしらやらかしてたらしいけど、今回はなんだろうね?

741 :デフォルトの名無しさん:2015/02/19(木) 16:47:33.77 ID:ZhXVRy09.net
>>740
昔調べたときは、MSも認識している問題だと解釈したけど。
ttp://mfctips.com/2012/10/29/cfiledialogdomodal-causes-access-violation/

742 :デフォルトの名無しさん:2015/02/20(金) 17:10:38.15 ID:Wp2bPqaM.net
OnTimerは重い処理をさせるときは一度解除したほうがいいんですか?
どうも処理が積み重なっているように感じるのですが

743 :デフォルトの名無しさん:2015/02/20(金) 18:35:12.65 ID:MkuV+cy2.net
はい

744 :デフォルトの名無しさん:2015/02/20(金) 18:41:20.45 ID:MaDrr6Li.net
シングルスレッドであれば、タイマーが重い処理を呼び出しているとして、その呼び出しが重複することはないよ。

745 :デフォルトの名無しさん:2015/02/20(金) 22:41:12.80 ID:SRZUyAeY.net
まあ動作環境知らんけど、再入が気になるなら
フラグとかで対策しとけ

746 :デフォルトの名無しさん:2015/02/20(金) 22:45:51.35 ID:r3gji5y+.net
フラグ立てるとatomicな処理とかでまた詰まるんですね

747 :デフォルトの名無しさん:2015/02/21(土) 06:55:40.51 ID:ZprzlED+.net
ありがとうござます。

748 :デフォルトの名無しさん:2015/02/22(日) 23:00:32.38 ID:bfA7aDbz.net
基本的なことをお聞きしますが、MFCのプログラムを作っていて
ヘッダーファイルで
public:
static const float VAL;
とやってcppのほうで、
CHoge::CHoge()
{
const float VAL = 0.1;
}
とやっているのですが、LNK2001のリンクが未解決というエラーになります。
constの定義はほかにもあるのですが特定の何個かだけエラーになってまして
意味がわかりません、どなたかわかる方教えてください

749 :片山博文MZ ◆T6xkBnTXz7B0 :2015/02/22(日) 23:43:41.43 ID:vD6PHArE.net
>>748
const float CHoge::VAL = 0.1;

750 :デフォルトの名無しさん:2015/02/23(月) 00:54:29.48 ID:NldAyYSY.net
>>749
あざす
通りました。でもなぜ通るのかわかりません。
どういう意味の違いがあるのでしょうか

751 :片山博文MZ ◆T6xkBnTXz7B0 :2015/02/23(月) 00:57:45.43 ID:cWkGfwjm.net
一方は関数内ローカル変数になる

752 :デフォルトの名無しさん:2015/02/23(月) 06:38:22.60 ID:5y2BF+sm.net
const float ::VAL = 0.1;

753 :デフォルトの名無しさん:2015/02/23(月) 07:10:59.32 ID:XXFYkuzw.net
ありがとうございます。まだ完全に理解できてませんがスコープが原因ということで調べてみます

754 :デフォルトの名無しさん:2015/02/23(月) 07:41:28.89 ID:AjFb9vvE.net
ヘッダに書いてinlineにしてしまえ

755 :デフォルトの名無しさん:2015/02/23(月) 09:09:44.78 ID:+NS9Huw+.net
C#やJavaと違って、C++は自動でインスタンスフィールド
→クラスフィールドみたいには追いかけてくれない。
……だっけ?

756 :デフォルトの名無しさん:2015/02/23(月) 09:26:24.22 ID:AjFb9vvE.net
勝手に追いかけてもらったら困る

757 :デフォルトの名無しさん:2015/02/24(火) 15:41:56.25 ID:XQtX+KlD.net
MFCのクラスの中でstd::mapを使おうとするとアクセス違反で逮捕するってエラーが出るんですが
mapはクラス内で使ってはダメなんでしょうか

758 :デフォルトの名無しさん:2015/02/24(火) 16:10:43.49 ID:trUfTvKQ.net
どう書いたらどんなエラーが出たのさ?

759 :デフォルトの名無しさん:2015/02/24(火) 17:12:53.94 ID:XQtX+KlD.net
empty()ではじいたらエラーにならなくなりました。お手数おかけしました

760 :デフォルトの名無しさん:2015/02/28(土) 22:25:37.26 ID:oRo13HM9.net
>>757
アクセス違反で逮捕で笑ってしまった。私は懲役だろうなー

761 :デフォルトの名無しさん:2015/03/01(日) 05:32:10.55 ID:LYwpGVQL.net
自演つまらん

762 :デフォルトの名無しさん:2015/03/07(土) 09:23:30.87 ID:zQQnxaDJ.net
MFCって.NETと比べるとコントロールが馬鹿に少なくないですか?
こんなんじゃ何も作れないと思うんですが・・・

763 :デフォルトの名無しさん:2015/03/07(土) 10:52:39.25 ID:SbrjsXOD.net
コントロールやコントロールのようなものをMFCで作るか
ActiveXコントロールならATL(たぶんMFCでも)で作って使えばいいし
むしろDVアーキテクチャなら一般的なコントロールは
ちょっと使いにくいというか、いちいち値を入れたり出したりが
面倒だったりレスポンスが悪くなるような気がする。

764 :デフォルトの名無しさん:2015/03/07(土) 13:02:46.44 ID:BY6NtiZi.net
.netはコントロールにしないと使えないからでは。

765 :デフォルトの名無しさん:2015/03/08(日) 05:03:07.32 ID:5/QSYnVE.net
MFCは貧弱だからなぁ
MFCだけじゃなく、C++は標準ライブラリにも恵まれなかったし
.netはその辺の反省も生きているのでは

766 :デフォルトの名無しさん:2015/03/09(月) 01:00:07.44 ID:fIAFp70M.net
.netはJavaの真似でしょ。
javaはC++の反省が生かされてるから、
間接的には影響しているんだろうけど。

767 :デフォルトの名無しさん:2015/03/09(月) 06:59:54.30 ID:+I51GYiG.net
C++とJavaの反省を生かしているかと

768 :デフォルトの名無しさん:2015/03/09(月) 07:22:12.25 ID:ozCn1dQF.net
そうはいっても、Windowsアプリ普及期でのMFCの存在はかなり大きかったとおもうよ
APIで書いてた頃のめんどくささったらなかったもの

769 :デフォルトの名無しさん:2015/03/09(月) 07:47:08.31 ID:+I51GYiG.net
>>762
作ってたんだよ。必要なコントロールは自分でね。買ってくる時もあるけど。

元々Win32 APIで、C言語での大変な開発に対して、
C++でWin32 APIをラップして使いやすくしたMFCが登場し、
Javaが登場するが、ちょっと理想論的なところが使い難かった、

という反省を踏まえて.NETが登場したという時系列だから
.NETの方がコントロールが多い、便利というのは当たり前

770 :デフォルトの名無しさん:2015/03/09(月) 08:41:59.41 ID:CRFMLrc+.net
VB6おじさんですねわかります

771 :デフォルトの名無しさん:2015/03/09(月) 09:06:16.50 ID:dExiqI6Y.net
MFCの設計思想は、名前の通り「ファンデーション」だったんだよ。
APIやメッセージハンドラなどを薄くカプセル化。

今ではだいぶ厚化粧になったけど、根幹は変わっていない。

772 :デフォルトの名無しさん:2015/03/09(月) 09:24:44.28 ID:CRFMLrc+.net
そうか?
MFCは重ね塗りには向いてなかった設計だが

773 :デフォルトの名無しさん:2015/03/11(水) 18:40:08.81 ID:B0uxeYZf.net
そもそもMFCってそんなに便利か?
個人的にはWin32APIを直接呼び出すスタイルと比べて、
大差ないと思うんだが。

774 :デフォルトの名無しさん:2015/03/11(水) 20:16:57.90 ID:ia4bkTQw.net
だから便利じゃんじゃん
大差あったら、いちいちその呼び出しスタイルを覚えなきゃいけないんだぜ

775 :デフォルトの名無しさん:2015/03/11(水) 20:35:35.60 ID:ioZEgDg0.net
つーか、>>771 にも
>APIやメッセージハンドラなどを薄くカプセル化。
って書いてるし

776 :デフォルトの名無しさん:2015/03/11(水) 20:45:19.64 ID:9/hbSKsF.net
>>773
APIだけでウインドウ出してみ

777 :デフォルトの名無しさん:2015/03/11(水) 20:58:28.62 ID:B0uxeYZf.net
>>776
こんなの決まった書き方だから関数化するなりコピペするなりすればよいし。

778 :デフォルトの名無しさん:2015/03/11(水) 22:19:28.88 ID:9/hbSKsF.net
な、出せない奴がバカにするんだよな

779 :デフォルトの名無しさん:2015/03/11(水) 22:50:20.48 ID:qZZ3nd+t.net
>>777
その関数化なり、をやったのがMFC

そういえば、MFCが出た当時、
BorlandのC++クラスライブラリと比べて単なるラッパで
全然オブジェクト指向になってないとかで叩かれてたような

780 :デフォルトの名無しさん:2015/03/11(水) 23:07:17.85 ID:ioZEgDg0.net
そういえばOWLって全然しらんけど、どんなの?

781 :デフォルトの名無しさん:2015/03/11(水) 23:13:57.40 ID:B0uxeYZf.net
>そういえば、MFCが出た当時、
>BorlandのC++クラスライブラリと比べて単なるラッパで
>全然オブジェクト指向になってないとかで叩かれてたような

学生がC++の練習で作ったような香り。
Win32APIには無いMFC独自の機能って何があったっけ。

782 :デフォルトの名無しさん:2015/03/11(水) 23:25:09.02 ID:ioZEgDg0.net
検索したらオープンソースでOWLNextとかあるのか。
OWLの歴史みたいなのが書いてた、最初はC++拡張した感じでうんたらかんたら
新しいバージョンでマクロがどうこうとか書いててちょっと思い出した
メッセージハンドラの処理のため特殊なコンパイラになってたんだな
後でMFC同様のマクロに変わったと。

>Win32APIには無いMFC独自の機能って何があったっけ。
IDE含めるとメッセージハンドラ書くの楽だし、OLE関係はAPIでする気はないよ。
メッセージルーティングとかドキュメントビューとかのフレームワークがあったよ

783 :デフォルトの名無しさん:2015/03/12(木) 00:19:52.63 ID:ncqMmrlm.net
関数化って・・・
内の部署にも意味のわからん子という奴いるわ
CStringとか使ってるのにC言語とか
下位クラスにデータを渡すとか
メモリリークのリーク量を測定したとか

www

784 :デフォルトの名無しさん:2015/03/12(木) 01:46:09.83 ID:V1fK7V1g.net
フレームワークの概念を理解できない奴っているんだよなー
ただの関数化だとか独自性がどうのって。

785 :デフォルトの名無しさん:2015/03/12(木) 10:25:03.88 ID:a1xHiT2r.net
ドキュメント ビュー アーキテクチャもMFCからだな

786 :デフォルトの名無しさん:2015/03/12(木) 11:09:49.63 ID:2mqKs9WG.net
>>774
君の理解は可笑しい

>>775
だけどMFCはオブジェクト指向としてもセンスが悪いし
粒度もめちゃくちゃ

部品として使うことは出来るが
拡張性に乏しい

787 :デフォルトの名無しさん:2015/03/12(木) 13:38:07.95 ID:LazKcZYj.net
>>786
c#で作ったFormプロジェクトをvc++のプロジェクトに自動で変換してくれる機能があると嬉しい。

788 :デフォルトの名無しさん:2015/03/12(木) 15:26:12.60 ID:nf/5K5fN.net
Win32APIのウィンドウ自体がもう既にフレームワークなのに。
MFCはそれラップしているだけ。

789 :デフォルトの名無しさん:2015/03/12(木) 15:39:56.03 ID:yQvULEjl.net
ただのラッパーじゃいかんの

790 :デフォルトの名無しさん:2015/03/12(木) 21:45:24.18 ID:NvxZ0K8V.net
>>786
底辺ではただのラッパーなのに
>拡張性に乏しい
って、ただのアホだったのか。

791 :デフォルトの名無しさん:2015/03/12(木) 23:13:18.11 ID:ncqMmrlm.net
CString strDest;
WCHAR pszBuff = new WCHAR[nLen];
pszBuff[0]=0x61;
pszBuff[1]=0x00;
#if 1 //パターンA
strDest = pszBuff;
#else//パターンB
LPTSTR p = strDest.GetBuffer(nLen+1);

_tcscpy(p,pszBuff);
strDest.ReleaseBuffer( );
#endif

delete pszBuff; // ←ここでHEAP CORRUPTION DETECTED

なにが悪いのかわりません。
ご助言いただけませんか?

パターンAでもパターンBでも同じです。

792 :片山博文MZ ◆T6xkBnTXz7B0 :2015/03/12(木) 23:15:38.16 ID:ul3bYXTG.net
WCHAR pszBuff はポインターか?

793 :デフォルトの名無しさん:2015/03/12(木) 23:24:00.06 ID:ncqMmrlm.net
WCHAR* pszBuff;

794 :デフォルトの名無しさん:2015/03/12(木) 23:24:52.58 ID:NvxZ0K8V.net
nLenは何が入ってるの

795 :片山博文MZ ◆T6xkBnTXz7B0 :2015/03/12(木) 23:27:14.18 ID:ul3bYXTG.net
assert(nLen >= 2);

796 :デフォルトの名無しさん:2015/03/12(木) 23:34:54.54 ID:ncqMmrlm.net
nLenは4です。

797 :片山博文MZ ◆T6xkBnTXz7B0 :2015/03/12(木) 23:39:02.77 ID:ul3bYXTG.net
他の場所でヒープを壊したかもしれん

798 :デフォルトの名無しさん:2015/03/12(木) 23:42:51.61 ID:NvxZ0K8V.net
delete[] かな

799 :片山博文MZ ◆T6xkBnTXz7B0 :2015/03/12(木) 23:44:14.42 ID:ul3bYXTG.net
生ポはもう古い
スマートポインターshared_ptr使えば

800 :デフォルトの名無しさん:2015/03/12(木) 23:49:20.29 ID:ul3bYXTG.net
>>798
それだ

801 :デフォルトの名無しさん:2015/03/13(金) 07:08:19.39 ID:krOXv2Oj.net
>>800
カッコの有無って重要なんですか?
無くても問題無いように思うのですが

802 :デフォルトの名無しさん:2015/03/13(金) 07:12:05.67 ID:Oaowwqwo.net
問題ある

803 :デフォルトの名無しさん:2015/03/13(金) 07:42:21.74 ID:1nqqbprE.net
問題有るから問題が起こっているのでは

804 :デフォルトの名無しさん:2015/03/13(金) 07:58:07.05 ID:Oaowwqwo.net
自信無い香具師は malloc 使っとけ

805 :デフォルトの名無しさん:2015/03/13(金) 14:05:33.67 ID:qZwBtu45.net
まあでも今回の場合はdelete[]かdeleteかは関係ないのでは?
WCHARにデストラクタは無いから。

806 :デフォルトの名無しさん:2015/03/13(金) 23:20:02.15 ID:86LBBVPV.net
馬鹿ばっかだな

807 :デフォルトの名無しさん:2015/03/16(月) 10:35:12.87 ID:r187UUhH.net
デストラクタの有無は関係ないよ

808 :デフォルトの名無しさん:2015/03/21(土) 15:37:00.58 ID:dlgKpj72.net
実行ファイルを生成するプロジェクトと、MFC拡張DLLを作るプロジェクトがあるんですが、
MFC拡張DLLを使うプログラムが一つしかないんです。
こんな場合、DLLにしておく意味って、ないですよね。

809 :デフォルトの名無しさん:2015/03/24(火) 09:18:11.71 ID:I6wG2MHB.net
>>808
拡張DLLの中でしか使わないクラスを実行ファイル側から切り離せる
(クラス名やファイル名などが被っても大丈夫)というメリットはあるかと。

810 :デフォルトの名無しさん:2015/04/01(水) 23:11:44.03 ID:4LHQBjDk.net
win32++
いいなこれ
VSE+win32++
が最強のグイ

811 :デフォルトの名無しさん:2015/04/02(木) 01:21:27.59 ID:SixzQMxI.net
MFCのまったくパクリやん

MFCをつかわずにwin32++を使う理由がない

812 :デフォルトの名無しさん:2015/04/02(木) 18:05:45.52 ID:+U49wT2V.net
こういうのって5年後どうなってるんだろうと考えるとなかなか手を出しずらい。
片山なんとかさんの奴は順調ですか?

813 :片山博文MZ ◆T6xkBnTXz7B0 :2015/04/02(木) 18:22:41.27 ID:NLY+5WHr.net
>>812
忘れてくれ。フレームワークよりも小さい単位で標準化した方が
再利用性が高いことに気が付いた。興味あるならGitHubを眺めてくれ。

814 :806:2015/04/02(木) 18:55:28.32 ID:+U49wT2V.net
>>813
ググってみたら随分方向性が変わったようですね。
スレチになるのでこれで終了します。

815 :デフォルトの名無しさん:2015/04/06(月) 02:43:25.25 ID:8qn9EEZR.net
スレチというか
スレ横断レスはやめろ
ここはお前の庭じゃねえんだよ

816 :デフォルトの名無しさん:2015/04/13(月) 15:19:53.32 ID:KCk1gXNN.net
大手メーカーの業務アプリ案件はMFC→.netへの置き換え結構あるけど
未だにMFCで新機能追加とか言い出す時代に取り残されたシニアエンジニアがいるからなぁ

817 :デフォルトの名無しさん:2015/04/13(月) 17:40:30.00 ID:mzTd2EvX.net
Win32APIオンリーのデータ解析・表示・管理のAppがあるんだけど
扱う内容が増えたり減ったり変わったりでいつまでもWin32API

818 :デフォルトの名無しさん:2015/04/13(月) 23:31:55.38 ID:ZdguN33D.net
> 大手メーカーの業務アプリ案件はMFC→.netへの置き換え結構あるけど
ホントかよ。俺の周りじゃ「動くからこのままでいい」になってるけどな。
つーか、大手メーカーってなんだ?
> 未だにMFCで新機能追加
客がいうだろ、わざわざ作りなおさなくていいし予算がないって。
どんだけ気前のいい客なんだよ、金持ちかよ。鴨かよ。

819 :デフォルトの名無しさん:2015/04/20(月) 23:36:09.05 ID:UNzZnKkD.net
今更インタプリタはな〜

820 :デフォルトの名無しさん:2015/04/21(火) 11:35:05.17 ID:Lha+cP2T.net
>>818
内製なんだろ。
この場合、提案は作ってる側から出るからありうる。

821 :デフォルトの名無しさん:2015/04/21(火) 22:03:12.12 ID:TVz3JnvO.net
> 大手メーカーの業務アプリ案件はMFC→.netへの置き換え結構あるけど
聞いたことない。

既存MFCベースのシステムにMFCで機能追加
VS
既存MFCベースのシステムを捨ててして.netで作り直し

どっちが費用掛けずに性能の良いものを作れるかは議論の余地がない。

822 :デフォルトの名無しさん:2015/04/26(日) 01:45:48.16 ID:eg/btpQm.net
.netはもっさり感満載だからな・・・

823 :デフォルトの名無しさん:2015/04/27(月) 00:55:55.13 ID:8tzZbtPz.net
.netというかWPFがもっさり感凄い。
DirectXうかうから高速とか、誰が言ったよ。

824 :デフォルトの名無しさん:2015/04/27(月) 21:25:45.31 ID:QwoO9IPF.net
DirectXを使うから遅いんじゃん

825 :デフォルトの名無しさん:2015/04/30(木) 00:46:01.33 ID:+7zpztn5.net
MFCも結構もっさりしてるよな

826 :デフォルトの名無しさん:2015/04/30(木) 13:46:23.42 ID:iDcC+qzm.net
MFCは原理的にWin32APIと比べてそんなに遅くなるわけないんだが。
WPFはマジで重い。証明は簡単。VisualStudioが重くなったから。
昔の2008の頃と比べて明らかに重くなってる。

827 :デフォルトの名無しさん:2015/04/30(木) 17:22:10.44 ID:aqwiXXv6.net
https://twitter.com/HigenekoTech/status/593559591960481792

.Net登場から13年、
ようやっとMFCがVisual Studio 2015 RCの通常インストール設定では
インストールオプションがオフになりました……。

828 :デフォルトの名無しさん:2015/05/03(日) 17:35:02.19 ID:DGVNwvpl.net
なんでそうなっちゃうのかな・・・
もっさりドトネより100倍いいのにな

829 :デフォルトの名無しさん:2015/05/05(火) 02:04:56.43 ID:JPFk61nl.net
http://www.amazon.co.jp/MFC%E3%81%AB%E3%82%88%E3%82%8BWindows%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Microsoft-programming-Jeff-Prosise/dp/475611749X

これなんか凄いプレミアついてんですけど、良書なのかしらん

830 :デフォルトの名無しさん:2015/05/09(土) 10:25:50.00 ID:4IoY+00I.net
10万つまれても売れない


831 :デフォルトの名無しさん:2015/05/20(水) 11:56:19.00 ID:BLE7pvKi.net
7万以上で出品してる業者がいるぞ

832 :デフォルトの名無しさん:2015/05/21(木) 18:43:43.15 ID:/4m8f8ei.net
すげえな、見たことある表紙だけどこの時期だと買ってたか微妙だな
引っ越してから未開封のダンボールひっくり返すのも面倒だしまいいかw

833 :デフォルトの名無しさん:2015/06/26(金) 03:50:03.22 ID:xzpi/Ao3.net
VC2008SP1でSDIアプリ作ってます。
アプリを起動したまま放置すると、システムが省電力状態になりますね、
そこから復帰させるとタイトルバーが消えてしまうのです。VM+RDPなので
本当に省電力なのかもわかってませんけれどもorz

なにか、似たような事例、ありませんか?

834 :デフォルトの名無しさん:2015/06/26(金) 04:35:43.09 ID:TeHEn9G0.net
再描画メッセージを握りつぶしちゃだめだろ

835 :デフォルトの名無しさん:2015/07/12(日) 21:46:59.07 ID:C/tSw4Mz.net
コンボボックスのデータの追加をOnCreateのところで以下のようにして行おうとしたのですが
実行してみると、
"サポートされていない操作を実行しようとしました。"
と表示されデータが追加されていませんでした
どこで行うのが適切でしょうか
m_comboBox.InsertString(-1, _(T"data1"));
UpdateData(false);

836 :デフォルトの名無しさん:2015/07/12(日) 22:27:30.04 ID:phqF54C1.net
ダイアログだったらOnInitDialog

837 :デフォルトの名無しさん:2015/07/12(日) 22:32:06.07 ID:C/tSw4Mz.net
>>836
Messageにそのような項目はありませんでした

838 :デフォルトの名無しさん:2015/07/13(月) 02:04:23.73 ID:mMiCIWdw.net
CDialog::OnInitDialogをオーバーライドかな

839 :デフォルトの名無しさん:2015/07/13(月) 11:57:02.28 ID:VqtAIesy.net
どういう状況なんだろ
Dialogで作ったらOnInitialDialog はできてると思うが・・・
FormView なら OnInitialUpdate でどうか。

840 :デフォルトの名無しさん:2015/07/13(月) 12:49:04.34 ID:+NoacgtO.net
ヘッダのインクルードし忘れ

841 :デフォルトの名無しさん:2015/07/13(月) 13:33:18.74 ID:l5WtWL+j.net
>>838
ありがとうございます
できました

842 :デフォルトの名無しさん:2015/07/13(月) 13:49:33.74 ID:1E/uQBY+.net
>>839
新しく作ったダイアログのクラスには書かれてないよ。

843 :デフォルトの名無しさん:2015/07/13(月) 14:36:29.59 ID:VqtAIesy.net
>>842
だからそういう状況を書いてないよって言ってる

844 :デフォルトの名無しさん:2015/07/22(水) 21:38:27.79 ID:/NrVhZNF.net
>>827-828
Visual C++ での互換性に影響する変更点
https://msdn.microsoft.com/ja-jp/library/bb531344.aspx

Microsoft Foundation Classes (MFC) はサイズが大きすぎるため、
Visual Studio の "標準" インストールから除外されました。
MFC をインストールするには、Visual Studio 2015 RC セットアップで
カスタム インストール オプションを選択します。
Visual Studio 2015 RC が既にインストールされている場合、MFC をインストールできます。
そのためには、Visual Studio セットアップを再実行し、カスタム インストール オプションを選択し、
Microsoft Foundation Classes を選択します。
Visual Studio セットアップの再実行は、コントロール パネル、プログラムと機能か、
インストール メディアからすることができます。

Visual C++ 再頒布可能パッケージにも、引き続きこのライブラリが含まれています。

845 :デフォルトの名無しさん:2015/08/14(金) 16:24:18.54 ID:b+plftNx.net
MFCでIE用のActiveXコントロールを作ってるんですが
そろそろ64bitのIEにも対応しないとなと思うんですが
32bit用と64bit用のocxはGUIDは同じでいいんでしょうか?
別々にしないとダメな気もするんですが
そんなめんどくさそうなことありえない気もして。

846 :デフォルトの名無しさん:2015/08/25(火) 20:21:30.32 ID:whHiIYDp.net
Windows 10 上で、MFC の CFileDialog で作成したダイアログを小さくリサイズできない
http://blogs.msdn.com/b/japan_platform_sdkwindows_sdk_support_team_blog/archive/2015/08/25/windows-10-mfc-cfiledialog.aspx

847 :デフォルトの名無しさん:2015/08/25(火) 22:53:26.74 ID:bZBCfD6W.net
bVistaStyleをtrueにしてコンパイルし直すだけの簡単なお仕事が発生するのか
とりあえず10万とか言っておくかw

848 :デフォルトの名無しさん:2015/08/31(月) 17:36:00.07 ID:+RFS3LY2.net
Visual Studio2013でMFCを使って開発しようかと考えてますが、Visual Studioの様にソリューションエクスプローラーで選択したドキュメントを動的にMDIタブに表示させる方法って、どういう仕組なんでしょうか?

アイデアとか知っていれば、ご教授願いたいです。

849 :デフォルトの名無しさん:2015/09/02(水) 12:04:20.69 ID:qOs0ge7m.net
選択したドキュメントを動的にMDIタブに表示させればいいんじゃないの?

850 :デフォルトの名無しさん:2015/09/02(水) 19:50:29.62 ID:Fj+Qbl8L.net
>>848
前提条件がアレなんですがVSが作ってくれるサンプルコードでは、左側はMainFrmが
保持するダミーデータなのでドキュメントも何もない。サンプルコードを利用し、
画面左で選択した842制ドキュメントを右側で表示するのであればVewTree.cppに
#include "MFCApplication.h" << あなたの作ったプロジェクト名.h
した上で
CViewTree::OnTvnSelchanged当たりで
theApp.OpenDocumentFile(YourDocument);
すれば簡単に新しいタブを作って表示してくれます。
OnTvnSelchangedはプロパティのメッセージから追加可能。
仕組みについてはF11で追っておくと全て見えますので
頑張ってください。昔全部追ったけど忘れちゃった。

VS2015しか入れてないので細かい点違ってたらごめん。

851 :デフォルトの名無しさん:2015/09/05(土) 10:12:22.63 ID:BBxu2OzJ.net
>849
>850

おー。なんか、思考がすっきりした。
ありがとー

852 :843:2015/09/05(土) 10:46:08.22 ID:3jOBDvgZ.net
お、おう。

853 :デフォルトの名無しさん:2015/10/02(金) 15:37:52.90 ID:gVV2SMTn.net
ソースコード上で、MFCのクラスのメンバ関数を右クリックして表示されるメニューから「定義へ移動」を選択すると
昔は、MFCのソースコードが記述されている.cppファイルが開いて、その関数の実装が確認できました
しかし、今は、クラスのメンバ関数定義の.hファイルしか開きません
.cppファイルが開くように設定する方法とかがあったりするんでしょうか?

854 :デフォルトの名無しさん:2015/10/02(金) 17:54:23.84 ID:x/oTrOTW.net
昔から.hだった気がする。私が知らなかっただけかな

855 :デフォルトの名無しさん:2015/10/02(金) 18:04:37.50 ID:gVV2SMTn.net
>>854
大昔の話しですみません、VC6.0のときはできて、VS2002かVS2005あたりで
できなくなったと記憶しています

856 :デフォルトの名無しさん:2015/10/03(土) 12:06:59.25 ID:jyP1OZ7g.net
SHIFT押しながら右クリックかな

857 :デフォルトの名無しさん:2015/10/05(月) 14:25:03.73 ID:IlcRXKJi.net
どのバージョン?
定義に移動と宣言に移動の2つあるけどな

858 :デフォルトの名無しさん:2015/10/05(月) 14:30:24.22 ID:IlcRXKJi.net
2つあるのは2008と2015で確認、、2005以前なのかな?

859 :デフォルトの名無しさん:2015/10/13(火) 16:34:33.41 ID:4E8HDFaj.net
教えてください
Visual C++ 2008のMFCにて
CDockablePaneをフローティング状態でドッキングさせた場合は、
IsVisibleでウィンドウの表示非表示を取得できるのですが
MainFrameにドッキングさせた場合は、必ずFALSEとなってしまいます。
この場合、どうすればドッキングさせたウィンドウの表示非表示を取得できるのでしょうか?

860 :デフォルトの名無しさん:2015/10/13(火) 17:40:22.97 ID:HOdVfJRd.net
>>859
ドッキングさせた状態でも、IsVisibleはTRUEになるぞ。
なにに対してIsVisibleを呼んでるんだ?

861 :デフォルトの名無しさん:2015/10/13(火) 21:04:31.10 ID:qskUs1iE.net
すいませんが教えてください
CMFCToolBarでツールバーのタイトルバーを非表示にする方法は無いでしょうか?

m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD〜
とする時に特にdwStyleにWS_CAPTIONと指定しなくてもタイトルバーが作成されてしまうようです。
デバッガで基本クラスの動作などを追ってみましたがよく判りませんでした

パソコンにあまり詳しくないので変な質問をしてたらすいません

862 :デフォルトの名無しさん:2015/10/14(水) 01:45:27.90 ID:Z0PqNaXB.net
>>861
タイトルバー非表示にしてフローティング状態のとき移動はどうすんの?
ツールバー作成後にWS_CAPTIONを取り除いたらどうなるかテストしてみた?

863 :デフォルトの名無しさん:2015/10/14(水) 02:07:21.02 ID:Z0PqNaXB.net
普通にできるやん
http://www.dotup.org/uploda/www.dotup.org559647.bmp

864 :デフォルトの名無しさん:2015/10/14(水) 06:09:24.17 ID:0l2lMhOu.net
>>862
移動については
DefWindowProc()と
case WM_NCHITTEST:
return HTCAPTION;
でできるかなあと
もしもそれで出来なくても移動できなくてもいいです

>>863
おお!まさしくそんな感じにしたかったのです
自分のやり方では
CreateEx後にスタイルからWS_CAPTIONを取り除いても何の変化も無かったのですが
どうやったのでしょうか??

865 :デフォルトの名無しさん:2015/10/14(水) 11:24:18.39 ID:gvXjNB/o.net
>>864
>>863のはCMFCToolBarではなくCToolBarだな。

CPaneFrameWndの派生クラスを作って、RecalcCaptionHeight()などの必要な仮想関数を再定義。
CMFCToolBarの派生クラスを作って、m_pMiniFrameRTCを上の派生クラスに置き換える。
CMainFrameのm_wndToolBarは、上の派生クラスに置き換える。

というようにやれば、とりあえず可能だった。

866 :デフォルトの名無しさん:2015/10/14(水) 14:12:19.39 ID:h5IvFAMU.net
a---->b とかやってたヤツ、まだプログラマの仕事してるんだろうか?

867 :デフォルトの名無しさん:2015/10/14(水) 14:52:55.95 ID:Z0PqNaXB.net
>>864
タイトルバーなくても移動は、区切り線や余白をドラッグでできるな

>WS_CAPTIONを取り除いても何の変化も無かった
ツールバーにWS_CAPTIONなんて設定されてないやろ
取り除くまでやったんなら、最初に設定されていたかどうかの確認くらいしろ
フローティング時は、枠ウィンドウの中にコントロールバーウィンドウがあって
その中にツールバーウィンドウが含まれているという構成になってるから
ツールバーから見れば、親の親のWS_CAPTIONを外せばいいだけ

つか、君は持ってる知識の量と、解決する能力の低さの乖離があきれるほど酷いな
発言から察するに、質問するまでも無く自力解決できる問題だろ
ネットで情報をつまみ食いしてプログラムを組み立ててる人ってこうなるって見本だな
変わったことする前に、基本に立ち返って足元固めた方がいいぞ
まあ人のことだからどうでもいいけど

868 :デフォルトの名無しさん:2015/10/14(水) 15:16:06.57 ID:gvXjNB/o.net
>>867
だからそれはCMFCToolBarではなくCToolBarだよ。
フローティング時のCMFCToolBarは3階層ではなく2階層で、親はWS_CAPTIONなんて元々持ってない。

869 :デフォルトの名無しさん:2015/10/14(水) 15:36:09.74 ID:Z0PqNaXB.net
>>868
あー、今確認した。大きく勘違いしてたわ
CMFCToolBarクラスなるものがあるのね、申し訳なかった

870 :デフォルトの名無しさん:2015/10/14(水) 15:58:37.29 ID:gvXjNB/o.net
>>865の方法で試してみたものを参考まで。
http://www.dotup.org/uploda/www.dotup.org560094.png

871 :855:2015/10/14(水) 23:56:47.18 ID:0l2lMhOu.net
>>865
>>870
わざわざ試して貰いましてありがとうございます
なるほど、フローティング時に作られるCPaneFrameWndをどうにかすれば良いのですね
CMFCToolBarの方をいくらいじってもどうにもならなかった理由が判りました

>>867
ご叱責はごもっともです、もっと頭を使って考えるようにします
パソコンは難しくてよく判らないのですいません

お二方とも大変参考になりました、ありがとうございます

872 :デフォルトの名無しさん:2015/12/05(土) 11:45:21.66 ID:EO1GJkS2.net
もう誰も居なくなったの?

873 :デフォルトの名無しさん:2015/12/05(土) 18:55:02.23 ID:bugp98K6.net
別に話題とか無いし、
昔の仕事を引き継がされた初心者がたまに質問するだけだろ

874 :デフォルトの名無しさん:2015/12/05(土) 18:57:09.12 ID:bugp98K6.net
bugpってなんだよ
バグ出しまくってるプログラマーみたいじゃないか

875 :デフォルトの名無しさん:2015/12/13(日) 18:30:38.08 ID:24w602fP.net
VisualStudio2015使ってみたが、MFCは2010辺りと丸で変わりなく
マイクロソフトは全面的にC#に切り替えていくつもりなんだろうな

876 :デフォルトの名無しさん:2016/01/25(月) 02:30:33.47 ID:SZyk08HN.net
mfcの分かりにくさにびっくり

877 :デフォルトの名無しさん:2016/01/27(水) 23:12:08.09 ID:MOfhbvzK.net
MFCListCtrlを継承したクラスでOnNotifyをオーバーライドして
リストビューをクリックやダブルクリックした時に、位置情報から
対象のアイテムを算出するような(Excelのセル選択みたいな)事をやりたくて
試してみたんだけど、OnNotifyじゃ補足出来なかった。

そこでいろいろ調べて気になった、OnChildNotifyをオーバーライドしてみたら
NM_CLICKとNM_DBLCLICKが補足できたんだけど、MFCListCtrl(CListCtrl)の
OnChildNotifyとOnNotifyって具体的に何が違うの?

普通にCreateWindowExとかで生成したリストビューに対して
ウィンドウプロシージャでWM_NOTIFYからNM_CLICKを補足出来たから
MFCの場合、OnNotifyとOnChildNotifyとで取得出来るカテゴリ(位置づけ?)が
違うのかと思ってるんだが具体的にどういうカテゴリ分けでそうなってるのかがわからないんだ。

878 :デフォルトの名無しさん:2016/01/28(木) 00:35:34.83 ID:D7v4IB1O.net
「捕捉」を「補足」って書くのって流行ってるの?俺のお客さんも仕様書にそう書いててなんだこりゃって思ってたところ

879 :デフォルトの名無しさん:2016/01/28(木) 11:53:27.54 ID:rfXmp0GV.net
>>877
WM_NOTIFYは親ウィンドウに送られるので、コントロールのOnNotifyでは受けられず、代わりに親が子のOnChildNotifyを呼んでくれる。
「MFC メッセージリフレクション OnChildNotify」で、ググッてみ

880 :871:2016/01/30(土) 19:12:28.77 ID:2kloQ3lF.net
>>879
ありがとうございました

881 :デフォルトの名無しさん:2016/02/01(月) 12:01:44.83 ID:ifA+9aJH.net
>>878
似てるな

882 :デフォルトの名無しさん:2016/02/01(月) 15:00:59.82 ID:C4njzqYk.net
否定の「ない」に「無い」の字を充てるのもなぜか流行ってる

883 :デフォルトの名無しさん:2016/02/01(月) 21:54:20.55 ID:wOVlTBG6.net
〜だは。ってのも最近多いな。あれ見ると力が抜けるw

884 :デフォルトの名無しさん:2016/02/02(火) 01:34:24.97 ID:3b8npFJM.net
ぐは

885 :デフォルトの名無しさん:2016/04/24(日) 23:15:34.01 ID:n8icIlKb.net
ついに利用者いなくなったか

886 :デフォルトの名無しさん:2016/04/26(火) 20:50:46.30 ID:lW2lbITt.net
ついに利用者いなくなったは。

887 :デフォルトの名無しさん:2016/04/28(木) 21:35:05.22 ID:x5099VmL.net
MFC の CTreeCtrl クラスにおける階層数の制限について
https://blogs.msdn.microsoft.com/japan_platform_sdkwindows_sdk_support_team_blog/2016/04/27/

888 :デフォルトの名無しさん:2016/05/01(日) 15:48:36.11 ID:tKi6j9CT.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません


889 :デフォルトの名無しさん:2016/05/06(金) 21:41:47.28 ID:OWOfsawE.net
WIN10でmfcアプリって動作するの?

890 :デフォルトの名無しさん:2016/05/06(金) 22:56:33.91 ID:Mf6m+SUy.net
動かないならデスクトップアプリ全滅だけど、それなんてWinRT

891 :デフォルトの名無しさん:2016/05/07(土) 22:44:52.60 ID:2wjJsHV7.net
スタティックリンクとダイナミックリンクだと前者の方がどの程度速いの?

892 :デフォルトの名無しさん:2016/05/08(日) 04:42:58.60 ID:jHajzlGi.net
実行速度は変わらんだろ

893 :デフォルトの名無しさん:2016/05/08(日) 11:43:38.23 ID:pwQcqOb7.net
起動時に速くなる
実行時もちょっと速いかも知れない
他アプリと共存時にswapoutされにくくなる

894 :デフォルトの名無しさん:2016/05/08(日) 13:22:31.35 ID:NDoMe0zH.net
数字で示してください

ちょっと〜なんて・・・
ソフト屋さんとは思えんな

895 :デフォルトの名無しさん:2016/05/08(日) 15:00:06.24 ID:pwQcqOb7.net
ミロク

896 :デフォルトの名無しさん:2016/05/08(日) 17:33:16.55 ID:uPD0V3Q6.net
複数のアプリが同じDLLを使ってる場合
DLLイメージはメモリ上に共通に一つしか置かれないから、こういう場合、ダイナミックリンクのほうが起動が速くなることも無くはない。
RAMが逼迫してる場合はRAMの節約になるからSwapが起きにくくて実行速度が速くなることも無くはない。
HDDが逼迫している場合もHDDの節約になるからデータアクセスが速くなることも無くはない。

でもDLLヘルを経験している俺は、以降全てスタティックリンクにしている。

897 :デフォルトの名無しさん:2016/05/08(日) 18:25:45.15 ID:5sZsNvmQ.net
自分だけで使うアプリならそれでもいいのだが、
提供物の場合は脆弱性対策が面倒でなあ。

898 :デフォルトの名無しさん:2016/05/11(水) 11:32:45.03 ID:GzlL/1jH.net
w10でmfcアプリって動作できる?

899 :デフォルトの名無しさん:2016/05/11(水) 15:37:50.32 ID:qkI+/TV/.net
いぇs

900 :デフォルトの名無しさん:2016/05/18(水) 01:14:36.88 ID:VPOKi44A.net
dllだけを出力する方法はないの?
毎度毎度なにかのプロジェクトに付けなきゃいけないのが面倒だ

901 :デフォルトの名無しさん:2016/05/18(水) 16:52:34.95 ID:u7J2zmgl.net
おまえはいったい何を言っているのだ?

902 :デフォルトの名無しさん:2016/05/18(水) 17:04:08.75 ID:oA47oPzz.net
最近は並みのエスパーじゃ対処しきれない質問者が増えてきたな

903 :デフォルトの名無しさん:2016/05/18(水) 19:34:48.61 ID:ZnFrOsj6.net
ラッパーのソースつければlibは要らんだろ

904 :デフォルトの名無しさん:2016/05/18(水) 19:35:25.98 ID:ZnFrOsj6.net
誤爆サーセン

905 :デフォルトの名無しさん:2016/05/18(水) 19:44:44.02 ID:u7J2zmgl.net
897の誤爆は良い誤爆

906 :デフォルトの名無しさん:2016/06/02(木) 22:18:02.59 ID:4UxwCTlG.net
>>902
そもそも話題すらないけど

907 :デフォルトの名無しさん:2016/06/02(木) 23:41:29.11 ID:+GpFgwT1.net
mfcを使う場合は直接createthread使っちゃいけないの?

908 :デフォルトの名無しさん:2016/06/12(日) 11:30:49.94 ID:cEY+7fOG.net
objファイルってなんですか?
何の意味があるんですか?

909 :デフォルトの名無しさん:2016/06/12(日) 12:33:18.57 ID:xN9NR8mn.net
lib化したりlinkが終わったら要らない
削除していい

910 :デフォルトの名無しさん:2016/06/12(日) 18:35:35.58 ID:fuUaUmmT.net
>>901
うん。

911 :デフォルトの名無しさん:2016/06/22(水) 21:35:05.80 ID:CWdG0wYp.net
たすけてください
タスクトレイに入るアプリケーションを作成中ですが

BEGIN_MESSAGE_MAP(CTrayWnd, CWnd)
ON_MESSAGE(WM_USER_TRAYNOTIFYICON, OnTrayNotify)
END_MESSAGE_MAP()
のON_MESSAGEで
エラー 5 error C2440: 'static_cast' : 'LRESULT (__cdecl CTrayWnd::* )(UINT,LONG)' から 'LRESULT (__cdecl CWnd::* )(WPARAM,LPARAM)' に変換できません。
となってしまいます。

32bitだとコンパイルできるのですが、64bitだと上記エラーがでます

912 :片山博文MZ ◆T6xkBnTXz7B0 :2016/06/22(水) 21:40:20.38 ID:14AwA6D3.net
>>911
CTrayWnd::OnTrayNotifyの引数をWPARAM, LPARAMに

913 :デフォルトの名無しさん:2016/06/22(水) 21:59:33.11 ID:CWdG0wYp.net
ありがとうございました。
たすかりました

914 :デフォルトの名無しさん:2016/06/22(水) 22:25:12.66 ID:14AwA6D3.net
基底クラスとはメソッドの型が合わなかったのが原因

915 :デフォルトの名無しさん:2016/06/23(木) 15:39:35.86 ID:tLxppfzL.net
エラーメッセージ嫁よw

916 :デフォルトの名無しさん:2016/06/23(木) 21:35:06.53 ID:ufnf48+Y.net
漢字のまともに書けない奴に言われてもな〜

917 :デフォルトの名無しさん:2016/07/05(火) 21:23:29.83 ID:xT1jQPVt.net
リストコントロールについて質問です。

リストコントロールの一行に画像を3か所(3列)読み込めるようにして、どんどん行を増やしていくようなやり方はどのようにやるのでしょうか

918 :デフォルトの名無しさん:2016/07/06(水) 08:40:33.92 ID:YqQEkOqo.net
画像を3列に読み込むのと行が増えるの関係がわからんし、
1カラム内に3つ読み込みたいのか1行3カラムにしたいのかもわからん。

919 :デフォルトの名無しさん:2016/07/06(水) 19:57:30.93 ID:29osc8cI.net
そういうのはオーナードローだね。DrawItemを
オーバーライドすると引数からCDCのハンドルが取れるように
なるので、それを使って好きな場所にBitBltで読み込んだ画像を
表示すればいい。

920 :デフォルトの名無しさん:2016/07/07(木) 13:15:08.62 ID:ed7Hyzoi.net
新規開発ならMFCは止めといたほうがいいと思うけどなぁ
まぁソースあるから問題はないけど

921 :デフォルトの名無しさん:2016/07/08(金) 10:24:12.89 ID:CUMeTHck.net
MFCは糞だが、それ以外のライブラリはもっとひどいからな

922 :911:2016/07/08(金) 19:35:52.68 ID:CMdG0/Nt.net
>>919
何とか実装出来ました。ありがとうございました。

923 :デフォルトの名無しさん:2016/07/14(木) 19:40:17.28 ID:y09aoPvT.net
ダイアログ内に保存機能を実装したいのですが、どのようにすればよいのでしょうか?
保存することでダイアログ内に張ったIMAGEや数値を次回もそのままの状態で使いたいです

924 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 19:47:57.04 ID:5AZo8uCy.net
>>923
ファイルかレジストリかデータベースか代替ストリームに保存。
ただし、変更が必要な設定ファイルはC:\Program Filesの中に保存してはならない。
他の適当な特殊フォルダーにアプリ専用のフォルダーを作ってそこに保存。
ファイル読み書きはfopen/fcloseかCreateFile/CloseHandleを参照。
フォルダー作成はCreateDirectoryだな。

925 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 19:52:15.22 ID:5AZo8uCy.net
特殊フォルダーの場所(pathname)は、SHGetSpecialFolderLocation/SHGetSpecialFolderPathで取得できる。

926 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 19:56:26.34 ID:5AZo8uCy.net
ファイルのコピーはCopyFileでできる。
ユーザーにファイルの場所をたずねたい場合はGetOpenFileName/GetSaveFileNameだったかな。

927 :デフォルトの名無しさん:2016/07/14(木) 20:58:49.30 ID:y09aoPvT.net
すいません、勉強したてなのでもう少しかみ砕いて詳しく教えていただきたいです。

928 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 22:16:57.94 ID:5AZo8uCy.net
MFCではファイルの読み書きはCFileクラスでできる。
CopyFileはAPI関数だから、使い方はファイルの場所を指定して呼び出して使うだけ。
ファイルを操作したい場合はファイルの場所とファイル名を表すパス名が重要。
パス名は文字列で、Winではバックスラッシュ区切りでフォルダの階層を表す。
パスは相対パス指定と絶対パス指定の二種類ある。「..」は1つ上のフォルダを表す。

929 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 22:23:12.10 ID:5AZo8uCy.net
例えばパス名「..\..\seiseki.xls」は、2つ上のフォルダにあるファイ
ル名「seiseki.xls」のファイルを指し示す相対パス指定。
パス名「C:\Folder1\seiseki.xls」は、ドライブC:のフォルダ「Folder1」の中にあるファイ
ル名「seiseki.xls」のファイルを指し示す絶対パス指定。

930 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 22:29:17.37 ID:5AZo8uCy.net
ファイルを読み書きする場合、ファイルを開く(オープン)という処理が必要だ。
ファイルをオープンするfopen関数を使うには、その前に#include <cstdio>か#include <stdio.h>が必要だ。
ファイルを開いた後、fread,fgets,fwrite,fputs,fprintfなどで、
実際に読み書きできる。
読み書きが終わったら、その印として、そのファイルを閉じないといけない(クローズ,fclose)。

931 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 22:32:36.21 ID:5AZo8uCy.net
CFileクラスとこの派生クラスを使えば、デストラクタで自動的にファイルを閉じて
くれるが、プログラマはいつ閉じられるかを意識しないといけない。

932 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 22:36:04.97 ID:5AZo8uCy.net
MFCに依存したコードは、動作環境・開発環境共にWindowsに縛られる。
最近はこれがMFCはイケてないと言われる由縁である。

933 :デフォルトの名無しさん:2016/07/14(木) 22:36:52.02 ID:y09aoPvT.net
serializeを使ってはできないんですか?

934 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 22:45:12.07 ID:5AZo8uCy.net
http://www.geocities.co.jp/SiliconValley-PaloAlto/5989/mfc02.html

シリアはデータの読み書きとファイルの読み書きを抽象化したもんだから、
プログラムが終わっても消えないようにするには、主メモリー以外に保存する。

935 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 23:00:28.06 ID:5AZo8uCy.net
最近は設定をウェブに保存するアプリもあるが。

936 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 23:06:00.62 ID:5AZo8uCy.net
C/C++では、文字列リテラル内のバックスラッシュ(\)はエスケープされるので、2重にしないといけない。

937 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 23:13:50.01 ID:5AZo8uCy.net
1.まず、保存したいファイルをユーザーに選ばせる。これはコモンダイアログでできる。
ファイルのパス名が入力される。
2.保存先のフォルダを作成する。適当な名前で特殊フォルダの下に作ればいい。
3.保存先のファイルのパス名を文字列処理で組み立て、ファイルをコピーする。
4.プログラムを起動したときに保存した設定ファイルを読み込むようにする。

938 :片山博文MZ ◆T6xkBnTXz7B0 :2016/07/14(木) 23:17:23.64 ID:5AZo8uCy.net
MFCで文字列を組み立てたい場合はたいていCStringクラスを使うとよい。
文字列にはワイド文字列(Unicode)とANSI文字列の二種類あるから、文字列の型に注意が必要だ。

939 :部外者:2016/07/14(木) 23:27:12.95 ID:YfxEmYO8.net
無愛想と思っていた片山氏のことが少し好きになったよw
Cの標準関数、CFile、Serializeを考えると行数はともかく
難易度はあまり変わらないと思う。
がんばれ>>297

940 :部外者:2016/07/14(木) 23:30:23.96 ID:YfxEmYO8.net
>>297×
>>933
...

941 :デフォルトの名無しさん:2016/07/14(木) 23:31:24.25 ID:y09aoPvT.net
詳しくありがとうございます。

いったん、片山さんのやり方で挑戦してみます!

942 :デフォルトの名無しさん:2016/07/16(土) 23:28:06.32 ID:MXamywZj.net
片山総務大臣

943 :デフォルトの名無しさん:2016/07/18(月) 00:01:59.39 ID:ppXY6tEx.net
Mitsubishi
Financial
Corporation

944 :デフォルトの名無しさん:2016/07/24(日) 17:10:16.44 ID:4lcO97lF.net
Madison Futbol Club

945 :デフォルトの名無しさん:2016/07/26(火) 00:17:47.71 ID:A1ev9bLq.net
Michael Schenker Group

946 :デフォルトの名無しさん:2016/08/01(月) 21:29:14.75 ID:OPj4eZ8K.net
完全に行き詰りました…
リストコントロールのアイテムに画像を表示したいのですが、
リストコントロールの画像のオーナードローが分かりません
教えてください。

947 :片山博文MZ ◆T6xkBnTXz7B0 :2016/08/01(月) 21:39:19.26 ID:ltowomRu.net
>>946
オーナードローの「オーナー」の意味はわかるか?
そう、所有者。コントロールの所有者は親ウィンドウだから、
親ウィンドウでメッセージを受け取ってメッセージが来たときに描画処理を行う。
構造体ポインターの扱いがわからないなら、C/C++を復習せよ。

948 :片山博文MZ ◆T6xkBnTXz7B0 :2016/08/01(月) 21:44:08.61 ID:ltowomRu.net
画像を描画したいなら、画像データからHBITMAPを作成して、
BitBltかStretchBltでイメージのビット列を転送する。

949 :片山博文MZ ◆T6xkBnTXz7B0 :2016/08/01(月) 21:58:03.25 ID:ltowomRu.net
いきなり高層ビルは建てられないだろ。
例えば、画像を読み込むテスト、オーナードローのテスト、設定ファイル読み込むテスト
などを行って動作を実証した後で、部品を組み立てるように構築していけばいい。

950 :デフォルトの名無しさん:2016/08/01(月) 23:03:08.52 ID:d7o8x0b8.net
オーナードローって
「オーナーがドローする」
「オーナーをドローする」
どちらですか?

951 :デフォルトの名無しさん:2016/08/01(月) 23:25:15.88 ID:OPj4eZ8K.net
スタティックテキストでの画像描画ができました。

ファイル選択から画像描画もやっています。
それをふまえて、スタティックテキストでCIMAGEで描画した画像を、
ボタンを押したときにListCtrlで描画しようとしています。

今、drawItem関数を呼び出して、やろうとしているところです。

952 :デフォルトの名無しさん:2016/08/01(月) 23:57:56.24 ID:tvvL85eB.net
>>950
「オーナーがドローする」

953 :デフォルトの名無しさん:2016/08/02(火) 00:06:45.24 ID:V+yjlCg8.net
>>952
ダイアログボックス上のEDITを配置した場合は
EDITをダイアログがドローする?

954 :デフォルトの名無しさん:2016/08/02(火) 03:09:50.82 ID:ciWWRR2r.net
横からなんだが
普通はEDITコントロールが子ウィンドウで
ダイアログがowner

955 :デフォルトの名無しさん:2016/08/02(火) 10:38:04.20 ID:V+yjlCg8.net
だったら、
「オーナーがドローする」 が真であれば
ダイアログがEDITをドローするも真だろ

956 :デフォルトの名無しさん:2016/08/02(火) 20:10:15.23 ID:o5ucF+Pt.net
MFCってwin10でも動くの?

957 :デフォルトの名無しさん:2016/08/02(火) 20:18:48.20 ID:NfCSYQH6.net
>>956
当然動くよ

958 :デフォルトの名無しさん:2016/08/03(水) 09:05:43.22 ID:h9b7IxGI.net
TabCtrlってぱっとみどのページが選択されているから分かりづらいので
選択されているページのテキストを赤にしたいんですが、可能でしょうか?

959 :デフォルトの名無しさん:2016/08/03(水) 13:13:44.47 ID:wwEzWMbW.net
つ赤ペン

960 :デフォルトの名無しさん:2016/08/04(木) 20:29:40.98 ID:S+iLZ+A1.net
オーナーニドロッと

961 :デフォルトの名無しさん:2016/08/04(木) 23:26:49.05 ID:BXYQ/W1V.net
リストビューに画像表示ができない、、、

962 :デフォルトの名無しさん:2016/08/04(木) 23:32:19.94 ID:dOYZV9nx.net
オーナードローしろと

963 :片山博文MZ ◆T6xkBnTXz7B0 :2016/08/04(木) 23:48:24.32 ID:2BP9Z8UH.net
>>961
リストコントロールじゃなくてリストビューなら、
イメージリスト使え

964 :デフォルトの名無しさん:2016/08/06(土) 09:35:24.46 ID:WOhXoq0V.net
CEditに文字を垂れ流ししているままで
スクロールバーで画面を動かしたいのですが、
思いつきませんヒントをお願いします。

※VSの出力画面の酔うな感じのものです。

965 :デフォルトの名無しさん:2016/08/06(土) 17:18:26.76 ID:DnsuALea.net
セットスクロールポス

966 :デフォルトの名無しさん:2016/08/09(火) 14:16:31.32 ID:AX7BFtgJ.net
>>964
m_edit.SetSel(m_edit.GetWindowTextLength(), m_edit.GetWindowTextLength());
とか
m_edit.LineScroll(m_edit.GetLineCount());
とか

967 :デフォルトの名無しさん:2016/08/09(火) 20:33:25.57 ID:FqlEy475.net
えーっ!わざわざテキストの長さ取得するの?
いつも適当に大きい数字入れているけど。
65535とか。どうせ適当に切り詰めてくれるし。
と思ってたけど。

968 :デフォルトの名無しさん:2016/08/15(月) 15:59:26.09 ID:zUpmpqFQ.net
こーいうやつがメモリーリークしたプログラムを作ってるんだろうなぁ

969 :sage:2016/08/15(月) 17:53:43.27 ID:k/s3aTsI.net
>>968
人を非難する前にマニュアル読んだ方が良いよ
恥かくだけ

970 :デフォルトの名無しさん:2016/08/15(月) 18:44:48.73 ID:NvOrOVSG.net
>>968みたいな奴が無駄なコードを書いているんだろうなぁ

971 :デフォルトの名無しさん:2016/08/20(土) 19:07:01.78 ID:+Q8TTU1T.net
>>968
メモリリークなんてしたからってなんら問題ないだろう。
下手に必要なメモリを開放するより全然いい

972 :デフォルトの名無しさん:2016/08/20(土) 21:11:00.91 ID:Ay6TwcxW.net
メモリリークはまぁ良いとしても
他のリソースリークは嫌だなぁ
VRAMとか少ない環境もあるし
ファイルハンドルのcloseし忘れとかも嫌だなぁ
スレッドの開放忘れもなんかいやだなぁ

973 :デフォルトの名無しさん:2016/08/21(日) 11:27:24.58 ID:72zLWHSO.net
win10は再起動しまくるから問題ないらしい

974 :デフォルトの名無しさん:2016/08/22(月) 00:11:02.56 ID:6UmJWuv1.net
メモリーやハンドルのリークは恥ずかしいことだと思う
自分もやらかしたことがありましたが、その際は深く反省しました

このスレの質もここまで下がってしまったかと思うと極めて残念です

975 :デフォルトの名無しさん:2016/08/22(月) 19:01:28.22 ID:01M+MFvA.net
ChromeとかFirefoxはリークだらけだよ

976 :デフォルトの名無しさん:2016/08/23(火) 14:31:18.59 ID:KLVn3SD4.net
マルチプロセスはリークしてもいいかな
シングルプロセスはダメ

977 :デフォルトの名無しさん:2016/08/23(火) 21:15:54.73 ID:PDPzOw0b.net
リークして何か不具合ってあるか?
まぁ、数百メガ単位でリークなら、そのうち食いつぶすから問題だが、4kb程度なら24時間動くアプリ以外は実害ないだろ

978 :デフォルトの名無しさん:2016/08/24(水) 00:32:32.36 ID:oKQRYsXz.net
CTreeCtrlでチェックボックスつきにしています。
Root
  a
  b

でbが選択されている状態でaのチェックを入り切りすると
aが一瞬選択され、すぐさまbが選択されるのですが

チェックボックスを操作したのだから、選択が変更されないで欲しいのですが可能ですか?

979 :デフォルトの名無しさん:2016/08/24(水) 09:23:20.67 ID:XTcS/V88.net
>>978
TVS_DISABLEDRAGDROP

980 :デフォルトの名無しさん:2016/08/25(木) 02:05:13.23 ID:bqd04CsU.net
>>979
ありがとうございます。
期待通りの動作ができました

981 :デフォルトの名無しさん:2016/08/28(日) 12:17:57.59 ID:/siEK0YN.net
ダイアログのエディットテキストで
エディットテキストにフォーカス → かなキー押下 → aキー押下
の操作をするとクラッシュします
特別な処理はしてません
アドバイスをお願いします

982 :デフォルトの名無しさん:2016/08/28(日) 13:23:37.49 ID:ZU3e5ILB.net
nullpo

983 :デフォルトの名無しさん:2016/08/28(日) 17:01:30.94 ID:Md2U2uuj.net
デバッガ無しで同じことやっても落ちる?

984 :デフォルトの名無しさん:2016/08/28(日) 19:34:59.24 ID:/siEK0YN.net
>>983
リリースビルドでも同じです

985 :デフォルトの名無しさん:2016/08/28(日) 19:51:00.35 ID:Md2U2uuj.net
リリースビルドとかじゃないです
デバッガ無しでも落ちますか?

986 :デフォルトの名無しさん:2016/08/28(日) 19:54:41.07 ID:JaePzQQo.net
978は977に答えていない
呼び出し履歴の最後は何になってる?

987 :デフォルトの名無しさん:2016/08/29(月) 11:32:25.01 ID:OcJqV5W/.net
クラッシュとは?アクセス違反
かなじゃなければ問題ないのか?
デバッガ上での実行とexe単体での実行で差は無いのか?
エディットコントロールとCEdit変数の関連付けに齟齬は無いのか?

988 :デフォルトの名無しさん:2016/08/29(月) 12:04:36.03 ID:4uCHwe5E.net
>>981
なんか変なキーボード監視ソフトでも動いてないか?

989 :デフォルトの名無しさん:2016/08/30(火) 10:25:58.16 ID:fl1Hexbb.net
百度…

990 :デフォルトの名無しさん:2016/09/02(金) 17:31:02.34 ID:YMtSPF3Z.net
MFCのリボンを使い始めたんですけど、たとえばWORDのホームカテゴリの
クリップボードパネルの右下にある小さい四角いボックスを使用するには
どこを設定したらいいのでしょうか。
リボンデザイナーでパネルを配置したんですけど、パネルにプロパティを
見てもそれっぽい設定が見当たりません。

991 :デフォルトの名無しさん:2016/09/02(金) 18:21:56.59 ID:xP9QKPl2.net
項目を追加

992 :デフォルトの名無しさん:2016/09/17(土) 18:51:46.28 ID:mAPcRNL4.net
MFCのリボンて古臭いよな
Office2007相当だもん

993 :デフォルトの名無しさん:2016/09/17(土) 21:32:42.02 ID:8kjLtBRe.net
>>976>>977
すぐ終了する単発CUIコマンドレベルならそいでいいけど
GUIアプリならメモ帳みたいなやつでも24時間動かす想定するべき

994 :デフォルトの名無しさん:2016/09/20(火) 01:02:08.91 ID:FCLwXIrD.net
メモ帳程度なら操作などの履歴を記憶してプロセス再起動でいいだろ

995 :デフォルトの名無しさん:2016/09/20(火) 01:59:39.82 ID:TnmUP/4n.net
いまもうわけわからん
ちゃんと開放すればよいだけだろ
頑なに開放しない意味が分からん
起動しっぱなしになる可能性があるんだったら開放するように努めろ

996 :デフォルトの名無しさん:2016/09/20(火) 21:04:05.49 ID:pjY1ly59.net
MFCのリストボックスって列は1列までですか?

997 :デフォルトの名無しさん:2016/09/20(火) 22:24:52.97 ID:9oYup838.net
はい。

998 :デフォルトの名無しさん:2016/09/20(火) 23:46:59.91 ID:pjY1ly59.net
リストボックスに画像を貼りたいときはsetItemData
でできますか?

999 :デフォルトの名無しさん:2016/09/21(水) 00:03:02.12 ID:w6mjKqw1.net
次スレおね

1000 :デフォルトの名無しさん:2016/09/21(水) 00:21:14.97 ID:OfO+mYkd.net
たてますた

MFC相談室 mfc23d.dll [無断転載禁止](c)2ch.net
http://echo.2ch.net/test/read.cgi/tech/1474384848/

1001 :デフォルトの名無しさん:2016/09/23(金) 19:27:25.65 ID:fS8XJogp.net
埋め

1002 :デフォルトの名無しさん:2016/09/23(金) 20:19:24.58 ID:1AYxo37g.net
埋め

1003 :デフォルトの名無しさん:2016/09/24(土) 03:15:54.69 ID:QHywX3YJ.net
うめ

1004 :デフォルトの名無しさん:2016/09/24(土) 03:16:49.10 ID:QHywX3YJ.net
ume

1005 :デフォルトの名無しさん:2016/09/24(土) 03:18:14.80 ID:QHywX3YJ.net
ume

1006 :デフォルトの名無しさん:2016/09/24(土) 03:18:30.49 ID:QHywX3YJ.net
あほ

総レス数 1006
254 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★