■MFC相談室 mfc11.dll■
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNG前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/
関連リンクは >>2-10 の辺り。
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がどのあたりのポートを使っているか
よく知らなかったもので。
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNG接続中: 127.0.0.1...ホストへ接続できませんでした。 ポート番号 1500: 接続に失敗し
ました
となりました。これは解決ができていないのでしょうか?
ためしにnetstat /anで出てきたLISTENING中のポートに
telnetしてみても同じ結果になりました。
0895デフォルトの名無しさん
NGNGそのリスニング・ポートはちゃんと0.0.0.0か127.0.0.1にバインドされてるの?
システム・サービスの場合、リストに出てても接続を受けないものもあるから
ちゃんと動く何かの簡易サーバ-クライアント・ソフトを持ってきて実験して
みたら?
それでもダメなら接続をブロックするファイアウォールか何かが動いてる
そのシステム固有の問題ってはっきりするから。
0896デフォルトの名無しさん
NGNGもし他のポートで試せるのなら試すべき。
0897デフォルトの名無しさん
NGNG>>892を見るとテストするポートの設定をしてないように思える。
0898デフォルトの名無しさん
NGNG破棄されない。
MessageBox APIの中でメッセージループが回ってるから。
0899デフォルトの名無しさん
NGNGご回答ありがとうございます。
>>895さんのおっしゃる通り、アンインストールしたと思っていた
ファイヤーウォール(Zone Alarm)が残っていたようです。
アンインストールしたら正常に接続できました。
言い訳をさせていただくと、以前はフィルタ状況のモニターがポップアップで
表示されており、現在は出現しないのでアンインストールしたと思い込んでいました。
(思い込みは良くない・・・)
休日にみなさんの貴重な時間を割いていただいてありがとうございます。
問題の特定の仕方や、問題になりそうな部分の勉強になりました。
今後も精進します。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNGそのボタンにクラスウィザードを使おうとしたところ、
ソースファイル(C:\〜\TestDlg.h, C:\〜\TestDlg.cpp)の
クラス"CTestDlg"は重複する挿入ブロックが存在します。
というメッセージが出てクラスウィザードが使えなくなってしまったのですが
どうやったら直りますか?環境はXP(SP1)、VC6SP6です。
いったんVCを終了してncb, opt, clw ファイルを削除した後にもう一度
試してみたんですがやはり同じ症状です。
0903902
NGNGダイアログベースでデストラクタが無いので手動で追加したんですが
それを消してから上記の3ファイルを削除・再構築したところ直りました。
0904デフォルトの名無しさん
NGNGお分かりの方、いらっしゃいましたら、よろしくお願いします。
1.iniファイルで指定されたフォルダにあるファイル名(例:abbccc)を取得
2.ファイル名を分解(例:a bb ccc)
3.msdnの行にadoを使ってインサートする(例:a bb cccとフィールドを分けて)
0905デフォルトの名無しさん
NGNGスレ治外。
0906デフォルトの名無しさん
NGNGmsdnにadoでインサートするのはMFCじゃ無くても無理だろうなあと。
0907デフォルトの名無しさん
NGNGデフォルトの引数を設定して、一番最後の引数の型をLPCTSTRにして
デフォルト値=NULL にすると宣言と定義が違うという旨のダイアログが
出て実際に定義の部分の引数部分が削られてしまうのですが、これって
どういうことなんでしょうか?
手動で直すとClassViewの該当関数をダブルクリックしても、ソースの
該当関数部分にジャンプしなくなって「インプリメンテーションが見つからない」
なんて警告されます。
class CTest{
CTest();
~CTest();
BOOL SetData(DWORD dwData=0, LPCTSTR pStrName=NULL); ←コレ
protected:
DWORD m_dwData;
CString m_strName;
};
BOOL CTest::SetData(DWORD dwData) ←宣言と異なる
{
m_dwData=dwData;
if(pStrName==NULL)
m_strName="";
else
m_strName=pStrName;
return TRUE;
}
0908デフォルトの名無しさん
NGNGバージョンくらい書こうや。
0909デフォルトの名無しさん
NGNGすみません。VCのですよね。
VisualC++Ver6、サービスパックもVer6です。
ちなみにconst char * に置き換えると直るには直るのですが
これ(宣言と定義で違うようにすること)は一体どういう意図なのかがわからないです
0910デフォルトの名無しさん
NGNGVC.NETじゃちゃんと同じになるんだけど・・・
0911デフォルトの名無しさん
NGNGウィザードで作った後、手作業でデフォルト引数書くとかするしかないんじゃないかなぁ。
デフォルト引数のある関数にジャンプしないのは俺もよくある。
近くの関数にジャンプしてからスクロール…っていつもしてる。
こういう仕様なんだとあきらめてるよ。
0912デフォルトの名無しさん
NGNG同じ環境でやってみたけど、CLASS VIEWがおかしいみたい。
コンパイルは通る。
0913デフォルトの名無しさん
NGNG見た目が破損しててもコンパイル・ビルド作業への影響は一切ない。
0915デフォルトの名無しさん
NGNG削除したくて、Trimで色々やってみたのですが、うまいこといきません、
教えてエロイ人。
0916915
NGNGで、解決しました・・・。
Trimに拘った、私が悪かったみたいです。
ご迷惑おかけしました〜。
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNG2バイト文字が考慮されないっていうやつだろ、多分。
0920デフォルトの名無しさん
NGNGMFCはじめたばかりの初心者です。
質問ですが、ウインドウの背景を画像ファイルとして保存するにはどうすればいいのでしょうか。
いろいろ調べたのですが結局分かりませんでした。
環境はこのとおりです
OS:WindowsXP SP1
VC++.NET 2003
お願いします。どなたか教えてください。
0921デフォルトの名無しさん
NGNG読み出しなら ::LoadImage でできるが
書き込みのサポートはないから、思いっきり自力で書くことになる。
http://pc5.2ch.net/test/read.cgi/tech/1092524669/883-
0922デフォルトの名無しさん
NGNGCImageにアタッチすれば、CImage::Save()で保存出来るよ。
今ホットなGDI+を使うことになるけど。
0923デフォルトの名無しさん
NGNGありがとうございました m(_ _)m
0924デフォルトの名無しさん
NGNG作成したコントロールはVBでFormなどに貼り付けて使う予定です.
コントロールは実行時に他のDLLやファイルなどを読み込む必要があり,
ターゲットとなるexeのカレントパスを取得してファイルなどを読み込む処理を
コントロールのクラスのOnCreateメソッド(?)に書きました.
しかし,OnCreateではVBなどでコントロールをFormに貼り付けた時点で
実行されてしまうため,実行時のexeのパスを取得する部分を利用して
ファイルなどを読み込む処理でエラーが起きてしまいます.
プログラムが実行されるときに
一度だけ処理されるメソッドやイベントはあるば教えて頂きたいのですが.
環境 VC6.0 VB6.0 WinXP
0925デフォルトの名無しさん
NGNGDllMain()でやればいいんじゃないの。
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNGnew演算子で確保したメモリ領域を解放する処理は明示的に行っているんですが、
デバッグ版⇒CWinApp::Exitinstanceが実行される前に(明示的記述したタイミングで)、
メモリ解放処理が完了する。
リリース版⇒CWinApp::Exitinstanceが実行された後に、メモリ解放処理が完了する。
上記のような動きをしているみたいなんです。
メモリ解放処理後に、終了コードを各プロセスを管理しているプロセスに通知しているため
リリース版では管理プロセスが終了コードを受信した時にも、
対象のプロセスが動き続けていることになってしまいます。
こんな現象に関してご存知の方いらっしゃいましたらぜひご教授をお願いします。
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNGソース読んでみれば?
0932デフォルトの名無しさん
NGNGデバッグ版 DEBUG_NEW を定義せず
リリース版 最適化全てオフ
でテストしてみそ
0933デフォルトの名無しさん
NGNGする事はありますか?
0934デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNGあるらしい
>>934
メッセージにも優先順位があるらしく、マウスイベントが
他のイベントより優先される場合もあるらしいよ
0936デフォルトの名無しさん
NGNGマウスイベントはメッセージキューを通らないで直接ウィンドウプロシージャへ行くメッセージじゃないか?
0937デフォルトの名無しさん
NGNGそうかも
「PostMessageでは試したことないけど」って言うの忘れた
0938933
NGNG同じ系統のメッセージの順番のみが問題ですんで、他のメッセージの割り込みは問題にならないです。
とりあえず大丈夫なものとしてやってみます
0939デフォルトの名無しさん
NGNGへ?
0940デフォルトの名無しさん
NGNGこのBITMAPINFOとビットマップの高さが増すにつれパレット番号を増加させるデータをもちいて
CreateDIBitmapにセットしてグラデーションのビットマップを作りました。(作ったつもり。)
これをメモリデバイスコンテキストでSelectObjectしてからディスプレイ(24bit)のDCにBitBltしたのですが、
この場合256カラー(パレットあり)を変換して24bitカラーのビットマップになってくれるとおもったのですが
どうもパレットデータはシステム内部のものをつかって描画してるっぽいんですがなぜですか?
そういうものですか?
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGHINSTANCE hInst;
hInst = LoadLibrary("Graphics.dll");
HBITMAP hBitmap;
hBitmap = LoadBitmap(hInst, "IDB_BITMAP1");
とやっても、hBitmap == NULLになってしまってビットマップを読み込めません。
僕のどこが間違ってるんでしょうか。
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG全体的に間違ってると思います。1行目とか。
その DLL には本当に "IDB_BITMAP1" というビットマップが入ってますか?
MAKEINTRESOURCE(IDB_BITMAP)の間違いではないのですか?
0945デフォルトの名無しさん
NGNG1行目書きなおしたら変になってしまいました
自分で作ったDLLなんで IDB_BITMAP1 が入ってるのは間違いないはずなんですが、どうもそれだと読みこめなかったみたいで、
MAKEINTRESOURCE(1000);
と直接リソースIDで指定してもう一度やってみたら読み込めました。
なんでこれだとできるのか分かりませんが、とりあえず解決したみたいです。ありがとうございました。
0946デフォルトの名無しさん
NGNGそれがわかるまで先に進むな
一歩たりとも
0947デフォルトの名無しさん
NGNGMFCなんか嫌いだぁ
>>933
キューの中では順序通りでも PeekMessage で優先して取り出せるでしょ
DispatchMessageが中で何してるかは知るか。
>>940
パレットは別に CreatePaletteとSelectObjectでセットするんだったような
GDI+への対応はいつになるんだ?
>>945
まず無理だろうが、Graphics.dllのソースの中にある resource.h をインクルードしてみるといい。
これがMFCというやつだ。
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG断言していい。
入ってない。
そういうあいまいな認識でコード書くと周りに甚大な被害を及ぼすからやめてくれ。
>>947
引っ込め。
0950デフォルトの名無しさん
NGNGこれほど的外れな回答も珍しいな。
0951デフォルトの名無しさん
NGNGどうも一回目は保存されなく2回目から保存されます。
いろいろと設定しているですがうまくいきません
どなたか教えてくださいませ
ソフト visualstadio 6.0
OS win xp
ビットマップインフォを作成する
DDBを作成してウィンドウからビットマップをコピー
メモリ割り当ててビットマップからデータを取得
ビットマップファイルヘッダーを作成
データをファイルへセーブ の手順でやっています
hfile = CreateFile(fn,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
WriteFile(hfile ,&bmfh,sizeof(bmfh),&tmp,NULL);
WriteFile(hfile,&pbmi->bmiHeader,sizeof(pbmi->bmiHeader),&tmp,NULL);
if(pbmi->bmiHeader.biBitCount <= 8)
{
WriteFile(hfile,pbmi->bmiColors,sizeof(COLORREF)*(1<<pbmi->bmiHeader.biBitCount),&tmp,NULL);
}
SetFilePointer(hfile,bmfh.bfOffBits,NULL,FILE_BEGIN);
WriteFile(hfile,pbits,pbmi->bmiHeader.biSizeImage,&tmp,NULL);
CloseHandle(hfile);
0952デフォルトの名無しさん
NGNGオススメの書籍等あれば教えていただけませんでしょうか?
0953デフォルトの名無しさん
NGNG・1回目に保存処理が走っているのか確認
・各APIの戻り値を確認
0954デフォルトの名無しさん
NGNGこれ?
レス数が950を超えています。1000を超えると書き込みができなくなります。