■ VisualC++(MFC限定)相談室 ■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGMFCに限ったお話をしましょう。
ルールを提案。
Qは高度なものからくだらないものまで何でもOK。
Aは「知ってるつもり君」、「えらそうに解説する人」お断りと
いうことで。
0552デフォルトの名無しさん
01/09/03 01:03ID:nepQwT9IAfxWinInit()
0553_
01/09/03 02:02ID:HWCzgSAMお返事ありがとうございます。
教えていただいたAfxWinInit関数をWinMainに置き、
グローバル変数にCWinApp winApp;と置いたら
成功しました。
どうもありがとうございました。
0554デフォルトの名無しさん
01/09/05 02:53ID:9DGwApwEときに何が起こっているのか教えてください。
ビューのインスタンスがコピーされるってことで
いいんでしょうか。
055547
01/09/05 03:12ID:kiU7d71A0556デフォルトの名無しさん
01/09/05 16:07ID:pDzmJoSY単にある処理をした後にプログラムが終了するには
どのようにすればいいでしょうか?
0557デフォルトの名無しさん
01/09/05 16:29ID:iHP9cOK2いまVCでチャット作ってますが、ほぼ完成したところで、マルチスレッドにしないとサーバーに
多数のクライアント繋いでる時に不具合出るって言われた。
入門書にあまり載ってないしまったく分からないので聞きたいのですが、絶対必要でしょうか?
Webでそれなりに探したがあまり詳しく説明してるところが無くて、かなり困ってます(汗
オススメの本やページありましたら教えてください m(_ _)m
0558デフォルトの名無しさん
01/09/05 16:38ID:3xtzV.Hcその条件でつないでみてそのままでいいのかどうか自分の目で判断しろ。
0559557
01/09/05 19:13ID:pDzmJoSY「ユーザがオペレーションを行わないで」という事です。
0561デフォルトの名無しさん
01/09/05 21:05ID:yo/DrG8Y[default]
PROJECT_NUM=10
LAST_UPDATE=20010905
のように、連想配列をファイルに読み書きしたいんだけど、
使えるクラスとかありますか?
0562デフォルトの名無しさん
01/09/06 14:45ID:5pS2jHq6うむ、逝ったね。
どう頑張ってもサーバー作れん。
ウツダシノウ
0563デフォルトの名無しさん
01/09/06 15:11ID:lC87f1l6http://www5.wisnet.ne.jp/~mercury/program/windows/etc/inifile.html
0564デフォルトの名無しさん
01/09/06 17:00ID:DJLsxQNICMDIFrameWnd::OnWindowNew()
0565デフォルトの名無しさん
NGNGさんく〜♪
0566デフォルトの名無しさん
NGNGCOleDropTarget派生クラスのOnDropで、COleDataObjectから取得した
グローバルメモリハンドルは、::GlobalFreeしなければならないのでしょうか。
いろんなサイトを見てみたのですが、解放してたりしてなかったり、果ては
COleDataSourceの方で解放していたりと、まちまちです。
0567デフォルトの名無しさん
NGNG検索してみたけど、どれがいいのかさっぱり分からないです。
0568デフォルトの名無しさん
NGNGアイテムを右クリックでポップアップメニューを出すってのがどうしてもうまくいきません。
WM_CONTEXTMENUのハンドラで出してるんですけどうまく出ません。
誰か作ったことある人がいたら教えてください。
0569デフォルトの名無しさん
NGNGVC関連の初心者向けコミュニティーは無さそう
(普段からいろいろ漁ってるけど)
たぶん、みんなプライド高いんだろね
その点、VBは初心者サイト、腐るほどあるんだけどな
0570デフォルトの名無しさん
NGNGなんか、嫌な感じの信仰があったりするけど、
礼儀正しくしてれば基本的に親切に接してくれます
0571デフォルトの名無しさん
NGNGhttp://mfc.acty-net.ne.jp/ml/mfc/
0572デフォルトの名無しさん
NGNGありがとうございます(ぺこり)
VCPPMLにまず入ってみました。
VC++MLも入ってみます。
0573デフォルトの名無しさん
NGNGCDocument::OnSaveDocument
CDocument::ReleaseFile
CMirrorFile::Close
でエラーになるのですが、ReplaceFileに失敗して、CFile::Renameを呼んで例外がスローされます。
ローカルのファイルだと、ReplaceFileが成功します。
どのような原因、対策が考えられるでしょうか?
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNGなんらかの処理を行いたい場合
(具体的には、ほかのウィンドウを同時にセットでMoveWindowで移動させたいのです)
どのへんを乗っ取って処理すればよいのでしょうか?
WindowProc内で、なにかメッセージを感知して、、、というのは想像
つくのですが、具体的にわかりません。
どうかご教授ください
0576デフォルトの名無しさん
NGNGWM_MOVINGとかWM_MOVEとかでは?
0577デフォルトの名無しさん
NGNGWM_EXITSIZEMOVE
05781Rubyユーザ
NGNGオブジェクト指向スクリプト言語として他のスクリプト言語を圧倒する性能と美しい言語仕様を持っています。
例えば、SchemeやSmallTalkなどは比較的美しい言語だと言われていますが、後発である優位さでRubyは
さらなる美しさと実用性を備えています。
もちろんPerlやPythonなど問題外です。
日本語との親和性ではRubyしか選択肢がないでしょう。
LinuxのディストリビューションもRubyの採用例が増えてきています。
1年後には全てのディストリビューションがRubyを標準採用するでしょう。
Rubyは未来のスクリプト言語なのです。
長くなりましたが、コピペではありません。
賛同していただける方はRubyの事を分かっていただけない人に出会ったら、
この発言をコピペしていただければ幸いです。
VC++なんて糞の極ですがね(大爆笑)
0579デフォルトの名無しさん
NGNG┃ ┃ ┃
┃ ┃ ┃
┣━━━━┫ ┃
┃ ┃ ┃
┃ ┣━━━━┫
┃ ┃ ┃
┃ ┃ ┃
┗━━━━┻━━━━┛
このように分割されたウィンドウはどうすれば上手く
出来るのでしょうか?
SplitterWndをOnCreateClientでネストして使用し
・まず左右に分割
・次に左を上下に分割
・最後に右を上下に分割
とやってみたのですが、左の領域の幅が
何故かゼロ(分割線が左端に寄ってしまう)に
なってしまい、悩んでいます。
左右のどちらか一方が分割されないような三分割は
検索すると結構見つかるのですが、この形態の四分割は
参考例が見つからないので、識者の知恵をお借りしたい次第です。
0580
NGNG引いてくれば?
0581デフォルトの名無しさん
NGNGDelphiならすぐ出来るんだけどね
0582デフォルトの名無しさん
NGNG分割位置を指定したいだけならCSplitterWnd::SetColumnInfo()は?
3分割が分かるんならすぐだと思うんだけどなあ。
0583
NGNG0584
NGNGサイズ指定されていないウインドウを分割しようとすると
>とやってみたのですが、左の領域の幅が
>何故かゼロ(分割線が左端に寄ってしまう)に
>なってしまい、悩んでいます。
まさにその状態になります。
ちなみに私はMoveWindow()でサイズ指定してます。
0585579
NGNG上下にも分割した後にサイズを変えようとしていたのが問題だったようです。
ありがとうございました。
0586デフォルトの名無しさん
NGNGLineToで線を引く。
0587デフォルトの名無しさん
NGNGRubyはクソです。ゴミ箱逝きです。
いじょ
この発言をコピペしていただければ幸いです。
0588-
NGNGhttp://members.tripod.co.jp/bingo852/
0589Ruby!
NGNG>いろいろと有名なオブジェクト指向言語であるC++と
>Rubyを比較すると:
>* C++なぞ問題外.^^;;;
http://www.ruby-lang.org/ja/compar.html
Rubyを知ってもらうためにもこの文をコピペしてください。
0590デフォルトの名無しさん
NGNGそれでは次のコーナーです
__ ____________________
.|/ ‖ ‖ ____
‖ ‖ | ON AIR.|
∧ ∧ θ ‖  ̄ ̄ ̄ ̄
(,,゚Д゚)__ /[] ̄ ̄θΛ_Λ
||(. つ_/ //(´∀` )/|
┗┳ /  ̄/⊂ ||_/
┻| ̄ ̄ ̄ ̄ ̄| ( ━┳┛
|_____| /ヽ」┘┻
____________|\____
「Rubyはクソです。ゴミ箱逝きです。 いじょ 」
この発言をコピペしていただければ幸いです。
0591デフォルトの名無しさん
NGNGAppendMenuでダイナミックに追加したメニュー項目を処理する方法を
教えてください
あと、AppendMenuで与えるメニューIDで、Resource.hで既存のものと
ぶつからないようにするにはどうすればよいでしょうか?
(+1ずつ加算していくにしても、そもそもどこから開始させればよいのか・・)
以上、よろしくおねがいいたします
0592
NGNGクラスウイザードで関連付けしてソース生成
だったかなあ?
シンボルブラウザでぶつからないか確認・・・。なのかなあ?
0593デフォルトの名無しさん
NGNGWebを調べてみたら、
http://www.kab-studio.com/Programing/Codian/MFCTips/05.html
ぶつからないように、できるだけ大きい値をあらかじめ割り当てておく
って書いてあるけど、
これでほんとにいいのかな・・・
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG#include <afxsock.h> // MFC のソケット拡張機能
と
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
を追加してもうまくいきません。
この他にも設定するものがあるのでしょうか?
0596sage
NGNG1)そりゃあ、それだけじゃ動かんだろ。
2)うまくいかないって何?
0597デフォルトの名無しさん
NGNGプログラムを作っているのですが、gifアニメや、flash動画を
任意のタイミングでロック(静止)させておきたいのです。
何かよい方法はないでしょうか?
よろしくご教授ください
0598デフォルトの名無しさん
NGNG#include <afx.h> が要るんじゃない? 試してないけど。
0599デフォルトの名無しさん
NGNGCInternetSession
のOpenURLでウェブページ(HTTP)にアクセスする際に、
URLが不正だったり、指定のURLのサービスが利用できない際に
それを知る方法はありますか?
インターネットそのものにアクセスできない場合は、例外をcatch
することでわかるようなのですが。
どうか教えてください
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGビットマップを表示したら、ウィンドウのサイズを自動的に
ビットマップのサイズと同じにしたいと思っています
MoveWindowでビットマップの幅と高さを指定したんですが
うまくいきません。マッピングモードはテキスモードです
画面上の1ピクセルとビットマップの1ピクセルはサイズが違うのでしょうか?
0602デフォルトの名無しさん
NGNGウィンドウサイズと表示領域は確か違ったはず。
あとディスプレイ設定より大きくは出来ないはずだね。
0603デフォルトの名無しさん
NGNGこれじゃわからん。
具体的にどうなったか報告しろ。
0604くだらない質問ですが
NGNGCxxxAppクラスを知ってる(#includeしてる)のが気に入らなくて、
それらをCxxxAppから独立させて(絶縁して)組んでます
こういうことしてる人っていますか?
0605デフォルトの名無しさん
NGNGそういうことが気になる人はAppWizardを使わないのでは?
0606601
NGNGそこで質問なんですが
GetClientRectで得たクライアント領域の座標を
デスクトップ上の絶対座標に置き換えるにはどうしたらいいのでしょうか?
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG俺だったら <windowsx.h> の MapWindowRect 使うぜ。
0609デフォルトの名無しさん
NGNGそれは画面座標をクライアント座標に変換するの。
正解は API の ClientToScreen()
0610606
NGNGClietToScreenを使ってクライアント領域とウィンドウサイズの差をとって
うまく設定することが出来ました。
こんなかんじです。
CWnd* parent = GetParent();
CRect win,client;
GetClientRect(client);
parent->GetWindowRect(win);
ClientToScreen(client);
parent->MoveWindow(win.left, win.top,
w + client.left - win.left + win.right - client.right,
h + client.top - win.top + win.bottom - client.bottom );
wとhはそれぞれ画像の高さと幅です
0611デフォルトの名無しさん
NGNGw + (win.right - win.left) - (client.right - client.left),
h + (win.bottom - win.top) - (client.bottom - client.top)
ですよね。ClientToScreen(client)の必要ないと思う…。
0612デフォルトの名無しさん
NGNGCxxxApp::AddToRecentFileList(filename);
で登録できることは分かったんですが・・・
最近使ったファイルを選んだ時の関数OnFileMruFile1()で
どのようにそのファイル名を取得したらいいのですか?
#やっぱりOnFileOpen()を自分で実装せず
#シリアライズを素直に使うものなのでしょうか?
0613デフォルトの名無しさん
NGNGCDocument::OnOpenDocumentを引っかけるのが正解。
0614611
NGNGほんとだ。なんでこんあこときずかなかったんdろう。。。
鬱氏!
0615CEdit
NGNGSDIのスケルトンからクラスウィザードで
最上位フレームのOnCreate引っこ抜いてきて
グローバル
CEdit *e;
OnCreate(){
:
e=new CEdit;
e->Create(.....);
:
}
って感じでメインフレームのクライアント領域いっぱいに
CEdit貼り付けると
中身が編集できなるっす
スクロールバーつけたらそれも弄れない
んで
WS_MAXIMIZEを指定したり
e->SetWindowPos(&wndTop...);
とかでCEditをTOPに持ってくると
こんどは編集できるけど表示がおかしくなるっす
いったい、どうしたらよいのでしょう?
0616デフォルトの名無しさん
NGNGビューウィンドウを隠して、別のCEditを表示させるなんてことは、やめたほうがいい。
AppWizardでビューウィンドウの基本クラスをCEditViewにしとくのが無難だよ。
0617616
NGNGビューウィンドウに貼り付けるといいんじゃない。。。
0618615
NGNGSDK風にはっつけても駄目っすか
もう少し素直になることにします
Thxです
0619612
NGNGありがとうございます
おかげで一歩前へ進みました。
えっと次の問題なんですが・・・・
CMainFrame::PreCreateWindowで
cs.cx = 200;
cs.cy = 350;
としてもこの大きさになりません
cs.x = 0;や
cs.style &= ~(WS_MAXIMIZEBOX | WS_THICKFRAME | WS_VSCROLL | WS_HSCROLL);
は反映されるのに....
AppWizardでSDIで作ってます。
よろしくお願いします
0620デフォルトの名無しさん
NGNGあなたのプロジェクトのrcファイルをテキストエディタで見てご覧...
ウィンドウが出来てからSetWindowPosで変更すればOK。
0621デフォルトの名無しさん
NGNGMFC AppWizardで作成したアプリで、子ウィンドウのサイズを変更したときの
描画の更新指示はどこで行われているのでしょうか?
更新リージョン内の背景を消去しないようにしたいのです。OnSize()に記述
(Invalidate(FALSE))しても効果なしで。
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGOnEraseBkgnd、背景ブラシ ??
0624デフォルトの名無しさん
NGNGOnDrawで更新してるんでは?
僕的には、常に描画はバックバッファに対して行い、
それをBitBltして全部再描画してるけど(簡単なゲームみたいなプログラム
たしかRegisterWindowに渡す引数次第では
ずっとクライアント領域を保存しておくことができた気も。
ちなみにRegisterWindowに渡す引数は、
PreCreateWindowをオーバーライドして変更するyo
0625デフォルトの名無しさん
NGNGLRESULT WndProc(,,,,,,){
switch(...){
case WM_PAINT:
OnPaint();
break;
}
return DefWndProc(.,...)
}
calss a{
virtual void OnPaint()
}
こういうことをやっているのですか?
0626デフォルトの名無しさん
NGNGMFCのソース見て自分で確認しる
0627625
NGNG0628デフォルトの名無しさん
NGNG一本一本ほどいて喰え。
0629625
NGNG明日、家族にその確認汁を作ってあげたいんですけどどうやって作ればいいですか。
0630デフォルトの名無しさん
NGNG0631625
NGNGCD−Rに僕のVCのライセンスを譲渡しようと思うのですが駄目ですか。
0632デフォルトの名無しさん
NGNG食べたい人の人数分ライセンスを買いなさい
0633625
NGNG0634デフォルトの名無しさん
NGNG他人への譲渡は出来ない契約になっております。
買われた当人が、最後までお食べくださるようお願いします。
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNGクソスレが急に良スレになったな。
0637デフォルトの名無しさん
NGNGのOpenURLでウェブページ(HTTP)にアクセスする際に、
URLが不正やリンク切れだったり、指定のURLのサービスが利用できない際に
それを知る方法はありますか?
インターネットそのものにアクセスできない場合は、例外をcatch
することでわかるようなのですが。
どうか教えてください
0638637
NGNGアクセスしたURLがリンク切れだったりしても、
Not Found
The requested URL /xxx.htm was not found on this server.
のようなHTMLがゲットされてしまって、あたかも正常に
ダウンロードできたっぽい結果になるんです。
0639デフォルトの名無しさん
NGNGhttpヘッダ解析しる。
ていうかまずRFC読んでhttpそのものについて勉強した方がいいど。
0640デフォルトの名無しさん
NGNG生成したモードレスダイアログなんですが、
アクティブな状態でエンターキーを押すと
ウィンドウが消えてしまいます。
どうやらDestroyWindow()は呼ばれていないようなのですが
実体はお亡くなりになっている気配で、これを抑止するために
OnKeyDownをオーバーライドしてみたのですがこれも
呼ばれていないようで効きません。
モードレスダイアログ特有の現象に見えるのですが、
どなたか原因&解決抑止方法をご存知の方、いらっしゃいませんでしょうか?
0641デフォルトの名無しさん
NGNGそれはEndDialogが呼ばれてしまっているのです。CDialogのアホ。
解決策はCDialog::OnOk()のドキュメント読んで。
それとCDialog::OnCalcel()も。
0642デフォルトの名無しさん
NGNGありがとうございます。
でも、OnOk()もOnCancel()もPostNcDestroy()も
オーバーライド済なんです。
ウィンドウシステムメニューの閉じるボタンを押したときは
きちんとOnCancelを通ってDestroyしているようです。
試しにEndDialogをオーバーライドしてみましたが変化なしです。
一体どこでリターンキーコードを受け取って動いているのでしょうか・・・
0644641
NGNGウィンドウが消えるあたり(OnClose?)にブレークポイントを入れて
止まったところでコールスタックを見たら原因わかんないかなあ。
0645デフォルトの名無しさん
NGNGそれらしきものは試してみたのですが、
OnClose、OnOk、OnCancel、OnShowWindow、
すべて素通りでした。しくしく
0646637
NGNGヘッダ解析は面倒ですね。やはりそれしか方法はありませんかね。
では、指定したURL下のディレクトリ(ファイル)一覧を
ゲットする方法ってありますか?
(要は普通にFTPソフト実行したときのように)
参考になるプログラムとかあれば是非教えてください
0647デフォルトの名無しさん
NGNG> OnClose、OnOk、OnCancel、OnShowWindow
実はCDialog::OnOK(OKは大文字)がオーバーライドできていない、
なんてことはないよね。
うーん。考えにくいか。
0648sage
NGNGうっきゃーそれでした!!(大恥)
大馬鹿に付き合ってくださってありがとうございました・・・
逝ってきます・・・
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGうまくいきません。
根本的に間違ってのでしょうか?
TC_ITEM TabCtrlItem;
memset(&TabCtrlItem,0,sizeof(TabCtrlItem));
TabCtrlItem.mask=TCIF_TEXT;
m_tabctrl.GetItem(0, &TabCtrlItem );
return TabCtrlItem.pszText;
0651デフォルトの名無しさん
NGNGpszText用のバッファは自分で用意するんでないの。
0652デフォルトの名無しさん
NGNG根本的に間違ってよ
Cからやり直したほうがイイよ
■ このスレッドは過去ログ倉庫に格納されています