한 걸음 한 걸음 너에게 VC 순수 자원 dll로 국제화 문제를 해결하는 것을 가르쳐 준다
한 걸음 한 걸음 너에게 VC 순수자원 dll로 국제화 문제를 해결하는 것을 가르쳐 주었다. 이것은 정말 옛말이다. 왜냐하면 이 안에 기술적 함량이 확실히 없기 때문이다. 단지 실현하기가 좀 번거롭기 때문이다. 그러나 나는 이 방면을 막 접한 동료들이 너무 많은 시행착오를 겪지 않기를 바란다.MFC 응용 프로그램도 자신의 자원 파일이 있기 때문에 MFC 함수, 예를 들어 Cstring::LoadString 또는 다른 LoadIcon을 호출할 때 MFC 응용 프로그램 프레임워크는 먼저 EXE 파일의 자원을 추적하고 그 다음에 DLL과 MFC의 자원을 추적한다. 따라서 순수한 자원 DLL을 사용할 때 자원의 검색 순서를 인위적으로 바꿔야 한다. AfxSetourceHandle 함수를 사용하여 구체적으로 다음과 같이 실현할 수 있다.
BOOL CMultilanguageApp::InitInstance()
{
AfxEnableControlContainer();
if (m_bChinese)
{
m_hLangDLL=::LoadLibrary("chinese.dll");
}
else
{
m_hLangDLL=::LoadLibrary("english.dll");
}
AfxSetResourceHandle(m_hLangDLL);
……
}
다음은 구체적인 실현 절차를 이야기하기 시작한다.
1. 메인 프로젝트 만들기
단계:
3. 중국어 버전의 DLL을 만드는 구체적인 방법은 영어 버전의 DLL을 만드는 것과 같이 프로젝트 이름을chinese로 변경한다.Project 메뉴에서 Setting... 옵션만 선택합니다.그런 다음 Link 태그 아래의 Project Options에/NOENTRY 옵션을 추가합니다.마지막으로 동적 링크 라이브러리를 컴파일하고 만듭니다.4. multilanguage 프로젝트를 수정하여 CMultilanguageApp 클래스에 다음과 같은 구성원 변수를 추가합니다.
private:
BOOL m_bChinese;
HINSTANCE m_hLangDLL;
구조 함수에서 초기화:
CMultilanguageApp::CMultilanguageApp()
{
m_bChinese = TRUE;
m_hLangDLL = NULL;
}
InitInstance() 함수에서 리소스 로드 순서를 수정하려면 다음과 같이 하십시오.
BOOL CMultilanguageApp::InitInstance()
{
AfxEnableControlContainer();
if (m_bChinese)
{
m_hLangDLL=::LoadLibrary("chinese.dll");
}
else
{
m_hLangDLL=::LoadLibrary("english.dll");
}
AfxSetResourceHandle(m_hLangDLL);
……
}
ExitInstance() 함수가 로드된 dll 리소스를 해제하는 것을 잊지 마십시오.
int CMultilanguageApp::ExitInstance()
{
if(m_hLangDLL)
AfxFreeLibrary(m_hLangDLL);
return CWinApp::ExitInstance();
}
마지막 컴파일 실행!
소결
이상의 방법은 중국어와 영문 소프트웨어 인터페이스를 실현했지만 조금만 확장하면 다중 언어에 대한 지원을 실현하기 쉽다.
연락처: QQ:36201365
e-mail:[email protected]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytest 테스트 프레임워크 기본 사용 방법 상세 정보pytest 소개 2. 매개 변수화를 지원하여 테스트할 테스트 용례를 세밀하게 제어할 수 있다. 3. 간단한 단원 테스트와 복잡한 기능 테스트를 지원할 수 있고selenium/appnium 등 자동화 테스트, 인터페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.