목차
1. Error Code
2. DLL 제작
3. 01 ErrorShow 프로젝트에 DLL 끼워 넣기
4. 실행 화면
2. DLL 제작
3. 01 ErrorShow 프로젝트에 DLL 끼워 넣기
4. 실행 화면
본문내용
it does not write it is a source
.
Language = Korean
더 이상 쓰지 못하는 소스입니다.
.
MessageId = 4
SymbolicName = IDS_INCORRECT
Language = English
It is incorrect do all again
.
Language = Korean
다 틀렸으니 다시 하세요.
.
;
;#endif //__MESSAGES_H__
;
Step 6 - Compile the message file
Messages.mc file만 Ctrl+F7을 이용하여 따로 컴파일합니다. 이 컴파일 과정을 마치게 되면 4개의 file이 생성됩니다.
1. messages.h가 생성. 안에는 입력한 모든 message ID가 들어가 있다.
2. res/messages.rc
3. 영어 메세지 정의 res/Messages_ENU.bin
4. 한글 메세지 정의 res/Messages_KOR.bin
Step 7 - Include the message resource into the main resource script
resource teb에서 resource includes...를 선택 후 다음을 설정합니다.
Step 8 - Extending the include path for rc.exe
include directory에 ./res path를 추가한다.
Step 9 - Make DLL Main
간단한 main을 만들었습니다.
DllMain의 각 파라미터의 내용은 다음과 같습니다.
hinstDll - dll의 핸들. dll이 로드된 곳의 메모리 주소가 들어옵니다.
fdwReason - DllMain이 호출된 이유가 들어 있습니다. DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, DLL_THREAD_ATTACH, DLL_THREAD_DETACH 중의 1개의 값을 갖습니다.
lpReserved - dll이 로드된 방법. explicit linking인 경우 NULL이 implicit linking인 경우 NULL이 아닌 값을 가집니다.
3. 01 ErrorShow 프로젝트에 DLL 끼워 넣기
01 ErrorShow에서 NetMsg.dll을 explicit linking으로 연결했기에 MyError.dll도 같은 방법으로 연결했습니다. 먼저 Messages.h를 01 ErrorShow 프로젝트 폴더에 옮긴 후 다음의 코드를 추가하였습니다.
#include
01 ErrorShow 프로젝트의 구조가 첫 번째 FormatMessage 호출 후 if문을 통해 실패 시 NetMsg.dll을 호출하게 되어 있습니다. 저는 이 안에서 NetMsg.dll 호출이 끝난 후 두 번째 FormatMessage 호출 후 error text를 저장하는 hlocal이 NULL인지를 확인하여 MyError.dll을 호출하는 방식을 사용하였습니다. 코드는 다음과 같습니다.
타원 안의 내용이 추가된 코드입니다. 또한 현재의 코드에서는 5자리의 숫자만 입력받을 수 있으므로 TextBox의 길이를 늘리고 다음의 코드를 수정하였습니다.
Edit_LimitText(GetDlgItem(hwnd, IDC_ERRORCODE), 10);
4. 실행 화면
문제없이 정상 작동합니다.
5. 과제 제작 환경 및 참고 자료
MyError.dll은 Visual Studio 6.0에서 예시되었던 01 ErrorShow 프로젝트는 Visual Studio 2005의 구버전 변환기능을 사용하여 프로그래밍 하였습니다.
참고자료 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍, 윤성우 저
참고 사이트 : codeproject.com
.
Language = Korean
더 이상 쓰지 못하는 소스입니다.
.
MessageId = 4
SymbolicName = IDS_INCORRECT
Language = English
It is incorrect do all again
.
Language = Korean
다 틀렸으니 다시 하세요.
.
;
;#endif //__MESSAGES_H__
;
Step 6 - Compile the message file
Messages.mc file만 Ctrl+F7을 이용하여 따로 컴파일합니다. 이 컴파일 과정을 마치게 되면 4개의 file이 생성됩니다.
1. messages.h가 생성. 안에는 입력한 모든 message ID가 들어가 있다.
2. res/messages.rc
3. 영어 메세지 정의 res/Messages_ENU.bin
4. 한글 메세지 정의 res/Messages_KOR.bin
Step 7 - Include the message resource into the main resource script
resource teb에서 resource includes...를 선택 후 다음을 설정합니다.
Step 8 - Extending the include path for rc.exe
include directory에 ./res path를 추가한다.
Step 9 - Make DLL Main
간단한 main을 만들었습니다.
DllMain의 각 파라미터의 내용은 다음과 같습니다.
hinstDll - dll의 핸들. dll이 로드된 곳의 메모리 주소가 들어옵니다.
fdwReason - DllMain이 호출된 이유가 들어 있습니다. DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, DLL_THREAD_ATTACH, DLL_THREAD_DETACH 중의 1개의 값을 갖습니다.
lpReserved - dll이 로드된 방법. explicit linking인 경우 NULL이 implicit linking인 경우 NULL이 아닌 값을 가집니다.
3. 01 ErrorShow 프로젝트에 DLL 끼워 넣기
01 ErrorShow에서 NetMsg.dll을 explicit linking으로 연결했기에 MyError.dll도 같은 방법으로 연결했습니다. 먼저 Messages.h를 01 ErrorShow 프로젝트 폴더에 옮긴 후 다음의 코드를 추가하였습니다.
#include
01 ErrorShow 프로젝트의 구조가 첫 번째 FormatMessage 호출 후 if문을 통해 실패 시 NetMsg.dll을 호출하게 되어 있습니다. 저는 이 안에서 NetMsg.dll 호출이 끝난 후 두 번째 FormatMessage 호출 후 error text를 저장하는 hlocal이 NULL인지를 확인하여 MyError.dll을 호출하는 방식을 사용하였습니다. 코드는 다음과 같습니다.
타원 안의 내용이 추가된 코드입니다. 또한 현재의 코드에서는 5자리의 숫자만 입력받을 수 있으므로 TextBox의 길이를 늘리고 다음의 코드를 수정하였습니다.
Edit_LimitText(GetDlgItem(hwnd, IDC_ERRORCODE), 10);
4. 실행 화면
문제없이 정상 작동합니다.
5. 과제 제작 환경 및 참고 자료
MyError.dll은 Visual Studio 6.0에서 예시되었던 01 ErrorShow 프로젝트는 Visual Studio 2005의 구버전 변환기능을 사용하여 프로그래밍 하였습니다.
참고자료 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍, 윤성우 저
참고 사이트 : codeproject.com
키워드
추천자료
무선 모바일 자바 프로그래밍을 통한 logbook의 구현
[FORTRAN] 암호생성기, 암호해독기 알고리즘
28 C# 특성(Attribute)
얼굴인식 기술을 이용한 침입자 감시 시스템 구축(Visual C++)
자바로 태극기 그리기 소스
단계별 실습으로 배우는 visual c++ 6.0 연습문제 풀이
C++가계부
물류관리프로그램 C언어 5poker game 포커게임 소스코드
빅데이터 활용사례
미래의 로봇에 대해
유비쿼터스컴퓨팅개론1공통)스마트폰에서 사용되는 안드로이드 롤리팝 운영체제의 특징과 애...
★ 호텔마케팅 - PARADISE, HAYATT( 파라다이스, 하얏트, 파라다이스 호텔 Package ,그랜드하...