박지훈.임프 님이 쓰신 글 :
: 아쉽게도 WARSHIP님께서 말씀하신 코드는 동작하지 않는군요.
: Win32 SDK의 CreateWindow() 함수 설명에도 ES_RIGHT와 ES_CENTER는 멀티라인 에디트에서만 동작한다고
: 되어있습니다.
:
: 앞이나 뒤에 칸을 띄우려면.. 다시 말해 앞이나 뒤에 에디팅 영역이 아닌 부분을 공백으로 놔두려면 EM_SETRECT
: 메시지를 에디트의 핸들에 보내주면 됩니다. 제 기억으로 인자는 에디팅 영역으로 설정될 Rect 영역의 주소이고요.
: 에디트의 ClientRect를 받은 다음 거기서 Left를 증가시키거나(왼쪽에 공백을 둘 때) Right를 감소시키면 됩니다.
: (오른쪽에 공백을 둘 때)
:
: 자료실에 올려둔.. 저번에 델파이 커뮤니티 세미나때 컴포넌트 개발 세션 자료를 보시면 위의 메시지를 써서 에디트의
: 내부 왼쪽이나 오른쪽 공백을 비워두고 거기다가 다른 컨트롤을 올리게 해주는 컴포넌트 소스가 있습니다.
:
: 그럼...
:
:
: WARSHIP 님이 쓰신 글 :
: : 박지훈.임프 님이 쓰신 글 :
: : : 다음 글을 참고하세요.
: : :
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=24
: : :
: : :
: : : 왕초보 님이 쓰신 글 :
: : : : 왼쪽, 가운데, 오른쪽 정렬하는 방법은 알겠는데요..
: : : : 왼쪽에서부터 2칸 또는 5칸정도 띄우거나 오른쪽에서부터 띄우거나 하는 식의 정렬 방법은 없는건가요?
: : : : 머 그냥 스페이스바로 띄워쓰기는 말구요;;;
: : : : 어떤 정렬형식을 해주는 함수가 있을법 한데요...
: : : :
: : : : 답변하시는분님께 먼저 감사드립니다.
: :
: : 음 제가 알기론 싱글라인에서도 정렬은 됩니다만. ^^;
: : 2칸걸러 정렬같은기능은 없구요. 직접 만드셔야 할겁니다.
: :
: :
: : 컨트롤이 배치된 폼의 생성자에서 아래와 같이 윈도우 스타일을 추가해 주시면 됩니다.
: : ES_LEFT or ES_RIGHT or ES_CENTER 던가 세가지가 있구요.
: : //
: : LONG style = GetWindowLong(ed_rwidth->Handle,GWL_STYLE) | ES_RIGHT;
: : SetWindowLong(ed_rwidth->Handle,GWL_STYLE,style);
: : //
: :
: : 2,3칸 정렬 기능은 TEdit 를 상속하거나 아니면
: : OnKeyDown 이벤트에서
: : 정렬모드에따라 Edit1->Text 의 앞뒤에 공백을 유지시켜주는
: : 코딩이 필요하겠네요 ^^;
: : 왠지 쉽게 될거 같은 느낌이 드네요. 꼭 성공하시길 바랍니다!
제가 잘 쓰고 있는데 안된다고 하셔서 저도 궁금해서
검색을 해봤습니다.
결론은 윈도우 버젼에 따라 될수도 안될수도 있다네요. ^^;
msdn 검색 결과
ES_LEFT
Left aligns text.
ES_CENTER
Windows 98/Me, Windows 2000/XP: Centers text in a single-line or multiline edit control.
Windows 95, Windows NT 4.0 and earlier: Centers text in a multiline edit control.
ES_RIGHT
Windows 98/Me, Windows 2000/XP: Right aligns text in a single-line or multiline edit control.
Windows 95, Windows NT 4.0 and earlier: Right aligns text in a multiline edit control.
윈95이하나 NT4.0 이하에서는 오른쪽 정렬이나 센터 정렬이 멀티라인에서만 되는것이 맞네요.
98이상에서는 싱글도 되는거 같구요.