mcrblog

vcpp-ml

1999年03月

31

[vcpp 00027573] Re: DLLについて

島野です。こんにちわ。

Takashi Ikeda wrote:

> 池田というものです。
> お世話になります。

> VC++5.0でDLLを作成しているのですが、
> 関数内で次のように書きます。
>  if(colorkey==false){
>   for(y=0;y<size_y;y++){
>    for(x=0;x<size_x;x++){
>       略
>      }
>   }


みなさまのご指摘どおり最適化に依存したものだと思われます。
上記でループ中の処理を略されて提示されていますが、
挙動はこの内容に大きく依存しているでしょう。
たぶん、レジスタへの割り当ての最適化で
破綻しているのだと思います。
以下のいずれかひとつの対処でよいでしょう((3)は邪道?)。

(1)最適化のオプションを外す。
(2)処理を小分けにする(ループ内の処理を別の関数にする)。
(3)ループ中にあえてムダな処理を追加する。

#以下あまり根拠がないのですが。

なお、上記の対処などでコンパイルエラーがなくなっても、
依然、コンパイラには苦しいコンパイルであるため、
実行時に正しくない動きをする可能性があります。
実行結果を検証されることをお勧めします(最適化を外されない場合)。

-- 
Hideaki Shimano
INTEC SYSTEMS LABORATORY INC.
s...@isl.intec.co.jp
31

[vcpp 00027572] Re: DLLについて

宮崎@イーストです。

99/03/30 21:53:20 頃、Kengo Jinno さんが書いたメールについて

> あてずっぽうですが、最適化の関係ではないでしょうか。
> 最適化オプションをいろいろいじるとReleaseでも通るようになる
> かもしれません。

このケースだとその通りだと思います。
複雑なループがあると最適化コンパイラが処理しきれない場合があります。
コードの見直しでどうにかなる場合もありますけど、スピードを犠牲にして
該当関数だけ #pragma optimize で最適化無効にすればコンパイルは
通るようになります。

-- 
イースト株式会社
宮...@est.co.jp
31

[vcpp 00027571] Re:Banding print

[vcpp 00027349] に対しての自己レスです。

> [現象]
> イメージの位置は、ずれもなくつながっているが、奇数番目のバンドは全体的に
> 暗い色調で、偶数番目のバンドは全体的に明るい色調で印刷され、縞模様になっ
> てしまう。
> 各バンドをファイルに落としダンプした所、隣接する2つのバンドの接するスキ
> ャンラインの色は同じでした。

線や円弧などソリッドでない描画オブジェクトはちゃんとつながっており、面な
どのソリッドのディザパターンも同じなのでバンドに描画するところまでは問題
なく、その後のプリンタDCにビットブロックを転送するところに問題があると
思っていました。
ところが試しにファイルに落としたビットマップをくっつけて印刷したら同じよ
うに縞模様になるので不思議に思ってもう一度注意深く見てみるとディザパターンが2ビッ
トほどずれていました。
なぜ気づかなかったのか情けない限りです。
そこでディザパターンがちゃんと連続になるようにバンドの幅をブラシのビット
パターンの倍数になるようにした所ちゃんとつながりました。
しかし、同じディザパターンなのにパターンの開始位置が違うだけでここまで色
が変わるとは驚きました。
皆さんどうもお騒がせしました。

それから、[vcpp 00027421]について

> #詳しいことはわからないのですが。野次馬的に回答させていただきます。

> (1)お使いのプリンタの機種用のプリンタドライバのバグ?
> 別のプリンタでも同様なのでしょうか。

> (2)分割数(20)の切れが悪い?
> 分割数もしくはバンドの縦幅などの数値を2のべき乗に揃えたほうがよい?

島野さん、返事が遅くなりまして申し訳ありませんでした。
野次馬なんてとんでもない。(2)の予想はもうほとんど正解です。
改めてファイルに出力したビットマップを確かめるきっかけを与えてくれたこと
に感謝しています。

==================================================
Applied 3D Science
Tatsuki Nakano <t...@andor.co.jp>
==================================================
31

[vcpp 00027570] RE: CCheckListBoxの操作について

西です。こんにちは。


>
>ダイアログにCCheckListBoxクラスのリストを
>表示しようとしているのですが、CCheckListBoxへ
>AddString()しようとすると
>Assertion Failed
>と言われてしまうのです。


リストボックスのリソースでオーナー描画を固定に、文字列ありを
チェックするとどうでしょうか?
(LBS_OWNERDRAWFIXED | LBS_HASSTRINGS)

以上でした。
31

[vcpp 00027569] Re: 標準のボタン

> 現在は改行禁止のエディットBOXでRETURNを押したのが悪いのか
> エラー音が鳴り響くだけです(^^;

Gen^2です。

非MFCだと思いますがメッセージループでIsDialogMessageを使ってますか?

-----------------------------
 Gen^2  北大工学部3年
 g...@sp.assistmicro.co.jp
-----------------------------
記事検索
Amazon.co.jp
  • ライブドアブログ