mfc-ml

2001年02月

28

[mfc 29035] CoInitialize/UnInitialize について

ふくながです。よろしくお願いします。

(質問)----------------------
COMサーバを利用する際、CoInitializeで初期化/
CoUnInitializeでクローズしますが、これは、
そのクライアントで利用するすべてのCOMに適用
できるものなのでしょうか?

それともクライアントで複数のCOMを使う場合、
COMごとにCoInitializeするのでしょうか?
(だとすると、COMを識別するパラメータなどは
あるんでしょうか?)
------------------------------

これらについては、「クライアント内でCOMをロード
するスレッド」がコールし、

    CoInitialize -> STAが作られる
    CoInitializeEx -> COINIT_APARTMENTTHREADED 
                などの指定に従う

というように理解していますが、だとすると、
1つのCOMに対して、どのようなスレッドモデルを提供
するか、ということを決定する関数なのかと・・。
(=COMごとに使う?)

教えてください。
28

[mfc 29034] Re: 壁紙の設定について

> 松尾 隆史 様、いつもお世話になります。


> まず、m_pBitsの中にBITMAPFILEHEADERやら BITMAPINFOHEADERは含まれていますか?
> 含まれていないのではないですか?
> そうなると、その部分の書込みは自前でしないと駄目なのでは?

// 書き込み用バッファのサイズ計算
dwFSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)
                  +4*cinfo.output_width*cinfo.output_height;
bfh.bfType = 'M'*256+'B';
bfh.bfSize = dwFSize;
bfh.bfReserved1 = 0;
bfh.bfReserved2 = 0;
bfh.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)
                      +sizeof(RGBQUAD);
としてみました。でもこれが正しいかどうか分かりません。

> あと、思うに、cinfo.output_widthが4バイトバウンダリしていないのではと
> 思いますが、いかかがですか?

すいません、4バイトバウンダリってなんですか?意味が分かりません。
教えてください。お願いします。
   
28

[mfc 29033] Re: ダイアログベースアプリで起動時のウィンドウを非表示にする方法

Bunといいます。

岳電さんのMSG
> ダイアログベースアプリケーションを作成しているのですが、
> 最初の非表示の部分がうまくいきません。

最小化で起動する。
BOOL CxxxDlg::OnInitDialog() 
{
   CDialog::OnInitDialog();
   ModifyStyle( 0, WS_MINIMIZE );
   return TRUE;
}


OnPaint()内で ShowWindow(SW_HIDE); する
(起動時にちらっと見えてしまうが・・・)  
void CxxxDlg::OnPaint() 
{
 ShowWindow(SW_HIDE);
  .
  .
  .
}
どちらもいまいちでしょうか?
28

[mfc 29032] Re: ちょっと変わったリソースの切替えについての質問

T_Iyetakeです。

Written by 海保達洋/Tatsuhiro Kaiho
>当初OSのロケールによって英語/日本語の切替えで
アプリケーションの運用予定動作環境は
Windows2000Proの英語版ですか?

>開発終了間際で日本語OSでも英語表示を可能に
私の場合、”日本語版”のWindows2000上では
ロケール変更による英語/日本語のリソース切替えが使えなくて
困っているのですが・・・
#いくら探しても解決策が見つからなかった。現在も調査中。
ちなみに私のメイン開発環境は
Windows2000Pro日本語版&VC++6.0+SP4
です。

Windows2000日本語版でも切替できるんでしょうか?
文面からすると、海保達洋さんの作ったアプリケーションは
可能であるように読み取れるんですが、実際切替できたのでしょうか?
もしできたのであれば、その手法をお教え願えませんでしょうか?
#他にご存知の方おられます?
#WindowsNTでは、これでOKなんですが・・・

で、私がとった解決策としては、
各言語ごとにリソースをDLL化して、アプリ起動時にロケールを識別、
それに対応する言語リソース(DLL)をロードする手法をとりました。
ロケール切替なしで言語リソースを指定できる版は
起動時にINIファイルから言語リソースフラグを読みとって、
指定言語リソース(DLL)をロードするように変更しました。
#これを使うとロケール変更が不要になる。

>ちょっとした修正だけで実現する方法をご存知の方
>対処法教えてください。
ちょっとした修正では無理と思いますが・・・

上記のDLL化は割と簡単にできると思いますけど、どうでしょう?
リソースのみのDLL化や読み込む方法は
MSDNやHPに載っているので、自分で検索してみてください。

もっといい方法をご存知の方がいらっしゃれば
私も是非知りたいので、ご教授お願いします。

ps
>その他のアプリケーションも英語になってしまいます。
ところで、ロケール切替で英語になるアプリケーションって
そんなにあるんでしょうか?
28

[mfc 29031] Re: CFileFind の検索順について

Suwadaです。
DENCYUさん回答ありがとうございます。

> >ワイルドカードを使ってファイルを検索する場合、
> >検索される順番は現在のところ名前順になっています。
> >偶然名前の昇順に検索されているのでしょうか?
>  偶然名前の昇順になったのでしょう。findfirst系の場合FAT等のテーブルに
> 格納されている順番が帰ってきます。

という事は、自分でソートをかけないと駄目という事ですね。
ソートして検索できるのなんて無いですよね...。
了解です。どうもありがとうございました。
記事検索
Amazon.co.jp
  • ライブドアブログ