거의 같죠..
두개의 멤버만 차이가 있습니다.
WNDCLASSEX에는 WNDCLASS멤버에 없는.. cbSize와 hSmIcon이 더 추가된거 외엔 없죠..
cbSize는 WNDCLASSEX 구조체의 크기를 나타내고..
WNDCLASS는 hIcon에 대입한 아이콘 핸들을 이용해서 큰 아이콘과 작은 아이콘을 나타내지만..
WNDCLASSEX에서는 큰 아이콘과 작은 아이콘을 구별해서 사용할 수 있도록 되있습니다.
WNDCLASSEX::cbSize = sizeof(WNDCLASSEX);
WNDCLASSEX::hSmIcon = NULL;
이렇게 하면 WNDCLASS와 동일하다고 보면 될겁니다.
아래는 WNDCLASS와 WNDCLASSEX의 호환성 부분에 대한 MSDN의 설명입니다.
WNDCLASS
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Requires version 1.0 or later.
Header: Declared in winuser.h.
Unicode: Defined as Unicode and ANSI structures.
* Windows NT 3.1 이상, Windows 95 이상, Windows CE 1.0 이상
WNDCLASSEX
Windows NT: Requires version 3.5 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winuser.h.
Unicode: Defined as Unicode and ANSI structures.
* Windows NT 3.5 이상, Windows 95 이상, Windows CE는 지원되지 않음.
차이가 나는 부분은 Windows CE의 지원 여부와, Windows NT 버전 여부인데..
Windows NT의 경우 요즘은 3.5 조차도 사용하지 않기 때문에..
실제로 Windows CE를 위한 프로그래밍이 아니라면 둘다 사용할 수 있습니다.
또 하나의 차잇점이라면, WNDCLASS를 등록하는 함수가 차이가 있겠죠..
WNDCLASS 는 RegisterClass()함수를, WNDCLASSEX는 RegisterClassEx()함수를 사용합니다.
아랫분 말씀에 딴지거는것 같아서 이렇게 말하긴 미안하지만..
이 함수가 만들어질 당시에 NT 5.0은 나오지도 않았죠..
제가 DirectX를 사용해본적이 없어서.. 뭐라고 확답은 못드리겠습니다만..
코딩에 오류가 있는게 아니라면..
DirectX가 사용하는 데이터형에 제한이 있을수도 있겠다는 생각이 드는군요..
두개의 멤버만 차이가 있습니다.
WNDCLASSEX에는 WNDCLASS멤버에 없는.. cbSize와 hSmIcon이 더 추가된거 외엔 없죠..
cbSize는 WNDCLASSEX 구조체의 크기를 나타내고..
WNDCLASS는 hIcon에 대입한 아이콘 핸들을 이용해서 큰 아이콘과 작은 아이콘을 나타내지만..
WNDCLASSEX에서는 큰 아이콘과 작은 아이콘을 구별해서 사용할 수 있도록 되있습니다.
WNDCLASSEX::cbSize = sizeof(WNDCLASSEX);
WNDCLASSEX::hSmIcon = NULL;
이렇게 하면 WNDCLASS와 동일하다고 보면 될겁니다.
아래는 WNDCLASS와 WNDCLASSEX의 호환성 부분에 대한 MSDN의 설명입니다.
WNDCLASS
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Requires version 1.0 or later.
Header: Declared in winuser.h.
Unicode: Defined as Unicode and ANSI structures.
* Windows NT 3.1 이상, Windows 95 이상, Windows CE 1.0 이상
WNDCLASSEX
Windows NT: Requires version 3.5 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in winuser.h.
Unicode: Defined as Unicode and ANSI structures.
* Windows NT 3.5 이상, Windows 95 이상, Windows CE는 지원되지 않음.
차이가 나는 부분은 Windows CE의 지원 여부와, Windows NT 버전 여부인데..
Windows NT의 경우 요즘은 3.5 조차도 사용하지 않기 때문에..
실제로 Windows CE를 위한 프로그래밍이 아니라면 둘다 사용할 수 있습니다.
또 하나의 차잇점이라면, WNDCLASS를 등록하는 함수가 차이가 있겠죠..
WNDCLASS 는 RegisterClass()함수를, WNDCLASSEX는 RegisterClassEx()함수를 사용합니다.
아랫분 말씀에 딴지거는것 같아서 이렇게 말하긴 미안하지만..
이 함수가 만들어질 당시에 NT 5.0은 나오지도 않았죠..
제가 DirectX를 사용해본적이 없어서.. 뭐라고 확답은 못드리겠습니다만..
코딩에 오류가 있는게 아니라면..
DirectX가 사용하는 데이터형에 제한이 있을수도 있겠다는 생각이 드는군요..