■MFC相談室 mfc19d.dll■

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2008/12/23(火) 23:02:53
もっというと>>900は自分の状況を何も表現できてなかったってことだなw
953デフォルトの名無しさん:2008/12/23(火) 23:18:23
いや思い出しました。
pm_CSB->Create(
直した時もCObjectのPrivateメンバにアクセスできません。でなにもエラー内容変わらなかったんです
954デフォルトの名無しさん:2008/12/23(火) 23:32:38
じゃあ、これが↓嘘で

CCopyStaticButton* pm_CSB;

CCopyStaticButton pm_CSB;

ってなってたってことぐらいしか考えられないな
955デフォルトの名無しさん:2008/12/23(火) 23:53:18
>>951
>出来ればnewど素人に開放の場所のアドバイスをくださいお願いします。
仕様による
最後でいいならボタン貼ってるウィンドウのデストラクタでもおk
Create();したからDestroyWindow();を忘れずに・・・
956デフォルトの名無しさん:2008/12/23(火) 23:54:05
あれ?コントロールはいらないっけ?DestroyWindow();
957デフォルトの名無しさん:2008/12/23(火) 23:56:28
vectorに実体をpush_backしようとした時点で
コピーコンストラクタとかでおかしくなりそうだけど
958デフォルトの名無しさん:2008/12/24(水) 00:18:32
>>956
いらんよ。親が破棄する。


しかしまあ、>>946 も雑なコーディングだな。
>int boxNum;
int boxNum = 0; // 初期化しないでインクリメントするな。これだと warning C4700 がでてるはずなんだがな。

>str.Format(_T("%d"),boxNum);
>(*(vCopyBox.end()-1))->Create((_T("CopyBox")/*+str*/, WS_CHILD

str.Format( _T("CopyBox %s"), boxNum); // こうすりゃ一度で終わるだろ。
(*(vCopyBox.end()-1))->Create( str, WS_CHILD
959デフォルトの名無しさん:2008/12/24(水) 00:20:01
いけね。
str.Format( _T("CopyBox %s"), boxNum); → str.Format( _T("CopyBox %d"), boxNum);
960デフォルトの名無しさん:2008/12/24(水) 03:38:02
ソフトでデータを編集するとファイル名に*がついて、終了するときに勝手に保存するか問い合わせてくる、
アレってどうやるんすか?
961デフォルトの名無しさん:2008/12/24(水) 03:58:04
>>960
どうやるもこうやるも、ファイル名の脇に'*'を出力するのと確認ダイアログを出すだけなんだが。
まさか、コードが天から降ってくると思っているわけじゃないだろ?
962デフォルトの名無しさん:2008/12/24(水) 06:42:57
Docクラスあたりにmodifyなんちゃらっていうフラグが立つから、それが立ってる場合にフレームタイトル描画する関数で*追加するだけだな
やったことあるわ
963デフォルトの名無しさん:2008/12/24(水) 10:59:03
他のアプリケーションを起動させるのは出来るんですが
そのアプリケーションをダイアログみたいにウインドウに張り付けて起動させることはできないんでしょうか?
964デフォルトの名無しさん:2008/12/24(水) 12:43:13
できる
965デフォルトの名無しさん:2008/12/24(水) 13:46:56
まじですか。完璧じゃないですかそれ
966デフォルトの名無しさん:2008/12/24(水) 15:47:44
で、やり方は?
967デフォルトの名無しさん:2008/12/24(水) 16:10:23
起動される側のアプリが対応して無いと無理だろ。
無理やりやればできなくは無いだろうが、まともに動くとは思えない。
968デフォルトの名無しさん:2008/12/24(水) 16:28:06
CreateProcessで起動して
インスタンスとってそのインスタンスのメインウィンドウを
取得してやれば何とかできるかもしれないけど
全部が対応できるわけねえよ

>>964
てきとうに「できる」とか言うなボケ
969デフォルトの名無しさん:2008/12/24(水) 20:37:54
できるかできないか、だけなら「できる」でいいだろ。
そこまでする必要が普通はないだけで。
# 少なくともリモートデスクトップにはできるのだから。
970デフォルトの名無しさん:2008/12/24(水) 22:40:57
うれしくて.NET勉強してたんですが、難しいんですか?
移行してみようかな的な、.NETのアプリを作って組み込んで切り替えて使えるようにしようかと思ったんですが。
最悪WebBrawserコントロール貼り付けてSilverlightでUI全部すませたら面白いかなーと
今後、MFCのドッキングウィンドウは絶対はずしたくない機能なんで、どうすればいいとこどりできるかを考えてたんです。
CreateProcessで他のウィンドウを操作するところから始めてみます。ありがとうです。
971デフォルトの名無しさん:2008/12/24(水) 22:51:23
.NETってUI作るの簡単なんていうけど実際にお金を貰うアプリを作る場合はほとんどの
標準コントロールはつかえないから自前で用意することになるから
MFCとなんらかわりない
972デフォルトの名無しさん:2008/12/24(水) 23:01:39
WPFの広告とかみてたら簡単にUI作れるみたいな印象を受けたんですが、甘いですか?
自由度なくて調整するのにMFC以上に時間かかるなら意味ないですけどそんな予感はたしかにしますw
973デフォルトの名無しさん:2008/12/24(水) 23:22:18
ツリーコントロールのドラッグアンドドロップとか
リストコントロールの着色とか
ダイアログにダイアログを貼り付けたときのフォーカスの移動とか
リストコントロールのセルチェンジ時のコントロールの切替とか
ふつーにやらなきゃならんけどMFCだとかなり困難な部分って楽になってないの?
974デフォルトの名無しさん:2008/12/25(木) 00:02:30
>>972
WPFは自由度高い。
リストコントロールの各項目に別のコントロール入れたり
ボタンの中にボタン入れられたり(意味無いけど)
それらを任意の拡大率・角度に調整できたり。
975デフォルトの名無しさん:2008/12/25(木) 09:28:32
MFCとWPF比べるとか、月とすっぽんもいいところ。
WPFやったらもう、MFC使ってるやつはマゾとしか思えなくなるレベル。
まあ、C++使わざるを得ないとMFCしか選択肢なくなるんだが・・・
976デフォルトの名無しさん:2008/12/25(木) 10:14:00
>>974
それってほとんど実用性ないじゃん。(w

>>973 が指摘している件は、具体的にWPFでカイゼンされているの?

> C++使わざるを得ないとMFCしか選択肢なくなるんだが・・・

MFCは文字通りマイクロソフト謹製のクラスライブラリでしかない
んだが? 対してC++は汎用言語なんで、MFCを一切使わず、自前の
クラスライブラリを作ってもいいんだよ。

もっとも、それができればの話だが、MFCさえ使いこなせないヤツに、
ムリな注文だよなぁ。
977デフォルトの名無しさん:2008/12/25(木) 17:02:33
>>971
>ほとんどの
>標準コントロールはつかえないから
何を言っているんだ君は。

>C++使わざるを得ないとMFCしか選択肢なくなるんだが・・・
C++/CLI はあかんの?俺使ったことないけど。
978デフォルトの名無しさん:2008/12/25(木) 18:54:16
C++で.NET使うならC++/CLIだな
C++0xスレだと、C++0xで標準化しようとしている記法を馬鹿にするほどC++/CLIの記法は評判良かったりする
そこは俺も同感だが、正直.NETとC++の相性なのか結構使いにくい印象
C++の長所も捨ててるしな
979デフォルトの名無しさん:2008/12/25(木) 19:19:30
C++/CLI使ってみた俺がちょっとだけ書く

[長所]
・GUIが細かい設定ができる
・GC

[短所]
・文字列変換がめんどくさい
C++/CLIオンリーならいいけど、
WindowsAPIとか、自分のC/C++なライブラリ使うんだったらこれ必要

他にも色々あるけど
結構C/C++の楽な部分ができなくなるお。

MFCは、GUIのタブ系と画面サイズ変更時の子コントロール変更がめんどくさいけど、
それ管理周りを自作したら、あと10年は戦える。

という結果になった。
俺は。
980デフォルトの名無しさん:2008/12/25(木) 19:20:11
ついでに言うなら、.NETするならC#がもっと楽
981デフォルトの名無しさん:2008/12/25(木) 19:51:24
数値入力専用のエディットコントロールを置いたのですが、その入力できる数値を制限したいのです。
どのようにすればいいでしょうか?
982デフォルトの名無しさん:2008/12/25(木) 20:11:29
CEditとCSpinButtonを合体させたらレンジ指定出来なかったっけ?

C++0xの記述が長ったらしいのは柵のせいなんだろうな・・・
拡張性はあるだろうけど、正直勘弁
983デフォルトの名無しさん:2008/12/25(木) 20:26:25
>>981
どう制限したいの?
−や少数点が無しならエディットのコントロールに番号ってのがあるからそれにチェックをいれれば
数字以外入力できない
あとはキルフォーカスの瞬間にエラーメッセージを出すとか
OKボタンを押した瞬間にチェックが走ってエラーメッセージが表示されるとか
そもそも入力させないってのもあるけどこれは使う側が面倒だな

どの瞬間にどう制限したいのか?ってところでもやり方変わるけど・・・
984デフォルトの名無しさん:2008/12/25(木) 20:49:50
>>983
そもそも入力させないようにしたいのです。
出来たら制限範囲よりも大きい数字が入力されたら、補正して範囲内の最大値にするといった風にしたいのです。
985デフォルトの名無しさん:2008/12/25(木) 20:53:03
>>984
だからどのタイミングで?
キルフォーカス?
アップデート?
986デフォルトの名無しさん:2008/12/25(木) 21:00:38
キルフォーカスでお願いします。
987デフォルトの名無しさん:2008/12/25(木) 21:05:25
じゃ、やれよ!
988デフォルトの名無しさん:2008/12/25(木) 21:05:38
すいません
色々と試行錯誤したところ上手くいきそうです。
くだらない質問に答えて頂いてありがとうございました。
989デフォルトの名無しさん:2008/12/25(木) 21:09:23
>>988
嘘だな
SetLimitTextとか他の制限は頭に入ってなさそう
990デフォルトの名無しさん:2008/12/25(木) 22:22:25
流れにワロタw
ていうかWinのマウスキャプチャーの仕様考えたの誰だよ
この辺でいつも悩んでしまう
991デフォルトの名無しさん:2008/12/26(金) 00:01:11
>>984,988
CDialog::::OnChangeFileName のハンドラをEditコントロールの親ウィンドウに
追加して、そこで入力された数値を監視すればいい。
で、範囲外の数値が入力されたら CEdit::SetWindowText() を使って書き直す。
ただそれだけだ。難しく考えるな。
992991:2008/12/26(金) 00:04:52
ちょいミス。CDialog::::OnChangeFileName()はウチで使ってる関数プロトタイプだった。
要はこれね。ON_EN_CHANGE( <id>, <memberFxn> )  afx_msg void memberFxn( );
993デフォルトの名無しさん:2008/12/26(金) 00:44:35
次スレたてた。■MFC相談室 mfc20d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1230219816/
994デフォルトの名無しさん:2008/12/26(金) 02:21:10
CRect rect;

rect.Width();

こう書いた方がいい?
それとも極力

rect.right;

の方がいいと思う?
995デフォルトの名無しさん:2008/12/26(金) 02:22:18
>>994
同じもんか?それ?
996デフォルトの名無しさん:2008/12/26(金) 02:35:14
どっちでも内容が同じでどっちでも書ける場合なんですけど
GetClientRect(&rect)の時とかで、
Width()は関数なので.rightの方がいいのではと考えながらやってたらごっちゃ混ぜで統一できてなくてひどくなってきました。
いいかげんどっちがいいのか決着をつけたいです!
997デフォルトの名無しさん:2008/12/26(金) 03:50:53
>>996
rect.right と rect.Width() の値は違うぞ。
GetWindowRect( rect)してみ。
998デフォルトの名無しさん:2008/12/26(金) 03:55:16
int CRect::Width() { return rect.right - rect.left; }
関数といってもやってることはこれだけだから、rect.Width() を使うクセをつけておいたほうが、
>>997のような時にバグらなくていい。
999デフォルトの名無しさん:2008/12/26(金) 05:08:19
関数の中身見れたんですね。
引き算しかしてないということで、.rightに統一しようと思います。
もっと複雑なことをしていて、.rightで大丈夫なのかと不安だったんです
GetWindow、toScreenを全てGetClientに統一したので大丈夫です。ありがとうざいました。
1000デフォルトの名無しさん:2008/12/26(金) 07:48:33
意味不明なほど余裕の1000

(・∀・)ヨユーヨユー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。