さてと、背景の色を変えましょう
winclass.hCursor = NULL;
winclass.hbrBackground = (HBRUSH)color_BACKGROUND + 1;
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WIN_NAME;
ウインドウクラスの背景ブラシを
hbrBackground = (HBRUSH)color_BACKGROUND + 1;
↓
hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
これでクライアント領域が白になるであろ
レッツコンパイル
コマンドプロンプトからエイットナ
D:\Workspace>gcc.exe window.c
C:\Users\XXXXX\AppData\Local\Temp\ccc2rzHu.o:window.c:(.text+0x3e): undefined reference to `GetStockObject@4'
collect2.exe: error: ld returned 1 exit status
ムッキィ!! ノ`⌒´)ノ ┫:・'.::・┻┻:・'.::・
お前もかブルータス!!
さっそくgoogle先生に聞きました。
結論:ライブラリが足りてない
”GetStockObject”はgdi32.libの中に入っていますとのことでした。
該当するのは、
-lgdi32のコンパイルオプションですね
ちなみに私が作成したバイナリには、どんなライブラリがリンクされているのか調べてみましょう
コマンドプロンプトから
objedump -pを打つべし
D:\Workspace>objdump -p a.exe | find "DLL"
vma: Hint Time Forward DLL First
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
DLL Name: USER32.dll
ふむ、たしかにGDI32.dllの姿がございません。
先生が曰く、kernek32.lib, user32.lib, gdi32.libの指定が必要らしい
GDI32.dllだけないね
ぶっこんでコンパイルしてみよう
D:\Workspace>gcc.exe window.c -lgdi32
D:\Workspace>a.exe
・・・(*`д´)b OK!
ーーーーー実行結果ーーーー
うまくいきました。
[0回]
PR