ページ 22

Posted: 2006年3月14日(火) 00:23
by イグトランス
とりあえずここまでの流れを全く読まずに書きます。

> CreateToolbarEx()関数の第6引数にはビットマップのリソースIDを指定するんですよね。ビットマップのハンドルだと勘違いしてたので面倒臭くなってきました...。
第5引数がNULLなら第6引数はビットマップハンドルを指定できるようです。
逆に第5引数が適切なインスタンスハンドルを指していれば,第6引数はIDとなるようです。

参考
http://yokohama.cool.ne.jp/chokuto/uraw ... barEx.html

Posted: 2006年3月14日(火) 00:26
by Tomorrow
> CreateToolbarEx()関数の第6引数にはビットマップのリソースIDを指定するんですよね。ビットマップのハンドルだと勘違いしてたので面倒臭くなってきました...。

http://yokohama.cool.ne.jp/chokuto/uraw ... barEx.html
↑によると第6引数はビットマップハンドルでもOKみたいですよ。

Posted: 2006年3月14日(火) 00:33
by 7
丁度覗いてみたら絶妙な回答が...同時刻に...そして自分も丁度覗きました。

第5引数をNULLにすることで第6引数にはGetSampleBmp()関数の戻り値を指定することができるんですね。

Posted: 2006年3月14日(火) 15:05
by 7
> 第5引数をNULLにすることで第6引数にはGetSampleBmp()関数の戻り値を指定することができるんですね。
よく考えてみたら、DLLのインスタンスハンドルを第5引数に渡して第6引数にリソースIDを値で指定してもよさそうですね。

Posted: 2006年3月14日(火) 17:38
by 雷電
ということは?どうなるんですか?

コード: 全て選択

HWND CreateToolbarEx(
    HWND  hwnd,           // 親ウィンドウのハンドル
    DWORD dwStyle,        // ウィンドウスタイル
    UINT  uID,            // コントロールID
    int   nBitmaps,       // ビットマップの数
    HINSTANCE  hBMInst,   // モジュールハンドル
    UINT  uBMID,          // リソースIDまたはビットマップハンドル
    LPCTBBUTTON pButtons, // TBBUTTON構造体
    int   nNumButtons,    // ボタンの数
    int   dxButton,       // ボタンのxサイズ
    int   dyButton,       // ボタンのyサイズ
    int   dxBitmap,       // ビットマップのxサイズ
    int   dyBitmap,       // ビットマップのyサイズ
    UINT  uStructSize     // TBBUTTON構造体のサイズ(=20)
);
を書くというのですか?

Posted: 2006年3月14日(火) 19:04
by 雷電
もう少し詳しく教えていただけませんか?
できれば、コードも書いてほしいのですが。。。

Posted: 2006年3月14日(火) 20:32
by 7
> ということは?どうなるんですか?
> 中略
> を書くというのですか?
どうしてそう思ったのか書いて頂けると雷電さんのActiveBasicに対する根本的な勘違い?を解消できるように思います。

> もう少し詳しく教えていただけませんか?
ツールバーを作る時にCreateToolbarEx()関数を使っているはずですが、第5引数にNULLを指定して第6引数にはビットマップのハンドルを指定するだけです。
※他の引数は何も指定しなくていいという意味ではありません

GetSampleBmp()関数の戻り値をHBITMAP型グローバル変数に代入し、その変数をCreateToolbarEx()関数の第6引数に指定してやればいいはずです。
プログラムを終了する時には、DeleteObject()関数にHBITMAP型グローバル変数を指定してやって、ビットマップのハンドルを解放する必要があります。

Posted: 2006年3月14日(火) 21:09
by 雷電
ただ単に、DLLから呼び出してツールバーを表示するわけですが、DLLがないと、プログラムは動かないことに気がつきました。だからDLLとEXEを分離して、メールで私(雷電)にメールをくれないとDLLを転送しないという風にしようとしているのですが、何かおかしいですか?

Posted: 2006年3月14日(火) 21:17
by 雷電
それと、よくわからないんですが、またクイズ形式で答えを導かせてください。お願いします。

Posted: 2006年3月14日(火) 22:37
by 7
どうしてそう思ったのか、の、そう、とは雷電さんが下のコードを書こうと思った理由なんですけどね...。 どこから引っ張ってきたのか分かりませんが、これはこのまま書いても動きません。
このまま書くつもりで載せた訳じゃないなら、失礼しました。

> DLLがないと、プログラムは動かないことに気がつきました。
はい。これは当たり前ですね。

> だからDLLとEXEを分離して、
DLLがないと動かないのは仕方のないことです。
普通のユーザーが故意にDLLを破棄するとはあまり思えないのでDLLがない状態もなかなか起こらないと思いますけど、それが嫌なら初めからDLLとEXEに分離しなければいいのではないでしょうか。

> メールをくれないとDLLを転送しないという風にしようとしているのですが、何かおかしいですか?
そんな風にしようと思っても、さっきのコードには行き着きません。

メールをくれないとDLLを転送しないという部分からの推測なのですが、特定の人物しかプログラムを動かせないようにしたいのでしょうか?
また、ビットマップとCreateToolbarEx()関数の件ですが、分かってもらえたでしょうか。

Posted: 2006年3月14日(火) 22:54
by イグトランス
そもそも雷電さんは少々高望みしすぎなのではないでしょうか。
身の丈に応じたこと,或いはそれから少し背伸びすることを繰り返していくほうが上達へつながり,
やりたいことを実現する近道だと思います。

急がば回れ,です。

Posted: 2006年3月15日(水) 18:22
by ゲスト
> どうしてそう思ったのか、の、そう、とは雷電さんが下のコードを書こうと思った理由なんですけどね...。
>中略
> どこから引っ張ってきたのか分かりませんが、これはこのまま書いても動きません。
> このまま書くつもりで載せた訳じゃないなら、失礼しました。
>
このまま書くつもりはありませんでした。
> メールをくれないとDLLを転送しないという部分からの推測なのですが、特定の人物しかプログラムを動かせないようにしたいのでしょうか?
そのとおりです。

> また、ビットマップとCreateToolbarEx()関数の件ですが、分かってもらえたでしょうか。
うーん、まだよくわかりません。
Creatでやろうとしても、ユーザー側の読み込むほうもおかしくなってしまいます。

Posted: 2006年3月15日(水) 19:10
by 雷電
名前抜けてました。
投稿者:雷電です。

Posted: 2006年3月15日(水) 21:11
by 7
> > 特定の人物しかプログラムを動かせないようにしたいのでしょうか?
> そのとおりです。
それならパスワードを付けたらどうでしょう。
プログラム起動時にパスワードを入力してもらう為のモーダルダイアログを表示させて。DLLとEXEに分ける手間が省けます。

> Creatでやろうとしても、ユーザー側の読み込むほうもおかしくなってしまいます。
よく分かりません。

Posted: 2006年3月16日(木) 13:24
by 雷電
そのほうがいいかもしれませんね。
納得です。
それなら、話題が変わるので、新しいトピックを作っておきます。
それと、このサイト内で、調べてみます。