DEVICE - みる会図書館


検索対象: API散歩道 上
10件見つかりました。

1. API散歩道 上

第 1 0 章 テフォルトフォントの怪 lfFaceName= lfPitchAndFamily=1 IfQuality=O lfCIipPrecision=0 lfOutPrecision=0 lfCharSet= 128 lfStrikeOut=0 とキャラクタセットだけ設定されているだけだ。こんな横着した論理フォン ■ワタソン「ゼロの行列だよ。フェイス名は空つほだし。かろうじて , PicthAndFamily トで , 正しいフォントが選べるわけがない ! 」 マホラムズ「だいたい , 予想していたとおりだね」 住ワタソン「こんなふざけた論理フォントを使っているのは , 「知りたいかね ? 」 ■ワタソン「あたりまえだ。文句をいってやりたい」 マホラムズ どこのどいつだ」 マホラムズ「 GetStockObject という API を調べてみたまえ。引数に DEVICE_DEFAULT _FONT という値を指定したときだ」 ■ワタソン「ええと , GetStockObject なら知っているぞ。よく使われるべンやプラシを 取得する API だろう ? それに , さっきのプログラムでもシステムフォント を取得するのに使っているよ。あったあった。確かに , DEVICE_DEFAULT FONT というのがある。デバイス依存のフォントと書いてある。しかし , 名 前からすると , デバイスがデフォルトで使うフォントだな」 ホラムズ「これの中身も調べてみたまえ」 ・ワタソン「どうやって」 マホラムズ「いま作ったプログラムに , DumpLogFont( GetStockObject(DEVICE DEFAULT_FONT), "def. log" ) ; と追加すればいいだけさ」 ■ワタソン「なるほど」 0 ワタソン「出たぞ。見てくれ」 しばらくして。 lfEscapement=0 lfWidth=0 lfHeight=O

2. API散歩道 上

(flags & ONLY-NE. REST-SIZE) ! = 0 ) ー if ( abs(iCIosest ー IPS12 間 I ) > abs(lptm- >tmHeight ー Iptm->tmInternalLeading ー IPS12 間 I ) ) ー bFound = 駅 ; iClosest = lptm->tmHeight - lptm- 96 : 97 : 98 : 99 : if( 100 : 101 : >tmInternalLeading; 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : 110 : 111 : 112 : 113 : 115 : tmClosest = *lptm; lfClosest = *lplf; nFontTypeCIosest = nFontType; nFontTypeCIosest = nFontType; lfClosest = *lplf; tmClosest = *lptm; bFound = : else ー return( 1 ) : プロクラムの解説は ONLY_DEVICE_FONTIONLY_SHIFT 」 ISIONLY_RASTERIONLY_NEAREST_SIZE if( b ! = FALSE ) return( ) ; 147 : 148 : 〃固定サイズはあきらめて、可変サイズのものも許す。可変 149 : サイズでも、デバイスフォントなら、早くて綺麗なはず 150 : 〃明朝、デバイスフォント、シフト J I S 151 : b = Search0neTime(hDC, 152 : ONLY_MINCHOIONLY_DEVICE_FONTIONLY_SHIFT 」 IS ) ; if( b !=FALSE ) return( ) : 153 : 154 : 〃 FF_ROMAN 、デバイスフォント、シフト J I S 155 : b = Search0neTime( hDC, 156 : ONLY_FAMILY_ROMANIONLY_DEVICE_FONTIONLY_SHIFT 」 IS ) : 116 : B 開 L Search0neTime(HDC ー , WO 間 flags ) 157 : 158 : 159 : 160 : 161 : 162 : 163 : if( b !=FALSE ) return( 駅匪 ) ; 〃デバイスフォント、シフト J I S b = Search0neTime(hDC, ONLY_DEVICE-FONTIONLY_SHIFT 」 IS if( b !=FALSE ) return( TRUE ) : 〃ここまで来てしまったということは、シフト J I S のデバ 118 : 119 : 120 : 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : 130 : 132 : 133 : 134 : 135 : int i; FARPROC fp; fp = MakeProcInstance( EnumCaIIBack, hlnst ) ; bFound = FALSE; for( i=0; i く nFaces; i + + ) ー char buf[33] : EnumFonts( hDC, buf, fp, (LPSTR) (DWORD) flags ) ; GetAtomName( atomFaceName[i] , buf, sizeof (buf) ) ; return( bFound ) : FreeProcInstance( fp ) ; イスフォントが無い ! ということ 〃こうなるとどうしようもないので、デバイスフォント以外 164 : でなんとか探す 165 : 〃シフト J I S 、ラスターフォント、 1 2 ポイントに近い 166 : b = Search0neTime(hDC, 167 : ONLY_SHIFT 」 ISIONLY_RASTERIONLY_NEAREST_SIZE ) : 168 : 169 : 170 : 171 : 172 : 173 : 174 : if( b ! = FALSE ) return( ) : 〃シフト J I S b = Search0neTime( hDC, ONLY-SHIFT 」 IS ) ; if( b ! = FALSE ) return( TRUE ) ; 〃ここに来たということは、シフト J I S のフォントすら無 131 :B(X)L SearchEach(HDC hDC ) BWL b; 〃まず、固定サイズのデバイスフォントで、適当なものがあ い ! ということ 〃残念ながらギブアップ、素直にデバイスデフォルトのフォ 175 : 179 : 0 SearchAll い肬ー ) 178 : 176 : return( FALSE ) : ントを使う るか探す 136 : 〃明朝、デバイスフォント、シフト J I S 、 137 : ト、 1 2 ポイントに近い b = SearchOneTime( hDC, 138 : ラスターフォン ONLY_MINCHOI ONLY_DEVICE_FONTIONLY_SHIFT 」 I制0乢Yー懸STE田0乢Yー翫 AREST_SIZE ) : 180 Ⅱ 181 : 182 : 183 : 184 : 185 : 186 : 187 : 188 : B(L b; b = SearchEach()m ) ; if( b = FALSE) return( NULL ) : if ( (nFontTypeClosest & RASTER_FOMTYPE) IfCIosest.IfHeight = TWIPS12POINT; lfClosest.lfWidth = 0 ; ー 0 ) 139 : 140 : 141 : 142 : if( b ! = FALSE ) return( TRUE ) : 〃 FF_ROMAN 、デバイスフォント、シフト J I S 、ラスターフ 1 2 ポイントに近い b = Search0neTime ( hDC, 189:#ifdef DEBUG ONLY_FAMILY_ROMANIONLY_DEVICE_FONTIONLY_SHIFT 」 I引0乢Yー財釘EⅢ0 NLY_NEAREST_SIZE ) : if( b !=FALSE ) return( 匪 ) ; 143 : 144 : 〃デバイスフォント、シフト J I S 、ラスターフォント、 145 : 2 ポイントに近い b = Search0neTime( hIL 146 : 1 190 : 191 : 192 : 193 : 194 : 195 : 196 : FILE * fp; fp = f 叩 en( "deffont. 10g " , if( fp = 肚 ) return( NULL ) : fprintf( fp, "l selected, Yn" ) : ー 10 fprintf( fp, "lfWidth=%dYn", lfClosest.IfWidth ) ; fprintf( fp, "lfHeight=%dYn", lfClosest.lfHeight ) :

3. API散歩道 上

第 1 0 章 テフォルトフォントの怪 0 プログラムの解説 リスト 2 の DEFFONT. C です。 というわけで , できあがったのが , リスト 2 DEFFONT ℃ 1 : 〃 Search Better Default Font 2 : 〃 C 叩 yright (c) 1992 by Akira Kita 3 : 4:#include <windows. h> 5 : 6:#define DEBUG 7:#i fdef DEBUG 8:#include く stdio. h> 9:#endif 10 : 11 : 〃メインルーチン側の持っているインスタンスハンドル 12:extern HAM)LE hlnst ; 14 : 〃検索条件を限定するピット・フラグ 15:#define ONLY_MINCHO 1 16:#define ONLY_DEVICE_FONT 2 17:#define ONLY_FAMILY_ROMAN 4 18:#define ONLY_SHIFT 」 IS 8 19:#define ONLY-RASTER 16 20:#define ONLY_NEAREST_SIZE 32 22 : 〃 IPS 単位で、 12 ポイントの値 23:#define TVIPS12POINT ( 12 * 1440 / 72 ) 24 : 26 : 〃 # フェイス名テープル関係 # 28 : 29:#define TABLE MAX 100 30 : WO atomFaceName[TABLE-MAX] : 31 : WO 間 nFaces; 33 : int FAR PASCAL _export EnumFaceCallBack( L FO 灯ゆ圧 LPTEXTÆTRIC lptm, short nFontType, LPSTR lpData ) i f( nFaces > = TABLE-MAX ) return( 0 ) ; atomFaceName[nFaces] = AddAtom( lplf->lfFaceName ) : if( atomFaceName[nFaces] = = NULL ) return( 0 ) : 38 : nFaces 十十 : return( 1 ) ; 39 : 42:void CreateFaceNameTable( HW hm ) 44 : FARPyu fp; 45 : nFaces = 0 ; fp = MakeProcInstance( EnumFaceCallBack, hlnst ) ; EnumFonts(hIL 儿 L , fp, NIJLL ) : FreeProcInstance( fp ) : 50 : 51:void DeIeteFaceNameTabIe( void ) int i; 53 : 54 : for( i=0; i く nFaces; i + + ) ー DeleteAtom( atomFaceName[i] ) ; 55 : 60 : 〃 # 検索本体 # 62 : 63 : stat ic BWL bFound = FALSE; 64:static int iClosest; 65:static IÆJFONT IfCIosest ; 66:static TEXflETRIC tmCIosest; 67:static short nFontTypeClosest ; 68 : 69 : int FAR PASCAL _export EnumCaIIBack( L FO ゆ比 LPTEXTMETRIC lptm, short nFontType, S 駅 IpData ) W0 間 flags; flags = W0 ( (DWORD)IpData) : '@' ) return( 1 ) ; if ( Iplf->lfFaceName[0] = if( lplf->lfltalic ) return( 1 ) ; if( IpIf->IfUnderline ) return( 1 ) : if( IpIf->IfStrikeOut ) return( 1 ) ; if( IpIf->IfWeight ! = 400 ) return( 1 ) ; if( lplf->IfEscapement ! = 0 ) return( 1 ) ; IpIf->IfOrientation ! = 0 ) return( 1 ) : if( if( (flags & ONLY-MINCHO) ! = 0 ) if( lstrc 叩 i( lplf->lfFaceName, " 明朝 " ) ! = 0 ) i f( (flags & ONLY-DEVICE-FONT) ! = 0 ) ー if( (nFontType & DEVICE-FON'ITPE) = 0 ) return( 1 if( (flags & ONLY-FAMILY-ROMAN) ! = 0 ) 88 : if( ((Iptm->tmPitchAndFamily & 0xf0) ! = FF-ROMAN) 89 : return( 1 ) : 90 : if( (flags & ONLY-SHIFT 」 (S) ! = 0 ロ if ( lptm->tmCharSet ! = SHIFTJIS-CHARSET ) return( 1 CO -4 ・戸 0 if( (flags & 0 乢 Y ー S 旺 R ) ! = 0 ) ー i f( (nFontType & RASTER-FON'ITY?E) = = 0 ) return( 1

4. API散歩道 上

- ) り第 1 章テフォルトフォントの怪 197 : 198 : 199 : 200 : 201 : 202 : 203 : 204 : 205 : 2 : 207 : 208 : lfClosest.lfEscapement ) : lfClosest. lf0rientation ) ; lfClosest. lfUnderline ) ; lfClosest. lfStrike0ut ) : fclose( fp ) : lfClosest. lfFaceName ) : fprintf( fp, " lfFaceName=%sYn" lfClosest. lfPitchAndFamiIy ) ; fprintf( fp, "lfPitchAndFami ly=%dYn" fprintf( fp, "lfQuaI ity=%dYn", lfClosest. lfQuaI ity lfClosest. lfClipPrecision ) ; fprintf( fp, "lfCl ipPrecision=%dYn", lfClosest. lf0utPrecision ) ; fprintf( fp, "lfEscapenmt=%dYn", fprintf( fp, "If0rientat ion=%d}n" fprintf( fp, "lfWeight=%dYn", lfClosest.lfWeight ) : fprintf( fp, "lfltalic=%d}n", IfCIosest. lfltalic ) ; fprintf( fp, "lfUnderline=%dYn" fprintf( fp, "lfStrikeOut=%dYn", fprintf( fp, "lfCharSet=%dYn", lfClosest. lfCharSet fprintf( fp, "IfOutPrecision=%d}n" 215 : 217 : 〃 # 外部から参照される関数 # 219 : 220 : 0 CreateDefaultFont い ) 221 222 : 223 : 224 : 225 : 226 : 227 : 228 : 229 : 230 : 231 : 232 : 233 」 234 : 0 hFont : int 01dMapMode; 01dMapMode = tM 叩 de い , Ⅷー物 I 門 ) ; CreateFaceNanrTabIe( hDC ) : hFont = SearchAlI い ) : if( hFont = 月 hFont = GetStockObject ( DEVICE-DEFAULT-FOMP ) : DeIeteFaceNameTabIe() ; *tMapMode( } , 01dMapMode ) ; return( hFont ) ; 235 : void DeIeteDefaultFont ( 0 hFont ) 209 : 210 : 212 : 211:#endif return( CreateFontIndirect ( &lfClosest ) ) : 213 : 236 コ 237 : 238 : 239 : 240 」 241 : if( hFont ! = GetStock0bject( DEVICE-DEFAULT-FONT ) ) ー DeIeteObject( hFont ) ; 242 : 〃 end of deffont. c 出力先ターゲットの hDC を引数に渡すと , その hDC で最適な論理フォントのハンドル HFONT CreateDefauItFont( HDC hDC ) 以下の 2 つの関数が利用できます。 す。 ムの一部にリンクされることを想定しているので , プログラム内部の呼び出しになりま まず , 外部仕様を見てみましよう。といっても , このソースコードは , ほかのプログラ こちらは , 使い終わった論理フォントを削除します。必ずこれを呼んでおかないと , void DeleteDefaultFont( HFONT hFont ) が返ってきます。 どいことになります ( システムリソースがどんどん減ってしまう ! ) 。 さて , この 2 つのルーチンの中身を見てみましよう。 まず , 最初に SetMapMode という API が出てきます。 を変更すると , なにかいいことがあるのでしようか。 これはなんでしようか ? これは , 座標系のマップモードを変更します。 OIdMapM0de = SetMapM0de( hDC, MM_TWIPS ) ; しかし , ひ それ

5. API散歩道 上

事件発生 ! 謇” lfOrientation=0 IfWeight=O Ⅲねⅱ c = 0 ■ワタソン「さっきとまったく同じだ。どういうことだ ? 」 lfFaceName= lfPitchAndFamily=1 lfQuality=O lfClipPrecision=O lfOutPrecision=0 lfCharSet= 128 lfSt 「 ikeOut=0 lfUnderline=0 10 いい。そういうルーチンを作ってみよう」 v ホラムズ「プログラムのほうで , 正しいフォントを SelectObject してあげればそれで ■ワタソン「というと , どうするんだい ? 」 なら打てる」 マホラムズ「自分で作るプログラムが誤ったフォントを選ばないようにする , という手 だ。なんとか回避できないものかな」 プリンタドライバが直ってくれるとしても , いまは現実にこうなっているん ■ワタソン「プリンタドライバを書き換えるのは , 我々のレベルでは無理だ。いつかは だよ。これがいちばん正しい解決方法とされている」 は , プリンタドライバが WIFE フォントを選ばないようにしておけばいいん ホラムズ「そうでもないよ。フェイス名の長さがゼロのフォントが要求されたときに ■ワタソン「なんてことだ。それじゃあ , 回避のしようがないじゃないか」 ・「そのとおり」 FONT ) を引数にして , SeIectObject を呼び出しているというのかね ? 」 「じゃあ , CreateDC の内部で , 勝手に , GetStockObject(DEVICE_DEFAULT マホラムズ「わからないかね ? CreateDC だよ」 ーワタソン「しかし , いったい誰が , こんなフォントを SelectObject したんだ ? 」 「そのとおり」 トが変わるという事件を引き起こしていたのか」 ■ワタソン「そうか。このいい加減でアバウトな論理フォントが , 環境によってフォン ▽ホラムズ「これが , CreateDC したときに最初に設定されているフォントの正体さ」 マホラムス ■ワタソン マホラムズ ■ワタソン「わかった」

6. API散歩道 上

、第 1 0 章 テフォルトフォントの怪 ントというサイズを強制しています。フォントのサイズが , 大きすぎたり小さすぎたりす さて , こうやって見つけたフォントですが , サイズが可変の場合は , ずばり , 12 ポイ フォントを使います。 ギブアップした場合は , デフォルトの GetStockObject(DEVICE_DEFAULT_FONT) の とで , 完全にギブアップです。 これで検索し , なにも見つからなければ , 本当に使える日本語フォントがないというこ という条件だけです。 それでも見つからない場合は , 固定サイズという条件も外します。残るのはシフト JIS , イズフォント , 12 ポイントに近い , です。 まずは , 固定サイズのフォントを優先的に探してみます。条件は , シフト JIS , 固定サ にします。 こうなってはやむをえないので , なんでもいいから , シフト JIS のフォントを探すこと トは存在しないということになります。 それでも見つからない場合 , そのプリンタドライバには , シフト JIS のデバイスフォン で探してみます。 す。どちらもなければ , その条件を外して , デバイスフォント , シフト JIS , という条件 同じように , 最初にフェイス名「明朝」を探し , 次にファミリー FF-ROMAN を探しま なら速くてきれいなはずです。 固定サイズという条件を外してみます。可変サイズのフォントでも , デバイスフォント それでも見つからない場合は・・ ります。 こで引っかか で探します。もし , 条件に合った「ゴシック」というフォントがあれば , デバイスフォント , シフト JIS, 固定サイズフォント , 12 ポイントに近い , という条件 それでも見つからない場合は , FF ー ROMAN の条件も外します。 れを探すということです。 すべてを含むファミリーです。つまり , たとえ「明朝」がなくても「 xx 明朝」があれば , そ のキャラクタセットのフォントを探します。 FF_ROMAN というのは , 明朝系のフォント もし , この条件に当てはまるフォントがなければ , 今度は「明朝」ではなく , FF-ROMAN るとまずいので。 そのとき , lfCIosest.lfHeight = TWIPS12POlNT ; lfClosest.lfWidth = 0 ; と , IfWidth ( 文字平均幅 ) をゼロにしていますが , 的に与えるという意味です。 これは , 高さにふさわしい幅を自動

7. API散歩道 上

プロクラムの解説を よって , 32 バイト以上の長さのフェイス名はありえません。これで大丈夫なのです。 となっているので , 32 です。 #define LF FACESIZE 32 そして , LF_FACESIZE の値は , と宣言されています。 まず , 下位ルーチンの中で , 以下の条件のフォントを検索対象から外す機能がありま ロジックを構成しているのは , SearchEach 関数です。 さて , それでは , 最後にフォントを選び出すロジックを説明しましよう。 それから , 対象とするフォントを , デバイスフォントに限ります。そのほかのフォント あります。日本語以外のフォントを選ぶわけにはいきません。 対象としては , まず , どうしても外せないシフト JIS キャラクターセットという条件が これらのシンボルを組み合わせて , 検索対象を絞り込みます。 1 2 ポイントに近いフォントを選ぶ #define ONLY NEAREST SIZE 32 固定サイズフォント以外 #define ONLY RASTER 16 シフト JIS キャラクターセット以外 #defineONLY SHIFT J 旧 8 FF_ROMAN フォントファミリー以外 #define ONLY FAMILY ROMAN 4 デバイスフォント以外 #define ONLY DEVICE FONT2 明朝以外 #define ONLY MINCHO 1 す。 / 10 ンダーライン , ノーマル以外の太さ , 回転済みフォントも外します ) 。 まるフェイス名をもっ縦書き用フォントも , 無条件で候補から外します。イタリック , ア そして , 「明朝」というフェイス名のものを優先的に探してみます ( そのほかに , @で始 イズのフォントを最初に探します。それも , なるべく 12 ポイントに近いものを・・ べると , 固定サイズのフォントのほうが , 一般的に高速できれいです。ですから , 固定サ それから , 固定サイズのフォント。可変サイズのフォントと固定サイズのフォントを比 なく文字コードを送るので , 速度的に有利なはずです。 は , ビットマップを送るために遅くなります。デバイスフォントなら , ビットマップでは

8. API散歩道 上

第 7 章 BMP ファイルと D 旧 マホラムズ V ホラムズ ■ワタソン「 DIB ? 」 ワタソン「証明といっても , ここには SDK のマニュアルもなにもないじゃないか」 マホラムズ「それじゃあ , この場で証明してあげようじゃないか」 ■ワタソン「うそだろう ? 」 ▽ホラムズ「そんなことはないよ」 ■ワタソン「でも , SDK のマニュアルとかには載ってない知識がいるんだろう ? 」 「できるとも」 ■ワタソン「じゃあ , 公開 API だけでもできるのかい ? 」 API とか , まあそんなものだね」 ようなクズ API とか , 単に過去のバージョンとの互換性のためについている ちょっと特殊な処理をやるときに必要な API とか , 箸にも棒にもかからない マホラムズ「そりゃ , 隠し API くらいあるよ。だけど , そんなにたいした API はないよ。 いてあるよ」 住ワタソン「だって , やつばり Wind 。 ws に隠し API があった ! とか , 雑誌なんかに書 「ない」 の ? 」 ■ワタソン「もしかして隠し API 一発で , どーんといけるとか , そういう楽な手はない んあるね」 マホラムズ「確かに , これを実現するためには乗り越えなければならない障害がたくさ いわけだね ? 」 Y ホラムズ「ふむふむ。要は BMP ファイルを読み込んで , これを画面に表示できればい いてあるが , さつばりわからん。ホラムズ , なんとかしてくれよ」 きないよ。サンプルソースや解説を見ているとあたりまえのことのように書 出力機器に依存するビットマップ ) になってしまうんだな。さつばり理解で API でそれを読みにいくと , なぜかこれが DDB (Device Dependent Bitmap わからない。ついでにリソースに B MP ファイルを入れて , LoadB itmap の ない。それから , それを読み込んでからどうやって表示させたらいいのかも ■ワタソン「いろいろだよ。まず , BMP ファイルのファイルフォーマットがよくわから マホラムズ「具体的には , なにがわからなくてつまずいたんだい ? 」 ・ワタソン「そのマニュアルが理解不能なんだもの。困ってしまうよ」 マホラムズ「ちゃんとマニュアルを読んだかい ? 」 いんだよ。いったい , どういう意味 ? 」 ■ワタソン「それくらい知っているよ。でも , それもなにがなんだか意味が理解できな マホラムズ「出力機器に依存しないビットマップだよ」 臨ワタソン「そうそう」

9. API散歩道 上

まずマニュアルでさまよう マホラムズ「プログラミングさ」 0 ワタソン「おい , うそだろう ? ノートパソコンなんて , 遅いし不便じゃないか」 ホラムズ「でも , 客先でエディットとコンパイルができると , その場でバグ取りと確 認ができるから便利なんだよ。それにね , 屋外でプログラミングするのは , いい刺激になるぞ。そういうときには , マシンのパワーが足りなくても , 発 想の転換でなんとでもなるさ」 ■ワタソン「どういうこと ? 」 マホラムズ「最適化なんかオフにして , 高速コンバイルモードを使えば , スピードはそ れほど遅く感じないし , とりあえず作りたいソフトに必要な分だけライプラ リを入れるようにすれば , ディスクもそれほど食わないからね。あとは , Windows と開発言語は英語版のものをインストールしておけば , それだけで 結構軽くなるぞ」 ■ワタソン「ほんとかなあ」 ホラムズ「もちろん , そう大規模な仕事は無理だけど , プログラミングというのは自 由な発想が命だからね。こうやって外に出て , 心も体も解放されてリラック スしていると , すらすらとアイデアやイメージがわいてきたりするんだ」 ■ワタソン「ふーん , そんなものかなあ」 マホラムズ「そこで即座にノートパソコンに書きとめてしまうのさ。そして , これで本 当にコンパイルが通るのかな , なんて思ったらすぐにコンパイルして試せる ■ワタソン「でもねえ , ノートパソコンじゃ画面だって狭いじゃないか」 ▽ホラムズ「でも , 見てごらん。英語版ならこのとおり , ノートパソコンでも 80 文字 x 50 行のテキストモードだって使えるし , 狭いなんて感じないよ」 ■ワタソン「わかったわかった。君は英語がわかるからいいよ」 マホラムズ「当然じゃないか。私はイギリス人 , それも生っ粋のロンドンっ子だから・・ ■ワタソン「まだいってる」 0 まずマニュアルでさまよう ■ワタソン「リラックスしたら , 疑問が山のようにわいてきたよ」 マホラムズ「どんな疑問だい ? 」 ■ワタソン「いまいちばん悩んでいるのは BMP ファイルなんだ。こいつをプログラムの 中でどう扱っていいのか , よくわからないんだよ」 ホラムズ「 DIB (Device lndependent Bitmap) として扱えばいいんだ」

10. API散歩道 上

イ / N MDI 機能・ D E X AnimatePalette ・ API ・ Application Program lnterface ・ BeginPaint ・ BitBlt BITMAPFILEHEADER ・ BITS 円 XEL ・ BMP ファ彳ル・ CLIENTCREATESTRUCT ・ CreateDIBitmap ・ DDB ・ DDE ・ DEVICE DEFAULTFONT ・ DIB ・ DIB 座標系・・ DispatchMessage DispatchMessage DrawMenuBar ・ EnableWindow ・ EndPaint ・ EXE ファイルの構造・ FindResource FreeResource ■ G GDI. EXE ・ GetDC ・ GetDIBits ・ GetObject ・ GlobalAlloc ・ hPrevlnstance ・ InvalidateRec い JPEG ・ KRNL286. EXE ・ KRNL386. EXE ・ LoadBitmap LoadResource ・ LockResource ・ MakeProclnstance ・ MDI• MDICLIENT ・ MDICREATESTRUCT ・・ ・ 127 ・・ 2 ・ 1 86 ・・ 7 ・ 103 ・・ 93 ・・ 73 ・ 103 ・・ 93 ・ 129 ・ 1 52 ・・ 93 ・ 105 ・・ 29 ・・ 84 ・・ 75 ・ 108 708 ・ 1 86 ・ 106 ・ 1 50 ・ 102 ・ 0 ・ 1 10 ・・ 3 ・・ 3 ヨ 07 ・ 108 ・ 108 ・・ 35 ・・ 59 ・・ 62 ・・ 66 ・・ 54 ・ 186 ・・ 23 2 ・ 193 PALETTEINDEX ・ PALETTERGB ・ PC RESERVED ・ PeekMessage ・ PLANES ・ PM NOYIELD ・ RealizePalette ・ RegisterClass ReIeaseCapture ・ ReleaseDC RLE 形式・ ・ S SDI ・ SeIectObject ・ SelectPalette ・ SetCapture ・ SetDIBits ・ SetDIBitsToDevice ・ SetDIBitsToDevice ・ SetTimer ・ ShowWindow SIZEPALETTE ・ SPY ・ StretchBlt ・ TransIate MDISysAccel ・ UnlockResource ・ UpdateWindow ・ UpdateWindow ・ USER. EXE ・ ValidateRect ・ Windows インタフェースアプリケー ションデザインガイド・ ・・ 61 ・ 124 ・ 124 ・ 128 ・・ 80 ・ 1 19 ・・ 87 ・ 121 ・ 166 ・・ 218 ・ 186 ・ 1 10 ・・ 76 ・ 150 ・ 121 ・・ 218 ・ 106 ・ 103 ・ 124 ・・ 44 ・・ 54 ・に 0 ・・ 45 ・・ 8 ・・ 68 ・ 108 ・・ 57 ・ 195 ・ 193 WM MDINEXT ・ WM MDIRESTORE ・ WM MDISETMENU ・ WM MDITILE ・ WM MOUSEFIRST ・ WM MOUSELAST ・ WM PAINT ・ WM SETFOCUS ・ Yield ・ キャプチャ・ 逆ポーランド表記・ 疑似マルチタスク・ ・か行 オプジェクト指向・ インポートライプラリ インスタンス・ イネープル・ アプリケーション名・ アクテイプ・ ■あ行 hwrite hread ・ ■記号 ■た行 スマート 真理表・・ サンク・ 最大化・ 最小化・ ・さ行 コールノヾ クリッピング クラス・ ダイナミックリンク スタティックリンク ック・ コールノヾック ・・ 67 ・・ 67 ・・ 68 ・・ 68 ・・ 89 ・・ 89 ・ 1 87 ・・ 50 ・・ 86 ・ 102 ・ 102 ・・ 42 ・ 143 ・・ 5 3 ・ロ 9 ・ 172 ・・ 43 ・・ 218 ・ 170 ・ 1 89 ・・ 25 ・・ 38 ・ 17 ・・ 35 ・・ 55 WM ACTIVATE ・ WM ACTIVATEAPP ・ DDE ACK ・ WM DDE INITIATE ・ WM KEYFIRST ・・ WM KEYLAST ・ WM MDIACTIVATE ・ WM MDIACTIVATE ・ WM MDICASCADE ・ WM MDICREATE ・ WM MDIDESTROY ・ WM WM WM MDIMAXIMIZE ・ WM MDIICONARRANGE ・ MDIGETACTIVE ・ ・・ 208 ・・ 50 ・・ 50 744 ・ 142 ・ 89 ・・ 89 ・・ 5 1 ・・ 70 ・・ 65 ・・ 62 ・・ 66 ・・ 66 ・・ 67 ・・ 67 ダイナミックリンクライプラリ・ タイマメッセノ トップダウン形式の DIB ・ 領域の無効化・・ ラスターオペレー ライプラリ関数・ ・ら行 見えないウインドウ・ ・ま行 フォーカス 復元・ ビットマップ・ ノ、ンドル ■は行 トピック名・ ンヨン ・・ 44 743 ・ 176 ・・ 93 ・・ 45 ・・ 54 ・ 193 ・ 190 ・ 7