トップページ⇒tech
1001コメント291KB

■MFC相談室 mfc11.dll■

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/

関連リンクは >>2-10 の辺り。
0409デフォルトの名無しさんNGNG
>>408
うぉー!ありがとう。解決しました。
0410デフォルトの名無しさんNGNG
最近やっとMDIの勉強始めたばっかで初心者的質問なのだが、、

今MDIの画像ビューア作ってるけど画像を選択して子ウィンドウが表示されたときに
クライアントの大きさを画像サイズといっしょにしたい。
で自分なりに調べたが
CMyDocument::OnNewDocument
↓
CMyView::OnInitialUpdate
↓
CChildFrame::ActivateFrame
画像データはOnNewDocumentで取得。
最後のフレームのところでSetWindowPlacementか使ってフレームの大きさを
決めたいわけだ。

で、、どうやったらフレームからドキュメントみえるんだ? ビューにも画像データのポインタ
渡してるからビューでもいいけど、、。

誰か助けて_| ̄|○
0411410NGNG
間違えた、、、
×CMyDocument::OnNewDocument
↓
○CMyDocument::OnOpenDocument
0412410NGNG
連書きすまん、、自己解決
CFrameWnd::GetActiveDocumentなるまんまの関数があった、、、。
もっとヘルプみます_| ̄|○
0413デフォルトの名無しさんNGNG
ヘルプを見ないで質問しちゃう奴は
C++を理解してないも同然
0414デフォルトの名無しさんNGNG
また出たよ。自称上級者が・・・ (;´Д`)
0415デフォルトの名無しさんNGNG
解答できない質問されるのがよほど悔しいのかね
0416デフォルトの名無しさんNGNG
じしょう 【自称】

(名)
(1)実体はどうあれ、自らこうだと称すこと。
0417デフォルトの名無しさんNGNG
>>416
まさに、ピッタシデナイノ
0418デフォルトの名無しさんNGNG
で、誰か自称したのか?
0419デフォルトの名無しさんNGNG
>>418
明言しなくても、言外に表れている。
それくらい解れよ。
0420デフォルトの名無しさんNGNG
>>419
自称知ったか君
0421デフォルトの名無しさんNGNG
荒らそうと必死だな
0422デフォルトの名無しさんNGNG
.aviをフォームの背景として再生するために
 CAnimateCtrl m_animate;
 //...
 m_animate.SetWindowPos(HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
 m_ctrl.BringWindowToTop();
という風にCAnimateCtrlのオブジェクトを一番下に、その他のコントロールを上の方に
持っていこうとしてるんだけど、直ぐにアニメーションが最前面になってしまいます。

何かうまい解決策はないもんでしょうか?
0423デフォルトの名無しさんNGNG
>>419
だからそれ、自分が上級者だと勘違いしているだけなんだから自称って言わないってば。
0424731NGNG
(Win32スレに誤爆したのでこちらに書き込みます。)
MFCフレームワークで、CWinApp, CMainFrm, CChildView という派生クラスを使う事を強要されますけど、どこにどういう機能を置けばいいのかいまいちピントきません。
リアルタイムでレンダリングするスクリーン、キー入力、パラメータ入力用のダイアログがあるので,
CWinApp -> OnIdle() レンダラーアップデート, CChildViewへの描画。
CChildView -> OnKeyUp(), OnMouseMove()等
CDialog -> CMainFrm::hoge->SendMessage(...) で入力パラメータを送る。
CMainFrm -> SendMessage(...)でクラス間のデータ受け渡し。
っていう感じでやっているんですが、クラスが保持している別クラスインスタンスへのポインタがprotectedになっていたりするので、SendMessage()のバケツリレーみたいになったりして、2度手間3度手間が多くて疲れます。
「プロはこうやる」っていうのがあったら教えてください。
0425デフォルトの名無しさんNGNG
>>424
CDocumentが出てきてないようだが、使ってないの?
0426デフォルトの名無しさんNGNG
>>424
プロはめんどくさいのでウィザードの吐いたコードいじって使います
0427デフォルトの名無しさんNGNG
プロはめんどくさいのでそもそもMFCを使いません
0428デフォルトの名無しさんNGNG
プロはSDKだけでプログラミングするなんて
非効率なことはしません。特別な事情がない限り。
0429デフォルトの名無しさんNGNG
ネタにマジレスすんな
0430本田NGNG
>「プロはこうやる」っていうのがあったら教えてください。

図書館で、
「MFCによるWindows95プログラミング」か「MFCによるWindowsプログラミング」
を借りて読んでください。
0431デフォルトの名無しさんNGNG
SDKだけでも、
こういうのを使えば素早く開発できます。


APPのコードをライブラリ化。
長文ソース簡略化で作業時間、効率を削減。

基本的なWin32システムを支援します。

最強のACライブラリー
ttp://www.geocities.jp/osoftjp
0432デフォルトの名無しさんNGNG
ネタなので放置な。
0433デフォルトの名無しさんNGNG
こういうことをMSがやったものがMFC
0434デフォルトの名無しさんNGNG
>>433
こういうこと、って?
0435デフォルトの名無しさんNGNG
MFCでお勧めの本ってある?
0436デフォルトの名無しさんNGNG
>>435
ttp://www.amazon.co.jp/exec/obidos/ASIN/1874416478
0437デフォルトの名無しさんNGNG
効率って削減したらダメじゃないか?
0438デフォルトの名無しさんNGNG
using namespace std; ・・・(1)

なんてことをすると、MFCのテンプレートのCArrayなどを使うときに問題がでますが、
using namespace std; する前の状態に戻すときは std の部分になんと書けばいいですか?
0439デフォルトの名無しさんNGNG
CTabCtrlについて教えてください。

VisualStudioにあるような平らなタブを作成したくて、CTabCtrlを継承してクラスを作成
SubClass化してDrawItemをオーバライドしたのですが、
DrawItem内では、TabCtrlの枠の描画はOS?依存らしく自前で描画が出来きないようです。

このようなタブをMFCを利用して作りたいときはどの様にすれば、よろしいのでしょうか?
ご教授いただきたく思います。

0440デフォルトの名無しさんNGNG
>>439
codeguruやcodeprojectに行けばあったと思う。
探してみて。
0441デフォルトの名無しさんNGNG
>>440
codeprojectにありました。
会員登録? して試してみたいとおもいます。
どうもありがとうございました。
0442デフォルトの名無しさんNGNG
>>436
この本初めてみたけどいいの?
USサイトではいいみたいだけど。。。
0443デフォルトの名無しさんNGNG
MFCはもうだめぽ
0444デフォルトの名無しさんNGNG
質問です
MFCを使用して、MSCommで通信を行っているのですがどうにも
解決できない問題に遭遇しました
当初Windows2000を使用していたのですが、WindowsXPに
もってきて動かすと受信がうまく出来ません。
受信部にイベントOnCommを使用しているのですが、2000だと問題なく受け
とれる受信イベントがXPでは受け取れません
RThreshなどはソフトで設定していて、値も正常に入っています
ポートオープンで失敗していることもありません
どなたか、同様の現象がでて、対応された方いらっしゃいますか?
開発環境は VC6+SP6です
0445デフォルトの名無しさんNGNG
日本人の書籍とアメリカ人の書籍を読み比べた結果、導き出された結論。

Windowsプログラミングを知り尽くしているのがアメリカ人。
Windowsプログラミングを知ったかしているのが日本人。

マイクロソフトの仕様変更を先読みしたプログラムを書くのがアメリカ人。
マイクロソフトが仕様変更したときに「仕様変えんな ゲイツ氏ね!」と泣くのが日本人。

MFCの不具合に文句を言い、不具合を修正して使うのがアメリカ人。
MFCの不具合に文句を言うだけで何も出来ないのが日本人。

MFCを一から教える書籍を売るのがアメリカ人。
Appウィザードで作成したテンプレートにコントロールを追加するだけの子供騙し書籍を売るのが日本人。

オリジナリティに溢れたMFCの書籍を売るのがアメリカ人。
他人からパクったネタを適当に並べただけの書籍を売るのが日本人。


やっぱ 日本人の書籍だけでは不十分。
どれもこれも同じようなものばっかりなんだもん(藁
0446デフォルトの名無しさんNGNG
↑みたいなこと必死に書くから日本人は馬鹿にされるんだな
0447デフォルトの名無しさんNGNG
>>445
著者の一人だが褒められて嬉しい
0448デフォルトの名無しさんNGNG
>>445
> MFCを一から教える書籍を売るのがアメリカ人。
> Appウィザードで作成したテンプレートにコントロールを追加するだけの子供騙し書籍を売るのが日本人。

入門用としてはやったことがすぐカタチになる後者の方がおすすめ
0449デフォルトの名無しさんNGNG
>>448
神頼み的な思想を植えつけない細心の注意が必要
0450デフォルトの名無しさんNGNG
CFrameWnd すら使うかどうか
習得パス設計との緊密なマッチングで決めること
TABオーダーでバグられた位でグラつく知識はダメ
0451デフォルトの名無しさんNGNG
MFCはダメなライブラリの見本
0452デフォルトの名無しさんNGNG
>MFCの不具合に文句を言い、不具合を修正して使うのがアメリカ人。

文句言うより他あたるのがアメ公
0453デフォルトの名無しさんNGNG
>>444
素直にAPIでやって下さい。
0454デフォルトの名無しさんNGNG
アメリカ人はコレ使うと決めたら他の選択肢捨てるよね
0455デフォルトの名無しさんNGNG
俺アメリカ人だけど、MFC自体捨てたよ
今はBCBで、バリバリ快調っす
0456デフォルトの名無しさんNGNG
面接で渋られたときのゴネ方が内容的にまるで違う
0457デフォルトの名無しさんNGNG
>>456
どんなの?
0458デフォルトの名無しさんNGNG
日本人:イオナズン
アメリカ人:ダディクール
0459デフォルトの名無しさんNGNG
>>445
アメリカ人向けの糞本は翻訳されないだけだろ
そんなのに著作料と翻訳料払うぐらいなら日本人に直接書かせる罠
0460デフォルトの名無しさんNGNG
原書読めば笑えるのも呆れかえるのも、いっぱいある。
0461デフォルトの名無しさんNGNG
VC.NET2003(MFC)の質問です。
ダイアログを作る時にエディットボックスなどと関連付けするメンバ変数を作ろうとしているのですが、
うちの環境ではなぜかメンバ変数追加ウィザードが動作しません。
手動でメンバ変数を書いた場合にエディットボックスどうやって関連付けすればいいのでしょうか?
0462デフォルトの名無しさんNGNG
>>461
アイテムをダブルクリックして駄目なら駄目なんだろ。
0463デフォルトの名無しさんNGNG
>>461
ダブルクリックするとエディタが開いてチェンジイベントの記述になります。
0464デフォルトの名無しさんNGNG
VCがおかしい→再インスコ
ウィザードがおかしい→テスト用プロジェクト作ってみる
手動がいい→サンプルをまねる
0465デフォルトの名無しさんNGNG
CList の入れ子ってできないでしょうか.
CList< CList< int, int >, CList< int, int > > みたいな.
0466デフォルトの名無しさんNGNG
VS.NET2003で新しいプロジェクト作成でMFCアプリケーションを作成したら、
ダイアログバーも生成されたので、リソースエディタでエディットコントロールを2つ
追加してコンパイルすると、ダイアログバー上にエディットコントロールが2つあって、
文字の入力等は問題なく出来るのですが、TABキーでフォーカスの移動をしようと
しても、1つ目のエディットコントロールにしか移動しません。

リソースのタブストップには両方ともチェックが入っているのですが、どうすれば
フォーカス移動が出来るようになるのでしょう?
0467デフォルトの名無しさんNGNG
>>466
タブオーダーは設定したのか?
0468466NGNG
>>467
設定してもだめ。

というか、設定してなくても、普通のダイアログならリソースエディタで貼り付けた
順に初期設定されてるから、意図したとおりにならずとも何がしかの順で移動して
くれると思うのですが、TABキーでは頑なに1つめのエディットコントロールから
離れようとしません。

クリックしてやるとちゃんと2つ目のエディットコントロールにフォーカス移動するん
ですが。

なんか、追加のコードがいるんでしょうか?
0469デフォルトの名無しさんNGNG
>なんか、追加のコードがいるんでしょうか?

普通はいらない。

というか、普通にウィザードでMFCアプリ作ってもダイアログバーなんか付いてこないと思うんだが。
0470466NGNG
>>469
プロジェクト作成時にReBarを使う設定にすると付いてくるようです。

んで、解決しました。ダイアログバーに割り当てられてるダイアログリソースの
ControlプロパティがデフォルトではFalseになっていたのでした。

プロジェクト生成時にこれくらいはTrueにしておいてほしかった・・・orz
0471デフォルトの名無しさんNGNG
あー、そういうのがあるのか。2003はインストールしただけでほとんど使っていないので気付かなかった。
それにしても、2003のリソースエディタのプロパティは使いにくいなあ。
無理矢理ダイアログバー作ろうといじってて、なかなかダイアログスタイル設定できずに苦労した。
何だよ「子」って
0472デフォルトの名無しさんNGNG
スレが汚れるので.NETの話題はお控えください。
0473デフォルトの名無しさんNGNG
>>472
スレのレベルが下がるので、VisualStudio.NETと.NET Frameworkを
混同している人はカキコを控えて下さい。
0474デフォルトの名無しさんNGNG
VC++.NETはMFC的には機能ダウンしてるしな
0475デフォルトの名無しさんNGNG
>>474
ウッソー?
機能アップしてるだろ。
例えばCStringはstd::basic_stringのようにテンプレートクラス化されて
使いやすくなってると思う。
0476474NGNG
>>475
書き方が悪かった。ライブラリじゃなくてIDEまわりね。
0477デフォルトの名無しさんNGNG
MFCライブラリはもろもろ良くなってるね
CStringはウニとS-JIS混在できるしね
IDEは.NETと共通化したから非共通部分が落とされたね
0478デフォルトの名無しさんNGNG
先輩にMFCをするより、SDKでガイガリやったほうがいいのができるっていわれたんだが、本当?
0479デフォルトの名無しさんNGNG
いいのができるかどうかは関係ない。
APIだけで作っても駄目な物は駄目
0480デフォルトの名無しさんNGNG
その先輩はMFC使えない、C++わからないだけってパターンが多い。
0481デフォルトの名無しさんNGNG
MFCって何から勉強すればいいんだ?
0482デフォルトの名無しさんNGNG
自分が必要とするところから。
0483デフォルトの名無しさんNGNG
習うより慣れろ。
0484デフォルトの名無しさんNGNG
CListView でレボートビューにした場合、ラベルを改行して
複数行で表示したいのですが、可能でしょうか。
0485デフォルトの名無しさんNGNG
Owner Drawでやるしかないんじゃない?
0486デフォルトの名無しさんNGNG
マルチします。すみません。
C++BuilderXでGUIアプリを作成する場合には
MFCは使えるのでしょうか?
また、フォームエディタは使用できるのでしょうか?
0487デフォルトの名無しさんNGNG
CListView で Owner Draw を使うのにはどうすればいいのでしょうか。
教えて君で申し訳ないです。
調べても調べがつかなかったもので。。
0488デフォルトの名無しさんNGNG
>>487
CodeGuruに行くとそういうサンプルが少なくとも二つは見つかるよ。
#つーか、見つけた。
OwnerDrawじゃなくてCustomDrawの手法ならGoogleで国内サイトを探すだけでいろいろ出てくると思う。
0489デフォルトの名無しさんNGNG
今から始めるならMFCはやめて.NETにしたほうがいい?
0490デフォルトの名無しさんNGNG
>>488
ありがとうございます。
とりあえず、CodeGuruから調べてみたいと思います。
0491デフォルトの名無しさんNGNG
俺はCodeProjectの方が好きだな・・・
0492デフォルトの名無しさんNGNG
CodeGuruはリニューアルしてから見づらいな・・・
0493デフォルトの名無しさんNGNG
>>489
「今から始める」という意味が「学習を始める」だったらMFCで良い。
「長大なプロジェクトを起こす」という意味なら.netを考慮する価値はあるかも。

つまりちょこちょこ作って今すぐ広い環境で動かすならMFCだな。
0494デフォルトの名無しさんNGNG
>>493
あー。まだ厨房なんで将来的なことも考えていただければ幸いです。
0495デフォルトの名無しさんNGNG
>>494
んじゃまず、ハードの基礎やってから、アセンブラ逝け。1年たったらまた恋。
0496デフォルトの名無しさんNGNG
漏れは、SDK だけでアプリ作れない香具師の MFC アプリは信用しないなあ。

……「アセンブリが解らない香具師のアプリは信用しない」と同じレベルかゴメンorz
0497デフォルトの名無しさんNGNG
何でもそうだが、知ってるやつ見えてるやつから見ると、知らないやつ見えてないやつは、危なっかしく感じる。
知らないやつ見ててないやつ自身は、なんの恐れも不安もない。
0498デフォルトの名無しさんNGNG
えーと、分裂症の方でしょうか?
0499デフォルトの名無しさんNGNG
SDKやってMFCすれば〜
0500デフォルトの名無しさんNGNG
MFCだかVBだか知らないんだけど、例えば某USB機器に付属してるソフト。
起動してすかさず他アプリケーションを前面に持って来て、
そのソフトが完全に起動し終わったのを確認してウィンドウをアクティブにすると
フッと、ウィンドウ上のボタンのフォーカスが切り替わる。
細かい事だけど、何やってんだよ (;´Д`) 怖いよ
0501デフォルトの名無しさんNGNG
レベルが低くて本当にこれから始めるっていうならなおさら、あんまり先のことは
考えずに、今できることをやって経験を積んでおくことを薦める。先々どうするかは
自分で経験して判断できるようになってから決めればよい。何もできないうちに
後のことを言っても始まらないからね。

現在一般に出回ってるシステム環境や、ツール、学習面での文書のこと考えたら
いきなり.netはやりづらいと思う。どうせ最初は小さいものしか作れないんだし、
何かしら使える機能のあるものを気軽に作って、プログラムすることの手順に慣れ
るのが先だろう。
0502489NGNG
一応Delphiとかはいろんなページ見ながらやってたんだけど
他の言語に移行したくなったんで、.NETかMFCがいいかなーと思ったたけです。
別にJavaやSDKでもいいんですが、アセンブラは必要なんでしょうか?
0503デフォルトの名無しさんNGNG
そんな「なんとなく」が理由なら自分で好きなのやれ。
0504デフォルトの名無しさんNGNG
>>502
必要って何のために?

仕事で必要かどうかは内容次第で、
具体的な就職先と配属先が決まらないと何とも言いようがない
けど、そんな理由に引きずられるだけな若手は「うちへ欲しい」タイプじゃない
泥縄方式のおんぶに抱っこで何ができるか甚だ疑問だからだ

言語であろうとデバイスあろうと、
特定のブツに対するマニュアル的な知識は泥縄でも徹底的ならそれでいい
もっと根本的なことで、こういう分野を切り開いていくことに対して
自発的な意思で行動しているか否かが肝心要の核心だ

で、アセンブラの話に戻ろう
アセンブラやってみたいか? 意味ねえと思うか?

おまえが答えるしかないことだ
0505489NGNG
>>504
アセンブラはやってみたくないけど、意味はあるとおもう。
既存の高級言語を使う場面とアセンブラを使う場面はどう違うのか説明してくれ。
0506デフォルトの名無しさんNGNG
>>505
特定のCPUの、特有の機能を使うとき
例: 特権命令

コードサイズまたは実行速度に定量的な条件があるとき
例: PIC
0507デフォルトの名無しさんNGNG
>>505
続き

既にアセンブラベースで進行中のプロジェクト
例: (軍機のため言えません)
0508デフォルトの名無しさんNGNG
最初にDelphiやると他のものが使えなくなってしまう。
そういう意味では最初に学ぶのはDelphi以外が良いと言うことになるのかも知れない。
■ このスレッドは過去ログ倉庫に格納されています