BOOL LoadBitmap(LPCTSTR lpszResourceName);
BOOL LoadBitmap(UINT nIDResource);
lpszResourceName : 비트맵 리소스의 이름을 포함하는 문자열입니다.
nIDResource: 비트맵 리소스 ID입니다.
위에 그림에서 비트맵의 ID를 \"SMUF0\", \"SMUF1\".... \"SMUF15\" 이런식으로 붙였는데
왜 ID에 \" \"를 꼭 붙여야 할까?
그냥 SMUF0, SMUF1, SMUF3, ... 이런식으로 ID를 만들고
CString tmp;
for(int i = 0; i < 16; i++)
{
tmp.Format(\"SMUF%d\", i);
m_BmpSmuf[i].LoadBitmap(tmp);
}
해주면 되지 않을까해서 해보니 비트맵이 로드되질 않는데
위에 코드 대로면 tmp 값은 그냥 SMUF0 SMUF1 ... SMUF15 가 되는거 아니야?
m_BmpSmuf[i].LoadBitmap(tmp); 에서 tmp 는 비트맵 리소스 이름을 포함하는
문자열로 봐야하지 않을까?
왜 굳이 비트맵 리소스의 ID를 \" \"를 붙여 줘야 하는지 이해가 안가서요..
그리고
m_BmpSmuf[i].LoadBitmap(tmp); 에서 tmp 는 비트맵 리소스 ID 로 봐야하나요?
아니면 문자열로 이해해야하나요?
혹시 아시는 햏들 답변 좀 부탁드려염...
tmp 를 바로 위에서 CString 형으로 선언해 놓았네.
그리고 tmp.Format(\"SMUF%d\", i) 이 문장이 뭘 의미하는거냐... i가 0이라면 tmp = SMUF0 이 되는 거자나.
tmp = \"SMUF0\" 이니까 LoadBitmap(tmp)는 LoadBitmap(\"SMUF0\")이 되는거지.
//크르릉 그러면... 위에 Bitmap Resource ID 에 \" \" 를 붙이지 않아도 되지 않을까요? 막상 \" \"를 제거하고 ID를 설정했더니 Load가 되질 않습니다 왜 일까요?
그리고 리소스 ID에 왜 \" \" 이걸 붙여야 하느냐는 질문은 답이 없다. 문법이 그렇기 때문. 문자는 \' \'로 둘러싸고 문자열은 \" \"로 둘러싸는게 C의 문법인데, 그 문법이 왜 그렇냐고 물어보면 원래 그렇게 만들어져서 그렇다고 밖에 대답 못한다.
윗분 정답. 좀 늦었넹 아는 거 나와서.. 얼릉 해볼려고 했더니만.. ㅠ.ㅠ
답을 다는 사이에 질문을 올렸네. 수고
tmp.Format(\"SMUF%d\", i); 가 아니고 tmp.Format(SMUF%d, i); 로 하면 SMUF 를 변수로 인식함
// 크르릉 햏 감사합니다. 어리석은 질문 한가지 더.... 그럼 위에서 쓰인 LoadBitmap(tmp) 에서 tmp 는 리소스 ID 로 생각해야 하나요? 아니면 리소스ID를 포함한 문자열의 포인터로 생각해야 할까요?
*잡담 * 옛날에 비주얼 베이직 할때.. 비주얼 C 하는 애들이.. 비베 프로그래머도 프로그래머냐고.. 많이 놀림 당했는데..
// 거물달 햏께도 감사드립니다.
tmp 는 CString 형 변수이고.. LoadBitmap 라는 메소드는 문자열과 호환가능한 변수들을 받으면 그 값(Value) 들을 리로스ID 로 인식하는 것... 이라고 생각함.. (여기까지가 짧은 지식임)
CString 는 일종의 클래스인데.. 음.. 아 설명이 좀 어렵다. 인터넷 참고.. ㅠ.ㅠ
흠, 나도 거기까지는 생각안해봤는데... 그냥 CString 형의 문자열과 ID의 문자열을 비교해서 같은 걸 매치시켜준다... 정도로 이해하고 넘어가면 안될까?
CString을 LPCTSTR 로 형 변환을 할 수 있을까? tmp는 CString이고 LoadBitmap 함수의 인자는 LPCTSTR인데도 정상적으로 컴파일 된다면 둘의 관계는?
CString = String , LPCTSTR = long pointer const string ... 그놈이 그놈 같은데...
C++ 기초플러스 책에 암시적 형변환 메소드 작성하는 거 나왔지 말입니다
크르릉// object와 문자배열이 같다고? 객체지향 언어 개념부터 새로 잡아야 겠다?
CString과 TCHAR 배열을 같다고 생각하는 것 자체가 이해가 안된다.