https://www.embarcadero.com/free-tools/dev-cpp/free-download

Dev-C - Free Download - EmbarcaderoEmbarcadero Dev-C++ Fast, Portable, Simple, and Free C/C++ IDE for Windowswww.embarcadero.com

https://github.com/Embarcadero/Dev-Cpp/releases

(등록절차 없이 바로 다운로드 받으려면 여기서)


Dev C++은 가볍게 만들어진 윈도우용 공개 C/C++ IDE입니다.

윈도우용 GCC와 내장 디버거(GDB)갖추고 있습니다.

델파이로 만들어졌으며 모든 소스코드가 공개되어 있습니다.


에디터 부분은 SynEdit 컴포넌트가 사용되었고 한글입력 버그는

리눅스의 gedit, gvim에서와 동일한 형태로 나타납니다.


이 버그를 수정하기 위해서는 다음 파일에서 IME 관련 부분을

적절히 수정해야 합니다.


Source/VCL/SynEdit/Source/SynEdit.pas



procedure WMImeChar(var Msg: TMessage); message WM_IME_CHAR; procedure WMImeComposition(var Msg: TMessage); message WM_IME_COMPOSITION; procedure WMImeNotify(var Msg: TMessage); message WM_IME_NOTIFY;


procedure TCustomSynEdit.WMImeChar(var Msg: TMessage); begin // do nothing here, the IME string is retrieved in WMImeComposition // Handling the WM_IME_CHAR message stops Windows from sending WM_CHAR // messages while using the IME end; procedure TCustomSynEdit.WMImeComposition(var Msg: TMessage); var imc: HIMC; PW: PWideChar; ImeCount: Integer; begin if (Msg.LParam and GCS_RESULTSTR) <> 0 then begin imc := ImmGetContext(Handle); try ImeCount := ImmGetCompositionStringW(imc, GCS_RESULTSTR, nil, 0); // ImeCount is always the size in bytes, also for Unicode GetMem(PW, ImeCount + sizeof(WideChar)); try ImmGetCompositionStringW(imc, GCS_RESULTSTR, PW, ImeCount); PW[ImeCount div sizeof(WideChar)] := #0; CommandProcessor(ecImeStr, #0, PW); finally FreeMem(PW); end; finally ImmReleaseContext(Handle, imc); end; end; inherited; end; procedure TCustomSynEdit.WMImeNotify(var Msg: TMessage); var imc: HIMC; LogFontW: TLogFontW; begin with Msg do begin case WParam of IMN_SETOPENSTATUS: begin imc := ImmGetContext(Handle); if imc <> 0 then begin GetObjectW(Font.Handle, SizeOf(TLogFontW), @LogFontW); ImmSetCompositionFontW(imc, @LogFontW); ImmReleaseContext(Handle, imc); end; end; end; end; inherited; end;