■MFC相談室 mfc11.dll■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/
関連リンクは >>2-10 の辺り。
0792デフォルトの名無しさん
NGNGMFCのトリックをパクったりするのが有効だからだろ。
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNGっていうか、マウス操作している人が一番良く知っているはずだが。
0795デフォルトの名無しさん
NGNGあるメニューの項目で、UPDATE_COMMAND_UIメッセージの
イベントハンドラを(CxxxDlgクラスへ)追加し、その関数内で、
pCmdUI->SetCheck(1);
と記述したのですが、チェックが付いてくれません
同じ事をシングルドキュメントでやると、上手くいくのですが・・・
ダイアログベースでメニューのチェックを制御するには
なにかコツがあるのでしょうか?
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNGスレッド自身が任意のタイミングで。
0798740
NGNGFLEXGRIDを使用していたのですが、OCXファイルはあったのですがClassIDの方に登録
されて居なかったので、その段階でダイアログが開かずに落ちていました。
このClassIDってどのようにして登録すればよいのでしょうか
>>742
ありがとうございます
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG"\r\n"
0802795
NGNG0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNGfuck you 股来た 目がビーチクでターンエーがオメコで括弧が足
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNGどちらでやったらより良いですか?またなぜ、そのほうがより良いといえるのですか?
0808デフォルトの名無しさん
NGNGON_REGISTERED_MESSAGE
もしくは
ON_MESSAGE
ハンドラで
0809デフォルトの名無しさん
NGNGソフトラインブレーク で調べてみんさい
0810デフォルトの名無しさん
NGNGいくらでもたたいてくれて結構です
画像を加工して保存がしたいのですが
HDCで保持するのとDIBデータを扱う2つがあるのですが
この2つについての、違いをご教授願いたいのです。
よろしくお願いします
0811デフォルトの名無しさん
NGNG推奨スレ
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
・・・とは言っても、おそらく API と MFC の境もわからんだろうな。
こっちとあっちで、ちゃんと同じ自己紹介しとくといい。
0812デフォルトの名無しさん
NGNGテキストに変更がある度に処理を行いたいのです。
ClassWizard(VisualC++ 6.0)を使用して、
CEdit型の変数、m_EditXをエディットボックスに対応させ、
EN_CHANGEメッセージのハンドラを作成しました。
void CSelectDlg::OnChangeEditbox()
{
char buffer[5];
m_EditX.GetLine(0, buffer, 4);
・
・
}
実行してみると、ダイアログがオープンした途端、
CEdit::GetLine内部でAssertionが発生して止まってしまいます。
どうやらエディットボックスが有効になる前(?)に
EN_CHANGEメッセージが送られてくるようです。
http://www.flounder.com/getdlgitem.htm#Uninitialized%20Controls
これを避けるために、OnInitDialogが実行済みかどうかを
格納しておくBOOL変数を持たせる方法というのがあるそうです。
ただ、こういった処理をしたい場合、これが定番な書き方なのでしょうか?
もうちょっとスマートなやり方がありそうな気がするのですが。。
0813812
NGNGスピンボックスから自動関連付けしているのが原因っぽいです。
関連付けを外したらダイアログは普通に表示されました。
0814デフォルトの名無しさん
NGNGスマートかどうかは知らないけど、とりあえずピンポイントその状況だけ避けるなら
if (::IsWindow(m_EditX..m_hWnd)) とかで判定する手もあると思う。
0815812
NGNG正直、それを考えてましたw
Assertionがその条件で発生してるんですが、
IsWindowの意味自体があやふやで自信がありませんでした。
メンバ変数を増やすよりはマシってことで、それでやらせていただきます。
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNGwndfrm.cpp にあるように、メニューの UPDATE_COMMAND_UI を処理するのは CFrameWnd クラス。
( CFrameWnd::OnInitMenuPopup を参照 )
よってダイアログベースの場合自分で似たような処理を書くか、単純に自力でメニューアイテムをSetCheck すること。
あるいは単に SDI で FormView 使うって手もある。たぶんこっちのほうが簡単。
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNGMFC的には if (m_EditX.GetSafeHwnd()) だな。
0820デフォルトの名無しさん
NGNGGetSafeHwndはポインタ経由で this が 0 のときにもアクセス違反にならないというだけの関数。
(要は return this ? this->m_hWnd : 0 ってな実装)。
ポインタでもないメンバ変数に使うのは無意味。
m_hWnd って直中身見るのは行儀悪くてイヤーンっていう非MFC人なら常時使ってもいいかもね。
0821デフォルトの名無しさん
NGNGってあまり使ってませんかそうですか
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGなくなりません。
MFCがテンプレートになる可能性があるだけでしょう。
その場合、ClassWizardなどのIDE機能の変更があると思います。
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG少なくとも現行OS(winXP以下)が現役で動いているうちは確実に使えるだろ
0827デフォルトの名無しさん
NGNGMSがOSを出し続ける限り使えると思う。
それ以前に、MSにとってMFC/ATLをなくすメリットは何かあるの?
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNGこんどこそ驚きのプゲラ仕様がないライブラリを求む
0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG大量(最大1万件)のデータをリストビューに表示させるのですが、一番下のアイテムを選択表示させデータの流れる様子を、画面に表示させたいのです。
SetRedrawを用いてInsertItemを行っています。1万件を超えるとDeleteItemを用いて先頭のアイテムを削除しています。現在表示速度が遅いのかデータが溜まっています。さらに画面がちらついてしまいます。
画面のちらつきはOnEraseBkgndを用いて、描画を省いているのですが上手く画面のちらつきがおさまりません。
良い方があれば教えてください。
0832デフォルトの名無しさん
NGNGリストビューで表示が間に合わないような頻度で書き換わるデータを本当にリストビューで
1万件もためて表示する意味があるのかという疑問が・・・。
0833デフォルトの名無しさん
NGNG仮想リストビューを使いなさい。
0834デフォルトの名無しさん
NGNG大量データを扱う場合は仮想リストコントロールを使うというのが定石だけど、
「流れる様子」とか言ってあんまり頻繁に更新する場合は頻度によって多少
のちらつきが出るかも。
0835デフォルトの名無しさん
NGNGコモンのリストコントロールなら必要ないと思うけど。
描画に必要なインデックス情報しか処理要求してこないようにできたはず。
MFCの場合は知らないけど。
0836835
NGNGWM_PAINTを送るだけでいいから楽だよ。
LVN_GETDISPINFOとか、LPSTR_TEXTCALLBACKでググって見れば?
MFCでも逝けるはず。試してないけど。
0837835
NGNGWM_PAINT送信での更新だと、InvalidateRect()もあらかじめ必要かも。
0838デフォルトの名無しさん
NGNG尤も、ログ機能なんで更新は最高でも1秒に一回程度。
有り得ない上限として1万行の仕様になり、ランテストした次第。
0839デフォルトの名無しさん
NGNGあらかじめ上限数のアイテムを作っておいて、無効アイテムに空文字を返せば、
動的にアイテム数が増減しても高速処理できる。
ただし、見た目は件数が数件でもスクロールバーが出てしまうけど。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200409/04090044.txt
0842デフォルトの名無しさん
NGNG> 仮想リストビューなんて要るの?
> コモンのリストコントロールなら必要ないと思うけど。
コモンのリストコントロールを使わずに仮想リストビューを使うって、どういうこと?
0843デフォルトの名無しさん
NGNGプログラム自体は動くのですが、Enterを押すと勝手に終了してしまいます。
なぜがご存知の方、教えてください<m(__)m>
0844デフォルトの名無しさん
NGNGダイアログクラスのOnOk()をオーバーライドし
CDialog::OnOK();
をコメントアウトして下さい
0845デフォルトの名無しさん
NGNG聞かれる前に追加。
Escキーでも終了してしまうので、
OnCancel()も>844同様に呼び出されないようにすべし。
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGProxyの動的な変更方法が判りません。
Sleipnirの様にプログラム中から変更を行いたいと思っております。
参考になる文献などでも良いのでご存じの方ご教授お願い致します。
0849デフォルトの名無しさん
NGNGttp://www.athomejp.com/goldfish/mfc/dialog/nonesc.asp
0850デフォルトの名無しさん
NGNGなんで? いつでも EndDialog できるやん。
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNG844は終了できなくならんだろ。
0854デフォルトの名無しさん
NGNGそんなん言い出すなら、タスクリストがあるやん
0855デフォルトの名無しさん
NGNGだから>>844-845の二つともやらせたら、だってば。
0856デフォルトの名無しさん
NGNGで、「タスクリストからしか終了できません。どうすればいいですか。」って質問が来そうだなって話だ
0857デフォルトの名無しさん
NGNGそんなら来てからでええやん
来ないかも知れないし
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG予防線として>>845は同時にEndDialogも書いた方がいいという主張をしたかったんだろう。>>847は。
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG0862なぜが?
NGNGなぜがご存知の方、教えてください
なぜがご存知の方、教えてください
0863デフォルトの名無しさん
NGNGA. OnOK()をコメントアウトで終了しなくなります。
すごい回答だ。つーか、こんな回答でWindowsのダイアログの作法を無視しまくる
変なアプリが増えないことを祈る。
0864デフォルトの名無しさん
NGNG>>849
0865デフォルトの名無しさん
NGNG模範回答よろしく
0866デフォルトの名無しさん
NGNGダイアログボックスをリターンキーやエスケープキーで閉じないようにするには?
http://web.archive.org/web/20030415014307/techtips.belution.com/ja/vc/
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGvoid CxxxDlg::OnOK()
void CxxxDlg::OnCancel()
void CxxxDlg::OnClose()
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGなんで? いつでも EndDialog できるやん。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG私の理解では、
ESCやENTERでプログラムが終了するのはダイアログベースの仕様であり、
終了させるためには、OnCancel()、OnOK()をオーバーライドすればよい。
実際にやってみたところ、ESCやEnterでは終了せず、右上のバツでは終了できました。
ありがとうございました!!
しかしながらEnterでプログラムが終了する仕様は問題ありですね、、、
0879デフォルトの名無しさん
NGNGんなこたあない。
ダイアログがどうゆうものか、もちっと勉強してくれ。
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGダイアログクラスを使わないで、ダイアログを作る。
0883デフォルトの名無しさん
NGNG→Enterでプログラムが終了するのは好ましくない。
ダイアログクラスを使わないで、ダイアログを作る。
→Enterでプログラムが終了しないのは好ましくない。
0884デフォルトの名無しさん
NGNG終了するのは自然な動作だが、ダイアログ・ベースでもそんな簡単なものばかり
じゃないからね。ものに合わせて変えるのは当然だろ。
0885デフォルトの名無しさん
NGNGダイアログが閉じて、アプリ終了した場合やGUI操作がない場合は、Enterクローズは不安感に襲われる。
0886デフォルトの名無しさん
NGNGダイアログの作法?
ダイアログを作ってるんじゃなく、
ダイアログを"ベース"にアプリを作っています。
0887デフォルトの名無しさん
NGNGCSocketで通信するプログラムを作ってるのですが、Connectで止まってしまいます。
動作試験中なのでサーバ、クライアントともに同じマシンであり、
"127.0.0.1"にコネクトするようにしています。
サーバ:Create(1500) → Listen() → Accept(socket) ここで止まる
クライアント:Create() → Connect("127.0.0.1", 1500) ここで止まる
各CreateとListenが成功しているのは戻り値で確認しています。
不可思議なのは、別のマシンではちゃんと動くことです。
自分のマシン:Win XP Pro(SP2当ててない),
ファイアウォール・アンチウィルス停止中
別のマシン:Win 2000 Pro
どんな原因が考えられるでしょうか。(ポート番号が良くないとか?)
0888デフォルトの名無しさん
NGNG127.0.0.1がちゃんと解決されているか確認。
netstat /an でポート番号が重複してないか確認。
0889デフォルトの名無しさん
NGNG別のアプリケーションからPostMessage()されると、そのメッセージは破棄されてしまうのですか?
どうも拾えないメッセージがあってそれが原因かなと考えているのですが・・・
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNGどうでも良いけどテストで使うにしろ1500ってポートはあんまり使わないところ
とりあえず5000オーバーの空いてるところとか使っとけよ
0892デフォルトの名無しさん
NGNG>>888
127.0.0.1が解決できているかどうかの確認ですが、
とりあえずpingは返ってくるようです(他に確認方法ってありますか?)。
またnetstat /anで確認したのですが、特にかぶっているポートはありませんでした。
>>890
OSのファイヤーウォールの項目もチェックしてみましたが、
どの接続にもファイヤーウォールのチェックは入っていませんでした。
>>891
そうします。Winがどのあたりのポートを使っているか
よく知らなかったもので。
■ このスレッドは過去ログ倉庫に格納されています