■MFC相談室 mfc21d.dll■ at TECH
[2ch|▼Menu]
295:デフォルトの名無しさん
10/01/05 08:20:54
VC6から2008に以降したら文字列でえらい苦労した。
出来上がったソフトを他のPCで動かそうとしたら起動せず、
イベントログでSideBySideエラーになっていた。
他の人に送ったらマニフェストがどうたらこうたらとか・・・
わけわかんないのでもう一台のPCでコンパイルしようとしたらエラーが出る。
そうか、ExpressにはMFCが入っていないんだね。

最近、自分が浦島太郎に思えることが多いですよ・・・

296:デフォルトの名無しさん
10/01/05 11:41:56
MFC付きの有料のを買えばいいだけですよ。

297:デフォルトの名無しさん
10/01/05 19:12:30
VC6のランタイムはXP以降ならOS標準で入っているからな。
まあ2008の場合はWinSxSへのコピーのみでマニフェストでアクセス、
という今までと違う変則的な方法だから解り難くてもしようがない。
不評だったのか、2010ではシステムフォルダにもコピーされる仕様に戻るらしい。

298:デフォルトの名無しさん
10/01/06 09:16:31
VC2008でMFCダイアログベースなどのプロジェクトを作ると、
メッセージマップのところに
//}}AFX_MSG_MAP
というものが入っているのですが(閉じるほうのみ)、
これってVC6などでClassWizardのために入っていたものですよね?
VC2008でもなにか意味のあるものなのでしょうか?
それともテンプレートの残骸?

299:デフォルトの名無しさん
10/01/06 10:02:34
ISAPIフィルタでレスポンスの内容を編集したく
OnSendRawData()ではレスポンスを返さないようにするために
pRawData->cbInData = (DWORD)0;
pRawData->cbInBuffer = (DWORD)0;
として
OnEndOfRequest()で
pfc->WriteClient()
で編集した内容を返そうとしています。
しかし、OnSendRawData()で
pRawData->cbInData = (DWORD)0;
pRawData->cbInBuffer = (DWORD)0;
を入れるとOnEndOfRequest()でWriteClient()をしてもレスポンスが
返されません。
なぜこのような結果になるのでしょうか?


300:299
10/01/06 10:11:46
わかりました。
WriteClient()を呼ぶとOnSendRawData()が発生するんですね。

301:デフォルトの名無しさん
10/01/25 14:38:28
CInternetSessionのメンバの
GetFtpConnectionとかでタイムアウトを設定できないでしょうか?



302:デフォルトの名無しさん
10/01/25 23:15:39
試したことないから知らんけど設定自体はあるね

303:デフォルトの名無しさん
10/02/03 01:38:21
ミューテックスオブジェクトについて、質問です。
環境は、VC6でMFCダイアログベースです。

2つのアプリケーションAとBを作っているのですが、
以下の処理をそれぞれ追加します。
A:ボタン押下でBをミューテックスオブジェクトを使って排他的に呼出す。
B:ミューテックスオブジェクトを保持。

@Aにあるボタン押下でBだけは呼出せたのですが、ミューテックスオブジェクトを
使って排他的な呼出し方にする方法が分かりません。
ABでミューテックスオブジェクトを保持する方法が分かりません。

自アプリケーション の2重起動禁止の場合、CreateMutexを使っていたのですが、
上記の場合、AとBをどのようにすればいいでしょうか?どなたか宜しくお願いします。

304:デフォルトの名無しさん
10/02/03 08:01:24
>>303
Aからボタン押下でBを起動、
ただし以前Aから起動した事のあるBが残っている場合は
新たに起動はしない、ってことでOK?
そういうのだったら、B起動時にそのプロセスハンドルを残しておいて、
次のボタン押下時にGetExitCodeProcessで以前起動したプロセスが終了したか確認、とか。
手動でならBを複数起動できる、という必要性がないならBの二重起動禁止で十分だけど。

305:デフォルトの名無しさん
10/02/03 10:08:47
CStringArrayのシリアライズ化で、ファイル保存はできたのですが、
これを読み込んでCStringArrayに再格納できませんでした。どのようにすればいいのでしょうか?


//シリアライズ
CStringArray aBuf;

aBuf.Add( _T("aaa") );
aBuf.Add( _T("bbb") );
aBuf.Add( _T("ccc") );

CFile f;
BOOL bRet = f.Open( _T("hoge.txt"), CFile::modeCreate | CFile::modeWrite );
if( bRet == FALSE) {
return true;
}
// アーカイブを作成
CArchive ar( &f, CArchive::store );
TRY {
aBuf.Serialize( ar );
}
CATCH_ALL(e) {
ar.Close();
f.Close();
return 0;
}

306:デフォルトの名無しさん
10/02/03 11:52:32
>>305
読み込むほうのソースを出さないと誰もわからない。

307:305
10/02/03 15:41:45
>>306

失礼しました。
サンプルをみて書いたのですが、以下のコードになります。


try{
CStringArray m_saMyArray;
CFile in(_T("hoge.txt"), CFile::modeRead);
CArchive ar(&in, CArchive::load);
CString buffer;
m_saMyArray.SetSize(0);
for(int i = 0; ar.ReadString(buffer); i++) {
m_saMyArray.Add(buffer);
}
ar.Close();
in.Close();
} catch(CFileException e)
{
AfxMessageBox(_T("Read Error !!"));
}

ar.ReadString(buffer)で bufferにすべてのデータが格納されました。
根本的に、読込み方法が間違っているのでしょうか?
ご教授おねがいしますm(_ _)m

308:デフォルトの名無しさん
10/02/03 16:25:07
>>307
CStringArray::Serialize()で保存したものは
CStringArray::Serialize()で読み込まないとダメ。

> CString buffer;
> m_saMyArray.SetSize(0);
> for(int i = 0; ar.ReadString(buffer); i++) {
> m_saMyArray.Add(buffer);
> }

m_saMyArray.Serialize(ar);

309:305
10/02/03 18:14:02
>> 308

ありがとうございます(><
ためしてみます。。

310:303
10/02/05 21:42:09
>>304
GetExitCodeProcessを使ってやってみます。
ありがとうございました。

311:デフォルトの名無しさん
10/02/06 13:24:05
CToolBarのボタンのイメージはリソースからしか設定できないみたいなんですが、
iconファイル(拡張子ico)を読み込んでイメージを設定する方法ってありますか?
サイトアイコン(favicon.ico)をダウンロードして、動的にツールバーボタンにイメージ登録するようなことがやりたいのです。

312:デフォルトの名無しさん
10/02/06 14:06:52
>>311の件の自己レスです。
icoファイルから読み込む方法は下記のようにできることが分かりました。

HICON hIcon;
ICONINFO iconinfo;
ExtractIconEx(_T("favicon.ico"), 0, NULL, &hIcon, 1);
GetIconInfo(hIcon, &iconinfo);
m_toolbar.SetBitmap(iconinfo.hbmColor);
DestroyIcon(hIcon);

しかしこれでは1種類のアイコンイメージしか使えません。
複数のイメージを使いたい場合は、横方向に連結した1個のbitmapを作る必要があるようです。
どうやって連結するかはまだ分かりませんが、ものすごい不便ですね。

313:デフォルトの名無しさん
10/02/06 15:36:47
コントロールは汎用的に作られてるから
気に入らなかったら自作すればいい。

314:デフォルトの名無しさん
10/02/06 15:45:38
TBBUTTON配列受け取るAddButtons()とかなかったっけ?CToolBarCtrlだったか?

315:デフォルトの名無しさん
10/02/06 18:02:15
>>314
CToolBarCtrlというのがあったんですか。
これだとAddBitmap()で1個ずつ追加できそうですね。
ありがとうございました。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4331日前に更新/103 KB
担当:undef