mfc_memo - 8BitsCoding/RobotMentor GitHub Wiki


๊ธฐ๋ณธ์ ์œผ๋กœ editctrl์˜ ์†์„ฑ์„ค์ •์€ ์•Œ๋ž˜์™€ ๊ฐ™์ดํ•œ๋‹ค.

์ด๋ฏธ์ง€

  • Multiline : ์—ฌ๋Ÿฌ์ค„ ์ž…๋ ฅ์„ ๋ฐ›๊ฒ ๋‹ค.
  • No Hide Selection : ๋“œ๋ž˜๊ทธ ํ›„ ํฌ์ปค์Šค๋ฅผ ์žƒ์–ด๋„ ๋“œ๋ž˜๊ทธํ•œ ์ง€์ ์„ ๋ณด์—ฌ์ฃผ๊ฒ ๋‹ค.
  • Want Return : ๋ผ์ธ์„ ๋„˜๊ธธ๋•Œ Ctrl+Enter๊ฐ€ ์•„๋‹ˆ๋ผ Enter๋กœ ๋„˜๊ธฐ๊ฒ ๋‹ค.

์ฐธ๊ณ , ๊ธฐ๋ณธ์ ์œผ๋กœ Visual Studio ๊ธฐ๋ณธ ํŒŒ์ผ cpp, h ๋“ฑ ์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉ ๋˜์–ด ์žˆ๋‹ค.

์ด๋ฏธ์ง€

๋”ฐ๋ผ์„œ ์ฝ”๋”ฉ ์‹œ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ, ์œ ๋‹ˆ์ฝ”๋“œ ๋“ฑ์˜ ์ธ์ฝ”๋”ฉ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ์„ ํ•ด ์ค˜์•ผํ•œ๋‹ค.


void CMFCApplication2Dlg::OnBnClickedOpenBtn()
{
	wchar_t name_file[] = L"๋ชจ๋“  ํŒŒ์ผ(*.*)|*.*|C++ ํŒŒ์ผ(*.cpp)|*.cpp|Header ํŒŒ์ผ(*.h)|*.h|ํ…์ŠคํŠธ ํŒŒ์ผ(*.txt)|*.txt||";
	CFileDialog ins_dlg(TRUE, L"cpp", L"*.cpp", OFN_HIDEREADONLY | OFN_NOCHANGEDIR, name_file, NULL);
	// 1 - TRUE : ํŒŒ์ผ ์—ด๊ธฐ ๋Œ€ํ™”์ƒ์ž / FALSE : ํŒŒ์ผ ์ €์žฅ ๋Œ€ํ™”์ƒ์ž
	// cpp : ํŒŒ์ผ ์ด๋ฆ„์„ ๊ธฐ๋ณธ์ง€์ •
	// OFN_NOCHANGEDIR - ์›Œํ‚น ๋””๋ ‰ํ„ฐ๋ฆฌ ์ •๋ณด๋ฅผ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.
	// NULL - ๋ถ€๋ชจ ์œˆ๋„์šฐ ๋„ฃ๋Š”์ž๋ฆฌ
	ins_dlg.m_ofn.nFilterIndex = 2;
	// ๋””ํดํŠธ ํŒŒ์ผ ํ•„ํ„ฐ์˜ ์„ ํƒ์ด ํ•„ํ„ฐ์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž C++ ํŒŒ์ผ(*.cpp)๋กœ ์ง€์ •
	if (IDOK == ins_dlg.DoModal()) {
		SetDlgItemText(IDC_PATH_EDIT, ins_dlg.GetPathName());
		// ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅ

		FILE * p_file = NULL;
		CString str;
		if (0 == _wfopen_s(&p_file, ins_dlg.GetPathName(), L"rt")) {
			char temp_str[1024];
			int length;
			wchar_t unicode_str[1024];

			while (fgets(temp_str, 1024, p_file) != NULL) {	// ํ•œ ์ค„ ์”ฉ ์ฝ์–ด๋‚˜๊ฐ„๋‹ค. 
				// UTF to ์œ ๋‹ˆ์ฝ”๋“œ
				length = MultiByteToWideChar(CP_UTF8, 0, temp_str, -1, NULL, 0);
				MultiByteToWideChar(CP_UTF8, 0, temp_str, -1, unicode_str, length);

				str += unicode_str;
			}
			str.Replace(L"\n", L"\r\n");	// ๊ฐœํ–‰๋ฌธ์ž ์ˆ˜์ •
			SetDlgItemText(IDC_NOTE_EDIT, str);
			fclose(p_file);
		}
	}
}
void CMFCApplication2Dlg::OnBnClickedSaveBtn()
{
	wchar_t name_file[] = L"๋ชจ๋“  ํŒŒ์ผ(*.*)|*.*|C++ ํŒŒ์ผ(*.cpp)|*.cpp|Header ํŒŒ์ผ(*.h)|*.h|ํ…์ŠคํŠธ ํŒŒ์ผ(*.txt)|*.txt||";
	CFileDialog ins_dlg(FALSE, L"cpp", L"*.cpp", OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_OVERWRITEPROMPT, name_file, NULL);
	ins_dlg.m_ofn.nFilterIndex = 2;
	//OFN_OVERWRITEPROMPT : ์ €์žฅ ์‹œ ํ•ด๋‹น ํŒŒ์ผ์ด ์กด์žฌํ•˜๋ฉด ์ €์žฅํ• ์ง€ ๋‹ค์‹œ ๋ฌป๊ธฐ
	
	if (IDOK == ins_dlg.DoModal()) {
		SetDlgItemText(IDC_PATH_EDIT, ins_dlg.GetPathName());

		FILE * p_file = NULL;
		CString str;
		if (0 == _wfopen_s(&p_file, ins_dlg.GetPathName(), L"wt")) {
			GetDlgItemText(IDC_NODE_EDIT, str);
			str.Replace(L"\r\n", L"\n");

			int length = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
			char * p = new char[length];
			WideCharToMultiByte(CP_ACP, 0, str, -1, p, length, NULL, NULL);
			fwrite(p, length, 1, p_file);

			delete[] p;
			fclose(p_file);
		}
	}
}