2

私は allegro ライブラリを試しています。これまでに得たコードは次のとおりです。

#include <allegro.h>

int main(int argc, char *argv[]) {
    allegro_init();  // initialize the allegro libraries
    install_keyboard(); // initialize keyboard functions
    
    set_color_depth(16); // set the color depth
    set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); // set up 640*480px window
    
    BITMAP *pic = NULL;
    pic = load_bitmap("C:/picture.bmp", NULL); // load the picture
    blit(pic, screen, 0, 0, 0, 0, 1000, 1000);

    readkey();
    destroy_bitmap(pic);
    return 0;
} 
END_OF_MAIN()

正常に動作しますが、実行すると、プログラムのウィンドウが開いているときに、Windows 7 のテーマが Aero から Aero Basic に変更されます。意味がわからない場合は、次のポップアップが表示されます (これは Google から取得したため、Windows 7 ではなく Vista と表示されています)。

http://www.suitedcowboys.com/wp-content/uploads/2007/01/010607_0906_HelloVistai28.png
(出典:suitedcowboys.com

  1. なんで?
  2. これが起こらないようにするにはどうすればよいですか?
4

2 に答える 2

5

Aero では color を 32 ビットに設定する必要がありますが、16 に設定しています。

set_color_depth(16);

于 2010-03-28T00:57:36.950 に答える
2

特定の色深度を使用する正当な理由がない限り、次のようにします。

int cd = desktop_color_depth();
if (cd < 15) cd = 32;
set_color_depth(cd);

今日では一般的に問題はありませんが、古いビデオ カードの多くは 15/16 ビットと 24/32 ビットのいずれかしかサポートしていません。

パレットを使用するために 8 ビットの色深度を使用する必要がある場合は、GFX_GDI互換性を最大限に高めるためにドライバーを使用してください。

于 2010-03-28T03:55:48.263 に答える