質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

Q&A

解決済

1回答

546閲覧

背景色や文字色が反映されない

yukkuri

総合スコア624

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

0グッド

0クリップ

投稿2018/10/21 06:35

前提・実現したいこと

Win32APIを使ってGUIを作っていたら、エラーが発生しました。

発生している問題・エラーメッセージ

特になし

該当のソースコード

C

1#include <windows.h> 2 3/** 4 * ウィンドウプロシージャー 5 * 6 * @r LRESULT コールバック関数等から返される 32bit 値 7 * CALLBACK 呼び出し規約 8 * 9 * @p hwnd ウィンドウのハンドル 10 * @p msg メッセージ 11 * @p wp 付加情報 12 * @p lp 付加情報 13 */ 14LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); 15 16/** 17 * windows アプリケーションで初めに呼ばれる関数 18 * 19 * @p hInstance インスタンスハンドル このプログラムを判別するハンドル 20 * @p hPrevInstance 現在使用されていないため常に NULL 21 * @p lpCmdLine コマンドラインから受け取った引数 22 * @p nCmdShow アプリケーションの初期表示設定 23 */ 24int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow ) 25{ 26 HWND hwnd; 27 WNDCLASS winc; 28 MSG msg; 29 30 winc.style = CS_HREDRAW | CS_VREDRAW; // 縦横方向にリサイズされた際再描画 31 winc.lpfnWndProc = WndProc; // ウィンドウプロシージャーを設定 32 winc.cbClsExtra = winc.cbWndExtra; // 構造体の追加領域 33 winc.hInstance = hInstance; // インスタンスハンドル 34 winc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); // アイコンのビットマップハンドル 35 winc.hCursor = LoadCursor( NULL, IDC_ARROW ); // マウスカーソル 36 winc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH ); // 背景色 37 winc.lpszMenuName = NULL; // クラスメニュー 38 winc.lpszClassName = TEXT( "TITLE" ); // ウィンドウクラスの名前 39 40 if( !RegisterClass( &winc ) ) return -1; 41 42 hwnd = CreateWindow( 43 TEXT( "TITLE" ), TEXT( "title" ), 44 WS_OVERLAPPEDWINDOW, 45// 100, 100, 640, 480, 46 CW_USEDEFAULT, CW_USEDEFAULT, // デフォルト値 47 CW_USEDEFAULT, CW_USEDEFAULT, 48 NULL, NULL, 49 hInstance, NULL 50 ); 51 52 if( hwnd == NULL ) return -2; 53 54 ShowWindow( hwnd, SW_SHOW ); 55 56// MessageBox( NULL, TEXT( "message" ), TEXT( "title" ), MB_OK ); 57 58// while( TRUE ){ 59 /*** 60 * メッセージキューからメッセージを受け取ります。 61 * 62 * MSG 型の構造体 63 * ウィンドウのハンドル すべてのウィンドウから受け取るなら NULL 64 * 受け取るメッセージの最小値でフィルタリング 行わない場合 0 65 * 受け取るメッセージの最大値でフィルタリング 行わない場合 0 66 */ 67// GetMessage( &msg, NULL, 0, 0 ); 68 // 左クリックされたら 69// if( msg.message == WM_LBUTTONUP ) break; 70 /*** 71 * ウィンドウプロシージャーに値を渡す 72 * 73 * MSG 型の構造体 74 */ 75// DispatchMessage( &msg ); 76// } 77 78 while( GetMessage( &msg, NULL, 0, 0 ) ) DispatchMessage( &msg ); 79 80 return msg.wParam; 81} 82 83LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) 84{ 85 int nYesNo; 86 LPCREATESTRUCT lpcsWnd; 87 88 HDC hdc; 89 LPTSTR lptStr = TEXT( "message" ); 90 PAINTSTRUCT ps; 91 92// if( msg == WM_LBUTTONUP ){ 93// exit( 0 ); 94// } 95 96 switch( msg ){ 97// case WM_CLOSE: 98// return 0; 99/* case WM_CREATE: 100 lpcsWnd = (LPCREATESTRUCT)lp; 101 nYesNo = MessageBox( hwnd, TEXT( "window を作成しますか?" ), TEXT( "Question" ), MB_YESNO | MB_ICONQUESTION ); 102 if( nYesNo == IDYES ) return 0; 103 else return -1;*/ 104 case WM_DESTROY: 105// MessageBox( hwnd, TEXT( "終了します" ), TEXT( "message" ), MB_ICONINFORMATION ); 106// DestroyWindow( hwnd ); // ウィンドウを破棄 107 PostQuitMessage( 0 ); 108 return 0; 109 case WM_PAINT: 110 hdc = BeginPaint( hwnd, &ps ); 111 SetTextColor( hdc, RGB( 255, 255, 255 ) ); 112 TextOut( hdc, 10, 10, lptStr, lstrlen( lptStr ) ); 113 EndPaint( hwnd, &ps ); 114 return 0; 115 } 116 117 return DefWindowProc( hwnd, msg, wp, lp ); 118} 119

試したこと

何度もソースを確認しました。

補足情報(FW/ツールのバージョンなど)

Windows10、MinGW どちらも 64bit です。
また、エラーがコンパイル時出ています。

c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/ld.e xe: cannot open output file a.exe: Permission denied collect2: ld returned 1 exit status

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リンク時のエラーで、a.exe の作成ができないというエラーです

a.exe がすでにあるならそれを削除してからビルドしてみましょう

投稿2018/10/21 06:42

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukkuri

2018/10/21 06:50

動きました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問