FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ひさびさにはまった

MFCでDebugでビルドするとちゃんと動くのに、Releaseでビルドすると
ボタンを押したとたんにアプリケーションエラーで落ちる現象にあたってしまい
久々にはまりました。

場所を追ってみるとフレームワークに戻ってエラーになっているみたいで、
Releaseだと追って行けないので、余計なものをどんどん削っていきながら
最小の機能でエラーがでるまで追っていきました。
そうするとなんと、テンプレートから作成して、当該のコードをいれたものでも、
発生してしまいました。
ネットで調べてもそんなエラーの報告はないみたいです。
要するに入れたコードが何かまずいことをしているはずだと思って
調べていくと、やっとわかりました。

それは、フレームワークから呼ばれる関数の形式が
void XXXX();
でないといけないのに、
void XXXX(UINT);
にしていたということです。
わかってしまえば、こんな不注意なことを!ということなんですが、
やっている最中はわからないもんですね。

スポンサーサイト

MFCのCFileDialogで複数のファイルを選択

MFCのCFileDialogで複数のファイルを選択しようとして
なぜか少ないファイルしか選択できないという現象になりました。

原因は、CFileDialogのm_ofnの持つバッファが少ないために、
たくさん選択するとエラーになってしまうというものでした。
コードとしては

CFileDialog dlg(TRUE, NULL, NULL,
OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,
_T("すべてのファイル(*.*)|*.*||"));
dlg.m_ofn.nMaxFile = 1024*1024;
char *szFileNameBuffer = (char*)calloc(dlg.m_ofn.nMaxFile, 1);
dlg.m_ofn.lpstrFile = szFileNameBuffer;
if(dlg.DoModal() == IDOK)
{
POSITION pos = dlg.GetStartPosition();
while(pos)
{
AfxMessageBox(dlg.GetNextPathName(pos));
}
}
free(szFileNameBuffer);

のような感じにすればいいようです。

でも、普通はCFileDialogのdlg.DoModal()のなかで、足りなければ
内部で増やして返すような仕組みでできないもんですかね。

チャベリから直接取得するのは

チャベリ誰がいたのデータは、チャベリ裏口さんや、チャベリサーチさんから
取得するようにしているのですが、
チャベリ裏口さんは時々調子が悪くなったり、
チャベリサーチさんは一回の取得に25アクセスしないといけないので、
サーバに負荷がかかって迷惑かけるかな思っているので、
チャベリから直接取得する方法はないものかと思い、調べてみました。
まあ、細かくはかけないのですが、Socket接続していろいろすると
入室者の一覧くらいはとれるんですね。
とりあえず、チャベリから直接取得するようなスクリプトは途中まで書きましたが
いまはまだ使わないでおこうと思っています。

http://chattera.net/
http://chattera.net/chaberilist.php
プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。