Click here to Skip to main content
15,893,790 members
Articles / Desktop Programming / MFC

Internationalization and Multiple Language Support

Rate me:
Please Sign up or sign in to vote.
4.65/5 (44 votes)
14 Dec 20025 min read 1.1M   4.3K   129  
Changing the language of a Windows program on the fly using resource only DLLs.
// MainFrm.h : interface of the CMainFrame class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAINFRM_H__FB77B2A6_3204_4D4E_AE58_C6583D6467EB__INCLUDED_)
#define AFX_MAINFRM_H__FB77B2A6_3204_4D4E_AE58_C6583D6467EB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "ChildView.h"

class CMainFrame : public CFrameWnd
{
	
public:
	CMainFrame();
protected: 
	DECLARE_DYNAMIC(CMainFrame)

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMainFrame)
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CMainFrame();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:  // control bar embedded members
	CStatusBar  m_wndStatusBar;
	CToolBar    m_wndToolBar;
	CChildView    m_wndView;

// Generated message map functions
protected:
	//{{AFX_MSG(CMainFrame)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSetFocus(CWnd *pOldWnd);
	afx_msg void OnLanguageDefault();
	afx_msg void OnLanguageEnglish();
	afx_msg void OnLanguageGerman();
	afx_msg void OnLanguageFrench();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

private:

	BOOL				m_bLoadedDLL;

	CMenu				*m_pMenuNew;

	enum	LANGUAGES {
							Default,
							English,
							French,
							German
							};

private:

	void				ReportError(LPCTSTR szMessage, DWORD dwLastError);

	void				SetLanguage(LANGUAGES nLanguage);
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAINFRM_H__FB77B2A6_3204_4D4E_AE58_C6583D6467EB__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United Kingdom United Kingdom
Ted wrote his first program c. 1972, and has been writing software professionally since 1975. For his sins he has been a user of Visual C++ from version 1.0 days.

On the odd days that he leaves his PC he is into walking in the Peak District, but tends to get waylaid at the lunch time pub.

Comments and Discussions