学校で・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
稲穂

学校で・・

#1

投稿記事 by 稲穂 » 9年前

はじめまして!
学校のC言語の授業で、「実行すると面白いことになるし、長文にもなれるために打ち込んでみな」と先生にプリントを渡されて、其のとおりに打ち込んだのですが、
「~(102) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(102) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(102) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(102) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(102) : error C2065: 'hWnd' : 定義されていない識別子です。」
とエラーが・・・
何度見なおしてもワケガワカラナイヨ状態なので投稿しました!どこを直せばいいかわかりますかね・・・?

コード:

#include<windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
HFONT MyCreateFont(LPCTSTR, int, int);
LPCTSTR lpszClassName = TEXT("font01");

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
				   LPSTR lpsCmdLine, int nCmdShow)
{
	MSG msg;
	BOOL bRet;

	if (!InitApp(hCurInst))
		return FALSE;
	if (!InitInstance(hCurInst, nCmdShow))
		return FALSE;
	while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
		if(bRet == -1) {
			break;
		} else {
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}
	return (int)msg.wParam;
}


ATOM InitApp(HINSTANCE hInst)
{
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc. cbWndExtra = 0;
	wc.hInstance = hInst;
	wc.hIcon = (HICON)LoadImage(NULL,
		MAKEINTRESOURCE(IDI_APPLICATION),
		IMAGE_ICON,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
     wc.hIcon = (HICON)LoadImage(NULL,
		MAKEINTRESOURCE(IDC_ARROW),
		IMAGE_CURSOR,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszClassName = lpszClassName;
	wc.hIconSm =(HICON)LoadImage(NULL,
		MAKEINTRESOURCE(IDI_APPLICATION),
		IMAGE_ICON,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);

	return (RegisterClassEx(&wc));
}

BOOL InitInstace(HINSTANCE hInst, int nCmdShow)
{
	HWND hWnd;

	hWnd = CreateWindow(lpszClassName,
		TEXT("科技専プログラミング"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInst,
		NULL);
	if(!hWnd)
		return FALSE;
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	return TRUE;
} 


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
	int id, i;
	HDC hdc;
	PAINTSTRUCT ps;
	LPCTSTR lpszTxt = TEXT("科技専プログラミング");
	static HFONT hFont[20];

	switch (msg) {
		case WM_CREATE:
			for (i = 0; i < 20; i++)
				hFont[i] = MyCreateFont(TEXT("MS ゴシック"),
					50 - i * 2,
					500 - i * 40);
			break;
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			SetBkMode(hdc, TRANSPARENT);
			for (i = 0; i < 20; i++){
				SelectObject(hdc, hFont[i]);
				SetTextColor(hdc, RGB(255 - i * 25, 255 - i *10, i * 20));
				TextOut(hdc, i * 25, i * 15, lpszTxt, lstrlen(lpszTxt));
			}
			EndPaint(hWnd, &ps);
			break;
		case WM_CLOSE:
			id = MessageBox(hWnd, TEXT("終了してもいい?"),
					TEXT("終了確認!"),MB_YESNO);
			if(id == IDYES)
				DestroyWindow(hWnd);
			break;
		case WM_DESTROY:
			for (i = 0; i < 20; i++)
				DeleteObject(hFont[i]);
			PostQuitMessage(0);
			break;
		default:
			return (DefWindowProc(hWnd, msg, wp, lp));
	}
	return 0;
}

HFONT MyCreateFont(LPCTSTR face, int h, int angle)
{
	HFONT hFont;
	hFont = CreateFont(h,
		0,
		angle,
		0,
		FW_BOLD,
		FALSE,
		FALSE,
		FALSE,
		SHIFTJIS_CHARSET,
		OUT_DEFAULT_PRECIS,
		CLIP_DEFAULT_PRECIS,
		PROOF_QUALITY,
		FIXED_PITCH | FF_MODERN,
		face);
	return hFont;
}

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 学校で・・

#2

投稿記事 by usao » 9年前

ひょっとして,
大文字と小文字とかいう話ですか.

稲穂

Re: 学校で・・

#3

投稿記事 by 稲穂 » 9年前

usao さんが書きました:ひょっとして,
大文字と小文字とかいう話ですか.
そうかなと思ったのですが、65行目も同じ'hWndが書かれているのにエラーが出てないのです・・
あ、エラーは
~(102) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(109) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(112) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(115) : error C2065: 'hWnd' : 定義されていない識別子です。
 ~(123) : error C2065: 'hWnd' : 定義されていない識別子です。
でした!

アバター
amehirune
記事: 181
登録日時: 11年前
住所: どっか
連絡を取る:

Re: 学校で・・

#4

投稿記事 by amehirune » 9年前

横から失礼します。
65行目はローカル変数hWndを宣言しているだけですので、そら当然エラーにはなりませんよね。。。
現に、そのhWndを宣言している関数でのhWnd使用によるエラーは起こってませんし。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

pocket
記事: 49
登録日時: 9年前

Re: 学校で・・

#5

投稿記事 by pocket » 9年前

こんにちは.

86行目の引数の定義が,hwndとwが小文字になっているように思います.
なので,定義されていないというエラーが出るのではないでしょうか?

コード:

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)

Bull
記事: 149
登録日時: 11年前

Re: 学校で・・

#6

投稿記事 by Bull » 9年前

大文字小文字の間違いは既に指摘がありますが、その他にもエラーがあったのでとりあえずコンパイルできるようにしてみました。

コード:

#include<windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
HFONT MyCreateFont(LPCTSTR, int, int);
LPCTSTR lpszClassName = TEXT("font01");

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
	LPSTR lpsCmdLine, int nCmdShow)
{
	MSG msg;
	BOOL bRet;

	if (!InitApp(hCurInst))
		return FALSE;
	if (!InitInstance(hCurInst, nCmdShow))
		return FALSE;
	while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
		if (bRet == -1) {
			break;
		} else {
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}
	return (int)msg.wParam;
}


ATOM InitApp(HINSTANCE hInst)
{
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInst;
	wc.hIcon = (HICON)LoadImage(NULL,
		MAKEINTRESOURCE(IDI_APPLICATION),
		IMAGE_ICON,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
	wc.hCursor = (HCURSOR)LoadImage(NULL,
		MAKEINTRESOURCE(IDC_ARROW),
		IMAGE_CURSOR,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszClassName = lpszClassName;
	wc.hIconSm = (HICON)LoadImage(NULL,
		MAKEINTRESOURCE(IDI_APPLICATION),
		IMAGE_ICON,
		0,
		0,
		LR_DEFAULTSIZE | LR_SHARED);
	wc.lpszMenuName = NULL;

	return RegisterClassEx(&wc);
}

BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
	HWND hWnd;

	hWnd = CreateWindow(lpszClassName,
		TEXT("科技専プログラミング"),
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInst,
		NULL);
	if (!hWnd)
		return FALSE;
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	return TRUE;
}


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
	int id, i;
	HDC hdc;
	PAINTSTRUCT ps;
	LPCTSTR lpszTxt = TEXT("科技専プログラミング");
	static HFONT hFont[20];

	switch (msg) {
	case WM_CREATE:
		for (i = 0; i < 20; i++)
			hFont[i] = MyCreateFont(TEXT("MS ゴシック"),
			50 - i * 2,
			500 - i * 40);
		break;
	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);
		SetBkMode(hdc, TRANSPARENT);
		for (i = 0; i < 20; i++){
			SelectObject(hdc, hFont[i]);
			SetTextColor(hdc, RGB(255 - i * 25, 255 - i * 10, i * 20));
			TextOut(hdc, i * 25, i * 15, lpszTxt, lstrlen(lpszTxt));
		}
		EndPaint(hwnd, &ps);
		break;
	case WM_CLOSE:
		id = MessageBox(hwnd, TEXT("終了してもいい?"),
			TEXT("終了確認!"), MB_YESNO);
		if (id == IDYES)
			DestroyWindow(hwnd);
		break;
	case WM_DESTROY:
		for (i = 0; i < 20; i++)
			DeleteObject(hFont[i]);
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd, msg, wp, lp);
	}
	return 0;
}

HFONT MyCreateFont(LPCTSTR face, int h, int angle)
{
	HFONT hFont;
	hFont = CreateFont(h,
		0,
		angle,
		0,
		FW_BOLD,
		FALSE,
		FALSE,
		FALSE,
		SHIFTJIS_CHARSET,
		OUT_DEFAULT_PRECIS,
		CLIP_DEFAULT_PRECIS,
		PROOF_QUALITY,
		FIXED_PITCH | FF_MODERN,
		face);
	return hFont;
}

閉鎖

“C言語何でも質問掲示板” へ戻る