DLLにビットマップ

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
メッセージ
作成者
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#16 投稿記事 by イグトランス »

とりあえずここまでの流れを全く読まずに書きます。

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

参考
http://yokohama.cool.ne.jp/chokuto/uraw ... barEx.html
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

#17 投稿記事 by Tomorrow »

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

http://yokohama.cool.ne.jp/chokuto/uraw ... barEx.html
↑によると第6引数はビットマップハンドルでもOKみたいですよ。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#18 投稿記事 by 7 »

丁度覗いてみたら絶妙な回答が...同時刻に...そして自分も丁度覗きました。

第5引数をNULLにすることで第6引数にはGetSampleBmp()関数の戻り値を指定することができるんですね。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#19 投稿記事 by 7 »

> 第5引数をNULLにすることで第6引数にはGetSampleBmp()関数の戻り値を指定することができるんですね。
よく考えてみたら、DLLのインスタンスハンドルを第5引数に渡して第6引数にリソースIDを値で指定してもよさそうですね。
雷電

#20 投稿記事 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)
);
を書くというのですか?
雷電

#21 投稿記事 by 雷電 »

もう少し詳しく教えていただけませんか?
できれば、コードも書いてほしいのですが。。。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#22 投稿記事 by 7 »

> ということは?どうなるんですか?
> 中略
> を書くというのですか?
どうしてそう思ったのか書いて頂けると雷電さんのActiveBasicに対する根本的な勘違い?を解消できるように思います。

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

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

#23 投稿記事 by 雷電 »

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

#24 投稿記事 by 雷電 »

それと、よくわからないんですが、またクイズ形式で答えを導かせてください。お願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#25 投稿記事 by 7 »

どうしてそう思ったのか、の、そう、とは雷電さんが下のコードを書こうと思った理由なんですけどね...。 どこから引っ張ってきたのか分かりませんが、これはこのまま書いても動きません。
このまま書くつもりで載せた訳じゃないなら、失礼しました。

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

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

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

メールをくれないとDLLを転送しないという部分からの推測なのですが、特定の人物しかプログラムを動かせないようにしたいのでしょうか?
また、ビットマップとCreateToolbarEx()関数の件ですが、分かってもらえたでしょうか。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#26 投稿記事 by イグトランス »

そもそも雷電さんは少々高望みしすぎなのではないでしょうか。
身の丈に応じたこと,或いはそれから少し背伸びすることを繰り返していくほうが上達へつながり,
やりたいことを実現する近道だと思います。

急がば回れ,です。
ゲスト

#27 投稿記事 by ゲスト »

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

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

#28 投稿記事 by 雷電 »

名前抜けてました。
投稿者:雷電です。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#29 投稿記事 by 7 »

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

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

#30 投稿記事 by 雷電 »

そのほうがいいかもしれませんね。
納得です。
それなら、話題が変わるので、新しいトピックを作っておきます。
それと、このサイト内で、調べてみます。
返信する