LPWSTR에 인수로 넘길려면 어떻게 넘기면 되나요?
글쓴이: zieben / 작성시간: 일, 2004/04/11 - 12:00오전
API 프로그래밍에 대한 내용이라서 여기 올려도 되는지 모르겠습니다만..
제가 경험이 짧아서 API를 접해볼 기회가 전혀 없이 QT programming를 해와서 지식이 부족합니다.
도움 부탁드립니다.
LPSTR은 char*형과 같다고 들었습니다.
그렇다면 만약에 함수가 다음과 같은 형식으로 이루어져 있다면..HRESULT CDeviceItem::Create( LPSTR szItemID)
LPSTR의 인수로 char*를 보내도 되는건가요?
예를 들어서 다음과 같이..
char* id = "test" CDeviceItem item; item ->Create( id );
만약 그게 가능하다면..
여기부터가 정말로 궁금한 부분입니다.HRESULT CDeviceItem::Create( LPWSTR szItemID)
이렇게 되어있다면 함수의 인수로는 어떤 type을 보내야 하나요?
답변 부탁드립니다.
Forums:
QT는 다뤄본적이 없어서 모르겠지만, LPSTR이 char*로 typed
QT는 다뤄본적이 없어서 모르겠지만, LPSTR이 char*로 typedef 되어있다면 보내도 문제는 없습니다. 단, 차후에 LPSTR의 형이 바뀐다면 호환이 되지 않게 됩니다.
LPSTR로 넘기는건 LPSTR로 선언해서 쓰는게 정석입니다.
아래 함수에는 당연히 LPWSTR 형을 보내야지요. wchar*가 아닐까 예상은 하지만, LPWSTR로 선언해서 쓰십시오.
위 내용은 QT에 대한 내용이 아니라 Windows data type에
위 내용은 QT에 대한 내용이 아니라 Windows data type에 대한 내용같은데..
MS에서 정의해놓은 형이 이상한게 너무 많아서... :?
LPTSTR은 유니코드가 정의 되면 LPWSTR로 대체되고, 아니면
LPSTR로 대체 된다고 하죠. 당연히 위글에도 있듯이 LPSTR은 char * 이고,
LPWSTR은 wchar_t * 이겠죠. TCHAR 에 대해서는 페촐드 책을 참고하시면
자세히 나와있었던거같습니다. _T()매크로도 비슷하게 유니코드가 정의되면
L""로 대체되고, 아니면 그냥 사라집니다.
따라서,
잘못된 코드입니다. 근데 어느 참고도서에 이런 코드가 있는걸 본적이 있는거같아서....위코드는 #ifdef UNICODE가 있으면 b = La 가 되버리기 때문에 컴파일 에러가 나버리겠지요.
KLDP에 이런글 적으려니 좀 이상하군요. :lol: 그래도 참고 하시라고 적었습니다. 아래는 MSDN에 있는 전문입니다.
우선 답변주신 분들께 감사드립니다.
우선 답변 주신 분들께 감사드립니다.
지금 제가 맡고 있는 프로젝트가 DCOM을 사용해서 linux에서 무언가를 만드는 것입니다.
아시다시피 DCOM은 windows기반의 기술이기 때문에 linux에서 이걸 사용하기 위해서 다른 회사에서 만든 linux용 DCOM( linux에서 DCOM을 비슷하게 구현해놓았습니다)을 사다가 그 함수를 사용하고 있는데요..
이미 말씀드렸듯이 제가 API에 대한 경험이 전혀 없이 QT만을 사용해서 프로그래밍을 해왔기떄문에 애로사항이 많네요.
그렇다고 지금와서 API를 새로 공부해서 하기에는 프로젝트 기간이 너무 짧구요..
서론이 길었습니다만.. 몇가지만 더 질문 드리겠습니다.
현재 QString으로 정의된 변수를 위에 말씀드린 LPWSTR의 인수로 보내고 싶습니다.
워에 분께서 답변 주신걸 보고 DCOM소스를 좀 뒤적이다 보니
LPWSTR -> WCHAR -> wchar_t 타입이 맞는것 같습니다.
그래서 이제 이 QString변수를 wchar_t로 형변환해서 보내면 될것 같은데..
QString를 unicode로 바꾸는 함수는 세가지가 있더군요.
이렇게 세가지구요..
각각 주석은..
unicode() -> Returns the Unicode representation of the string
ascii() -> Returns an 8-bit ASCII representation of the string.
latin1() -> Returns a Latin-1 representation of the string.
얼핏보면 첫번째 함수를 사용하면 될것 같은데..
pVar->m_name 은 QString으로 정의된 변수입니다.
그리고 Create함수는 LPWSTR타입을 argument로 받습니다.
이렇게 하면 되지 않을까 싶은데...
맞을까요?
조언 부탁드립니다.
QChar 와 WCHAR가 같은 타입이라면 가능할 것 같네요. 둘 다 w
QChar 와 WCHAR가 같은 타입이라면 가능할 것 같네요. 둘 다 wchar_t 인가요?
Heejoon Lee
흠... 윈도우의 wchar_t 와 리눅스의 wchar_t 는 호환되지
흠... 윈도우의 wchar_t 와 리눅스의 wchar_t 는 호환되지 않는 타입일텐데요. sizeof 로 찍어보세요.
댓글 달기