본문 바로가기

IT/C++, MFC

[Waring 해결사] warning C4003: 'CreateWindowW' 매크로의 실제 매개 변수가 부족합니다.

 

[그림 1] 코드에서 메세지 찾기
[그림 2] warning C4003: 'CreateWindowW' 매크로의 실제 매개 변수가 부족합니다. error C2059: 구문 오류 : ')'

 

https://learn.microsoft.com/ko-kr/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4003?view=msvc-140

 

컴파일러 경고(수준 1) C4003

자세한 정보: 컴파일러 경고(수준 1) C4003

learn.microsoft.com

 

'identifier' 매크로의 실제 매개 변수가 부족합니다.

매크로 정의의 공식 매개 변수 수가 매크로의 실제 매개 변수 수를 초과합니다. 매크로 확장은 누락된 매개 변수의 빈 텍스트를 대체합니다.

정의해놓은 함수 매개 변수의 갯수 > 실제 사용하는 함수의 매개 변수의 갯수

	hWnd=CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);
		case WM_CREATE:
			hRed=CreateWindow(TEXT("scrollbar"),NULL, WS_CHILD | WS_VISIBLE | SBS_HORZ,
				10.10,400,20,hWnd,(HMENU)ID_SCRRED,g_hInst,NULL);
			hGreen=CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
				10.40,400,20,hWnd,(HMENU)ID_SCRGREEN,g_hInst,NULL);
			hBlue=CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
				10.70,400,20,hWnd,(HMENU)ID_SCRBLUE,g_hInst,NULL);

1. 대응하는 변수 : 

hWnd
hRed, hGreen, hBlue


2. 대응하는 함수 :

CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL)
CreateWindow(TEXT("scrollbar"),NULL, WS_CHILD | WS_VISIBLE | SBS_HORZ,
10.10,400,20,hWnd,(HMENU)ID_SCRRED,g_hInst,NULL)
CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10.40,400,20,hWnd,(HMENU)ID_SCRGREEN,g_hInst,NULL);
CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10.70,400,20,hWnd,(HMENU)ID_SCRBLUE,g_hInst,NULL);

3. 대응하는 변수와 함수가 잘 맞으니 함수 원형 선언 안에 들어가는 매개 변수를 세어 보자.

CreateWindow(1,2,3,4,5,6,7,8,9,10,11)

에 들어가는 매개변수 총 11개 되시겠다.

사용하고 있는 함수에도 11개인데 왜 에러가 뜨는 것일까?

4. 

CreateWindow(TEXT("scrollbar"),NULL, WS_CHILD | WS_VISIBLE | SBS_HORZ,
10.10,400,20,hWnd,(HMENU)ID_SCRRED,g_hInst,NULL)
CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10.40,400,20,hWnd,(HMENU)ID_SCRGREEN,g_hInst,NULL);
CreateWindow(TEXT("scrollbar"),NULL,WS_CHILD | WS_VISIBLE | SBS_HORZ,
10.70,400,20,hWnd,(HMENU)ID_SCRBLUE,g_hInst,NULL);

,.으로 작성해놓아서 컴파일러가 매개변수를 10, 10이 아닌 10.10으로 인식하고 있는거다. 생각보다 이런 실수는 잦다. 

 

'IT > C++, MFC' 카테고리의 다른 글

[윈도우즈 API 정복] 7-5-나. 스태틱  (0) 2023.08.25
[윈도우즈 API 정복] 7-5-가. 스크롤 바  (0) 2023.08.21
1년 계획표  (0) 2023.08.14
[MFC] error C2664  (0) 2023.05.17
C, C++ 학습 링크  (0) 2023.05.17