mcrblog

vcpp-ml

1999年02月

26

[vcpp 00026566] Re:bitmapのフェードイン、フェードアウト処理(お礼?)

カワハラ@かっとびです。

Bitmapのフェードイン・フェードアウト処理についての近況報告とお礼です。

・RasterOperationCodeに0x00CA0749hを与えると実現できる。
というヒントを頂いた。

まず、RasterOperationにHexadecimal値を入れると言う辺りでひるむ。
SRCCOPYとかみたいな文字列なら解るんだが・・・と。1日

取り敢えずBitBltのヘルプとWingdi.hを覗いてみる・・・。
さっぱり解らん。複数の指定の組み合わせかな?と色々悩むこと2日。

BitBltのHELPをもう一度見る。なんかWin32ProgrammersRef.の
Appendixにヒントがあるようだ。と覗いてみる。英語だ・・・。泣く。

1日検討違いな検索をして2日目にTernary...を言う項目を覗く。
どうやらビンゴ臭い。Boolian... in reverser polishってなんだろ?

寝たら逆ポーランドだと気付く。DPSDxaxだから・・・。
((Src XOR Dst)AND P)XOR DST)・・・かなぁ。
恐らくブラシの値をぐりぐりしながら描画すれば出来そうかな?
会社の業務だったら明らかにハッ倒されそうな工程ですが・・・。
自分なりに考えた指針はこんな感じです。如何でしょう?
勘違いなど指摘ありましたらよろしくお願いします。
まだコーディングしてないので中途半端な感じで恐縮ですが・・・。

救いの手を差し伸べて頂いたTOM7さん、どうもありがとうございます。

しかし、この手のドキュメントことごとく英語なんですが・・・。
解り易い日本語のドキュメントってあるのでしょうか?

それでは、また。
25

[vcpp 00026501] Re: 動的なポップアップメニューの作成について

斉藤@ISBです。


>関田@in札幌 です。
>
各メニューアイテムとの対応付けはどのようにすれば良いのでしょうか?
>

AppendMenu や InsertMenu 時に渡すコマンドIDを元に判定
されてはどうでしょう?

例えば、map 等にコマンドIDと抽象ベースクラスのポインタを
AppendMenu や InsertMenu 時に格納し、OnCommand等で
取り出して、関数を実行するというのは駄目でしょうか?

ただし、この方法だと処理分の派生クラスが必要なので、
クラス数が増えてしまうと言う難点が...

例)

class CItem
{
public:
 virtual void Execute() = 0;
}

class CManyItem : CItem
{
public:
 virtual void Execute()
 {
  // 実行したい処理を記述
 }
}

BOOL CWindow::OnComannd(...)
{
 CItem* pcItem;
 if ((pcItem = m_cpMenu->Find(wParam/*コマンドID*/)) != NULL)
 {
  pcItem->Execute(); // 派生クラスでオーバーライド
 }
}

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)アイ・エス・ビー 府中システムセンター
斉藤 貴博 E-Mail:s...@fuchu.isb.co.jp
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
25

[vcpp 00026500] Re: CHtmlViewとLZWライセンス

Mikio Uranoさんが99.2.25 4:17 PMに書きました:

>これって、該当のDLL(mshtml.dll,shdoc.vw.dllあたり?)やIE4を
>再配布した場合のことじゃないでしょうか?
>
>「これらがインストールされている環境で動かしてね」というだけなら
>ライセンスは要らないのでは?
snip
>これはそのライブラリをリンクしたコードを出荷(再配布)したわけですよね。
>別の話ではないでしょうか?


日本ユニシスのWebサイト(http://www.unisys.co.jp/LZW/index.html)に
以下の文章があります。

「LZW圧縮アルゴリズムのライセンスについて」より引用

>その他、ユーザの方がソフトウェアを開発されるためにLZWを利用した
>開発ツールを利用する場合があり、当該開発ツールをご利用される過程で
>LZWを利用する機能が開発されるソフトウェアに組み込まれる可能性が考えられます。
>この場合は、開発ツールのユーザの方であっても、開発および開発される
>ソフトウェアの配布について、米国UNISYS社との間でライセンス契約を締
>結頂く必要があります。

わざとわかりにくく書いたのではないかと思えるような文章ですが、一緒に配付
するかどうかは問題ではなくて、そのアプリケーションが結果としてLZWを利用
する機能を持つかどうか、だと判断したのですが、どう思いますか?

---
ローラン株式会社 三上公明
Tomoaki Mikami 
Rolan, Inc.  System Division.
4398 2C83 90DF A9E9 1C18  4185 5F76 4CA4 E375 5E33
24

[vcpp 00026387] ダイアログの残骸

はじめまして、VC++を勉強しながらこのMLを読ませて頂いてます
Fujimoto@sok です

ダイアログのアプリケーションを作成したのですが
終了した後、ダイアログの背景が残ってしまうという現象にぶつかっています
発生する条件は不定で...コンピュータの負荷が低ければちゃんと消えるようです

WM_CLOSE、WM_QUIT、DestroyWindowあたりの処理に細工をすれば
うまく消せるような気もするのですが...
SW_HIDE指定で消そうとしたりもしましたがうまくいきません

どなたか原因・対策をご存知ないでしょうか?

環境は VC++6.0  WIN98  です
----
        Fujimoto : t...@ya2.so-net.ne.jp
23

[vcpp 00026409] Re: 背景を透過するOCXの作成技法について

広島在住の神野です。
OCXはろくに使ったことがなく、ましてや作ったことなんかないんですが。

Tue, 23 Feb 1999 16:26:00 +0900 ごろに
<1...@yong.sisd.dnp.co.jp> の
"[vcpp 00026391] 背景を透過するOCXの作成技法について" のメールで
Yong <y...@sisd.dnp.co.jp> さんは書きました。

> 透過させるために、CMyCleControl::OnCreate() で WS_EX_TRANSPARENT
> を拡張スタイルに設定して、描画時にSetBkMode(TRANSPARENT)の状態で
> 文字を描画します。そうすると文字が画像に対して透過されます。

WS_EX_TRANSPARENT まで必要でしょうか?
SetBkMode(TRANSPARENT) だけで充分なように思いますが。

> しかし、当然すでに文字列が表示されている部分に別文字列を描画しよ
> うとすると表示矩形部の背景を消去させなけれななりませんが、CWnd::
> Invalidate()、CWnd::RedrawWindow()、COleControl::InvalidateControl()
> 関数を呼び出しても背景(の画像)が更新されません。そのため、文字が
> どんどん重なって描画されてしまいます。

背景の画像は、いつ(どんなタイミングで)描いているんでしょうか?
想像するにWM_ERASEBKGNDではないかと思うんですが、
その辺りの処理が何かおかしいのではないでしょうか?

もしかして、画像は別ウィンドウに描画していて、そのための
WS_EX_TRANSPARENTでしょうか??

-----------------------------
神野健吾 <k...@orange.co.jp>
記事検索
Amazon.co.jp
  • ライブドアブログ