■ このスレッドは過去ログ倉庫に格納されています
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の半角文字「 」が使われていて、
ワイド文字からマルチバイト文字に変換するときに、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
- g
- 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万つまれても売れない
w
- 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 ★