How to set accented characters on a Button in MFC application

SG 35 Reputation points
2023-10-17T20:16:07.31+00:00

Hi,
I'm developping a little MFC project to drive an Arduino board.
I try to change caption in a Button but accented characters (french) are displayed as garbage.

My code:

void CMFCArduinoDlg::OnBnClickedButtonConnecter()
{
	btnConnecter.SetWindowTextW(L"Connecté");
}


The problem is I expected "Connecté" but it appears "Connecté"
The function SetWindowTextW expects a LPCTSTR.

I think the problem is because I give a const wchar_t (L prefix), but I didn't find any other solution to initialise a LPCTSTR.

I think the problem is here because when I design my dialog, the accented text passed to the button in the dialog editor is well displayed when I run the app. The garbage text comes when I call SetWindowTextW (idem with SetWindowText).

For information, Locale is set to French in resource file:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH


The charset in my project properties is set to Unicode

Thanks for reading, I hope to find an issue.

Windows development | Windows API - Win32
Developer technologies | C++
Developer technologies | Visual Studio | Other
{count} vote

Accepted answer
  1. Viorel 122.6K Reputation points
    2023-10-18T09:13:11.82+00:00

    Try to use the “Save As” command from FILE menu for the source file that contains L"Connecté", select the “Save with Encoding” from dropdown menu of Save button, select the “Unicode” or “Unicode (UTF-8 with signature)” encoding. Do not select the “Unicode (UTF-8 without signature)” encoding.

    3 people found this answer helpful.
    0 comments No comments

1 additional answer

Sort by: Most helpful
  1. SG 35 Reputation points
    2023-10-18T11:55:38.6333333+00:00

    Are your systems configured to use utf-8 for non-Unicode programs?

    No, it's unchecked, it's one of the first things I looked for. I think the problem is with VC configuration

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.