SendMessageA로 \r\n을 보내도 줄바꿈이 되지 않습니다

IBD@Google의 이미지

메모장의 edit 컨트롤을 찾아, 입력받은 대로 컨트롤의 내용을 변경하는 간단한 프로그램을 짜고 있습니다.
그런데 입력받은 string에 \r\n이 포함되어도 그대로 입력될 뿐 줄바꿈이 되질 않네요...
그냥 reinterpret_cast 전달값으로 "as\r\ndf"를 적으면 줄바꿈이 되는 걸로 봐선 변수 형 문제 같은데 아무리 찾아도 답이 안 보여서...
감사합니다.

#include <windows.h>
#include <iostream>
#include <cstdio>
#include <string>
#include <conio.h>
using namespace std;
 
int main()
{
    HWND p_wnd=NULL,edit_wnd=NULL;char a[100000];
    while (true){
        p_wnd= ::FindWindowW(L"Notepad",NULL);
        if (p_wnd != NULL) break;
    }
 
    cout << "창을 찾았습니다! 핸들 번호 " << p_wnd << endl;
    edit_wnd = ::FindWindowExW(p_wnd,edit_wnd,L"edit",NULL);
    cout << "변경할 값을 입력하세요: ";cin >> a;
    SendMessageA(edit_wnd, WM_SETTEXT, 0 ,reinterpret_cast<LPARAM>(a));
    cout << "변경 완료! 계속하려면 아무 키나 누르십시오 . . .";getch();
}
익명 사용자의 이미지

설마 위와 같이 짜 놓고 표준 입력으로 \r\n을 그대로 입력한 건 아니겠죠?

문자열 상수(string literal) 안에 \r이나 \n 등을 입력했을 때, 그걸 0x0d, 0x0a에 대응되는 문자로 인식해 주는 건 C++ 컴파일러의 기능입니다.

표준 입력을 통해 문자열을 입력받을 땐 그런 편리한 서비스를 이용할 수 없습니다. 직접 변환해 줘야 됩니다.

IBD@Google의 이미지

그러면 \r\n이 입력되면 0x0d 0x0a로 변환해주면 되겠군요... 감사합니다