본문 바로가기
MFC DLL 함수 로드할 때 C2564 에러 원인 해결 MFC에서 DLL 사용할 때 종종 발생하는 에러입니다. 저에게 발생했던 이유는 변수 이름을 잘못 적은 게 원인이었습니다. 기본 제공 형식으로 함수 스타일 변환을 수행할 때에는 인수를 하나만 사용할 수 있습니다. dll을 사용할 때 헤더 파일에 아래와 같이 호출할 함수를 정의합니다. 1typedef int (__stdcall *something)(char * arr);cs 그리고 명시적으로 호출할 함수 something과 매칭되는 변수 var_something를 정의합니다. 1something var_something;cs cpp 파일에서 dll 함수 로드 등 여러 구현을 하겠죠. 그리고 something이 아니라 객체 변수 var_something을 호출하여 사용해야 하는데, something을 호출해 .. 2019. 7. 25.
MFC Edit Control 문자열 추가 (에디트 박스 텍스트, 에디트 컨트롤) MFC Edit Control 문자열 추가 (에디트 박스 텍스트, 에디트 컨트롤) MFC 에디트 컨트롤(Edit Control)에 텍스트를 추가하는 방법으로는 GetWindowText()를 호출한 다음에, 텍스트 정보를 불러들여 새로운 내용을 추가한 다음 SetWindowText()로 다시 설정하는 것이죠. GetWindowText() -> 텍스트 정보에 내용 추가 -> SetWindowText() 그렇지만, 이미 창의 텍스트에 길이가(GetLength()) 너무 길면, 매우 비효율적인 방법이 됩니다. 새로 설정한 텍스트에 맞춰 길이까지 매번 조절해야 하고, 그 때문에 발생할 UI의 전체 문제까지 생각해 보면 머리가 아픕니다. 그래서 위의 방법은 전반적인 방향 정도로만 생각하고 조금 다른 방법을 찾아서 .. 2018. 9. 29.
LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 설명 LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 설명 간단하게 MFC 문자열인 LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR이 무엇인지 설명합니다. 먼저, 멀티바이트와 유니코드의 차이점 부터 간단히 살펴보죠. Multibyte : char (영문자에 1byte, " "로 사용)Unicode : w_char, wide char형으로 type casting (영문자에 2byte, L""로 사용) 그리고 LP와 C가 무엇인지도 살펴보죠. LP : long pointer 16bit (Net에선 64bit pointer, VC++6.0에선 32bit pointer)C : Constant (상수를 의미) 문자열은 String 자료형과 .. 2018. 1. 18.
MFC 문자 찾기 함수 Find(), ReverseFind() (문자열에서 문자 찾기) MFC 문자 찾기 함수 Find(), ReverseFind() (문자열에서 문자 찾기) MFC 문자 찾기 함수 Find(), ReverseFind() (문자열에서 문자 찾기) 문자열에서 원하는 문자를 찾으려면 Find와 ReverseFind함수를 사용하면 됩니다. 간단한 예제를 보죠. 1234567CString target("");char tok = '_';int index = 0; target = "MFC_cstring_example"; index = target.Find(tok);cs 찾기 성공 : 문자 위치 (인덱스) 반환찾기 실패 : -1 반환 7번 라인 : target 문자열에서 '_' 언더바를 찾아 인덱스를 반환합니다. 근데, 왼쪽, 즉 앞에서 찾는 게 아니라 뒤에서 찾고 싶다면? 그땐 Rev.. 2017. 6. 17.
MFC C# 문자열 자르기 비교 - CString String Mid, Left, Right MFC(CString class)에서 Left, Mid, Right를 사용하여 문자열 자르기하는 방법은 아래와 같습니다. MFC (CString) Samples: 12345678910CString somestring = L"ABCDEFG"; somestring.Left(3) == L"ABC" somestring.Mid(2,3) == L"CDE"somestring.Mid (2) == L"CDEFG" somestring.Right(3) == L"EFG" The index starts at 0 (MFC and C#), so nIndex=2 means the 3rd char!cs C#의 Substring()과 비교하면 이렇습니다. 두 언어의 문자열 자르기 비교표입니다. MFC (CString) C# (strin.. 2017. 3. 7.