
雑誌に載っているソースファイルの
int WINAPI WinMain(
HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, int nCmdShow
) {
WNDCLASS wc;
MSG msg;
wc.style= CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc= WindowProc;
wc.cbClsExtra= 0;
wc.cbWndExtra= 0;
wc.hInstance= hInstance;
wc.hIcon= LoadIcon(NULL , IDI_APPLICATION);
wc.hCursor= LoadCursor(NULL , IDC_ARROW);
ここ →wc.hbrBackground= GetStockObject(WHITE_BRUSH);
wc.lpszMenuName= NULL;
wc.lpszClassName= APP_NAME;
ここのところでerror C2440: '=' : 'void *' から 'struct HBRUSH__ *' に変換することはできません。(新しい動作 ; ヘルプを参照)
'void*' から非 'void' 型への変換には明示的なキャストが必要です。とエラーがでてしまいます。なにぶん初心者なものでエラーの意味が分かりません。教えていただけたら嬉しいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
hbrBackground は HBRUSH(HBRUSH__ *)型の変数です。
そこに GetStockObject( )関数の戻り値である HGDIOBJ(void *)型の値を代入しているので型が違うというエラーが出ています。
以前はコンパイラが自動的に型を変換していたのでエラーにならなかったのでしょう。
新しいコンパイラでは
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
又は
wc.hbrBackground = (HBRUSH__*)GetStockObject(WHITE_BRUSH);
のように手動で明示的に型を変換(キャストという)しないといけません。
No.1
- 回答日時:
コンパイラのチェックが厳しくなっているのでしょう
wc.hbrBackground = (HBRUSH*)GetStockObject(WHITE_BRUSH);
といった具合に キャストしてやればいいと思いますよ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
- その他(スマートフォン・携帯電話・VR) Bluetoothイヤホンとスマホの音量を連動させたい 1 2023/03/25 15:55
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- サッカー・フットサル ワールドカップ決勝最高!!ニワカの自分ですら、メッシが伝説となる最高の試合だということは分かったし、 5 2022/12/19 12:12
- 猫 飼い猫の乳腺腫瘍 1 2023/01/26 03:00
- その他(IT・Webサービス) ANDROIDタブレットでZOOMのテストサイトを開いてもテストが始まりません https://ww 1 2023/08/26 16:31
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
C++のfor文について
-
main.c:7:43: warning: implici...
-
newで生成したものをdelete[]で...
-
構造体の宣言でエラーが出ます。
-
2重定義って??
-
intとINTの違いは?
-
void func( void )について
-
呼び出し時のパラメータが足りない
-
64bit → 32bit型へのキャスト
-
VC6でlong longでエラー?
-
引数で argc argvが使用され...
-
エラー「invalid conversion fr...
-
namespace定義の使い方
-
visualstudio C# テキストボッ...
-
staticで初期化した変数(?)を使...
-
main()とint main(void)の違い
-
プログラムの中で別のmainを呼...
-
VB 関数
-
【#define】 defineで定義した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
2重定義って??
-
変数の型を定義しなかった場合...
-
C++でboolにintの値を代入する...
-
typedef enumの使い方を教えて...
-
C++のfor文について
-
intとINTの違いは?
-
【#define】 defineで定義した...
-
ハンドルされていない例外が発...
-
void func( void )について
-
C言語のコンパイルエラー
-
enumについて
-
関数の実体定義にヘッダファイ...
-
C言語 宣言した変数になにも代...
-
C++ クラスをメンバにもつクラ...
-
プログラムの中で別のmainを呼...
-
sshdログの意味
おすすめ情報