■MFC相談室 mfc11.dll■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/
関連リンクは >>2-10 の辺り。
0756初心者D
NGNG皆さんありがとうございます。
結局、>>754さんのやり方でやりました。
CxxxViewクラスの中でメニューの項目からダイアログを出すっていう
関数を作ったのがなんか「?」って感じになってますが…。
>>755さんの
>ビュークラスにメッセージ飛ばして
をもうちょっと勉強してからやってみます。
勉強し直してきます…。
0757デフォルトの名無しさん
NGNGIEでもFFFTPでも挙動がおかしいときがありますよね?
操作を受け付けない時間が有りますよね?
自分の作るプログラムがそういう挙動を示さないとは思えないのです。
0758デフォルトの名無しさん
NGNG>操作を受け付けない時間が有りますよね?
…ないと思われ。OSがWin9xとか。
0759デフォルトの名無しさん
NGNGNT系でも同様だよ。
「操作」の定義があまりにもシェル寄りだね、その見方だと。
0760デフォルトの名無しさん
NGNG>>>755さんの
>>ビュークラスにメッセージ飛ばして
>をもうちょっと勉強してからやってみます。
せっかくMFC使ってるのに、そんな面倒なことしなくてもよし!
単に View にそのメニューのコマンドハンドラを追加すればいいだけだよ〜。
0761デフォルトの名無しさん
NGNGそれは非同期ソケットの問題じゃないと思うけど。
漏れの経験ではそれなりに非同期っぽく作ったネットワークアプリが無反応になるのは、
gethostbyname を不用意に呼んでブロックしているケース、socket が connect / shutdown中で、
他スレッドから close しても停止できないケースが大半なんじゃないかな。
0762デフォルトの名無しさん
NGNGcloseで停止できなかった場合に無反応になるのだとしたら、
何故無反応になるのですか?
0763デフォルトの名無しさん
NGNG>>761が正しいかどうか知らんが、デッドロックが起きてるとかでは?
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNGprotectedになるのは何故ですか?
特にデストラクタがそうなる理由がわかりません。
Microsoftのサンプルは全てpublicになっていました。
よろしくお願いします。
0767デフォルトの名無しさん
NGNGスレッドを少なく出来る部分に魅力を感じます。
Windowsでもpoll出来ますか?
出来るならそっちを使いたいです。
よろしくお願いします。
0769デフォルトの名無しさん
NGNG「何故」について考えることに意味があるかどうかだ。
しょせん同じ人間が用意したウィザードだぞ。
答えをいうなら、ウィザード作成者が徹夜明けだったからとしか答えようがない。
0770デフォルトの名無しさん
NGNGバグですかね?
たぶん意味があると思うのですが。
は!
わかったかもしれない!
もしかして、CWinThreadを継承したクラスは自分をマネージしないといけないんですか?
だとすると納得いく。
ちょっと実験してみます。
0771デフォルトの名無しさん
NGNG専門用語?それともカッコイイっぽいから使ってるだけ?
0772デフォルトの名無しさん
NGNGカッコイイから使ってみました。
0773デフォルトの名無しさん
NGNG動的生成されることを前提にしてるからprotectedにしたほうが安全だと想ったんじゃない。
IMPLEMENT_DYNCREATEとかCRuntimeClassあたりで。
0774デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG「コイツ、話を誤魔化してる。もしくは何も判ってない。」と思われるだけ。
0777デフォルトの名無しさん
NGNGはい。誤魔化していました。
素直にわかりませんって書けばよかったです。
>>773
そうみたいです。
でも、デストラクタはどうしてなんですかね?
破棄するときどうなるのだろう?
0778デフォルトの名無しさん
NGNGnew/deleteで生成すると書いてあったか?
0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNGマスクパターン
0783デフォルトの名無しさん
NGNGスレッドを自殺させたあとにメモリーをチェックするとリークしていると報告されるのですが、
これは何故なんでしょう?
0784デフォルトの名無しさん
NGNGTerminateThreadを使ったのか?
0785デフォルトの名無しさん
NGNGPostQuitMessageしてみました。
0786デフォルトの名無しさん
NGNGだれがどのタイミングで?
0787デフォルトの名無しさん
NGNG根本的に間違っているような母艦
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGMFCよくわかんないけど (じゃあなぜこのスレにいるんだつーツッコミは禁止だ)
Win32APIレベルで考えると、ボタンを押されたら親ウィンドウに
WM_COMMAND をポストされるよな。BN_CLICKED と コントロールID と
ご丁寧にボタンのウィンドウハンドルまでつけて。
コントロールID やウィンドウハンドルで選別すればヨロシけれ。
もれ普段MFC使わずにナマで書いてるけど、いちいちコントロールID設定するの面倒なんで
ウィンドウハンドルで選別してるw
究極のDQNグラマとはもれのことよw
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
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の二つともやらせたら、だってば。
■ このスレッドは過去ログ倉庫に格納されています