D 언어의 Windows 견본을 만들어 보았습니다.
Windows 프로그래밍 언어 D(일본어)
winsamp 샘플 실행하기
DMD에 첨부됩니다
winsamp.d
자체 환경에 복사하여 구축합니다.일본어로 해보겠습니다.
그럼 일본어를 D 언어로 처리할 수 있을까요?대부분의 작은 언어는 일본어의 기교를 사용해야 한다.D 언어로 일본어를 처리하는 게 쉬워요?
샘플에서 myWinMain 함수로 시작하는 caption 변수 설명서를 다음과 같이 덮어씁니다.
winsamp.d (발췌문)
wstring caption = "ハロープログラム";
사실 여기까지 하면 쉬워요.이 견본은 전형적인 Windows 응용 프로그램의 기술이기 때문이다.예를 들어'DDoes Windows'를'D 언어를 좋아하는 소녀'로 바꾸고 싶을 때'D Does Windows'로 이 프로그램을 검색하세요.따라서 WindowProc 함수의 WMPAINT 대열.
winsamp.d (발췌문)
case WM_PAINT:
{
enum text = "D Does Windows";
PAINTSTRUCT ps;
HDC dc = BeginPaint(hWnd, &ps);
scope(exit) EndPaint(hWnd, &ps);
RECT r;
GetClientRect(hWnd, &r);
HFONT font = CreateFontW(80, 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE,
FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial");
HGDIOBJ old = SelectObject(dc, cast(HGDIOBJ) font);
SetTextAlign(dc, TA_CENTER | TA_BASELINE);
TextOutA(dc, r.right / 2, r.bottom / 2, text.ptr, text.length);
DeleteObject(SelectObject(dc, old));
break;
}
여기에 매우 신경 쓰이는 기술이 하나 있다winsamp.def
문자열이어야 하는데 엔음이 적혀 있다.실제로 D 언어는 기호 상수로 상수를 기술할 수 있다(어려운 문법을 만들지 않았으면 좋겠다...).열거체 - 프로그래밍 언어 D (일본어 번역)
여기에는 CreateFont과 TextOut을 사용합니다. 이를 사용하여 일본어 문자를 표시하는 견본을 참조하십시오.
고양이도 알 수 있는 프로그램 설계 - 제27장
상기 견본을 참고하여 D 언어의 출처를 약간 바꾸다.'D 언어를 좋아하는 소녀'라는 문자열에이러한 기술은 UTF-8의 문자열 소양을 Windows의 넓은 문자열로 바꾸기 위한 것이다.처음에 C 스타일의 배분 캐릭터를 기술했는데 컴파일러에'이렇게 수정하는 게 어때요?'이렇게 쓴 것이 지적됐기 때문이다.
winsamp.d (발췌문)
case WM_PAINT:
{
enum text = cast(wstring)"D言語が好きなくいなちゃん";
PAINTSTRUCT ps;
HDC dc = BeginPaint(hWnd, &ps);
scope(exit) EndPaint(hWnd, &ps);
RECT r;
GetClientRect(hWnd, &r);
HFONT font = CreateFontW(80, 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE,
FALSE, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Century");
HGDIOBJ old = SelectObject(dc, cast(HGDIOBJ) font);
SetTextAlign(dc, TA_CENTER | TA_BASELINE);
TextOutW(dc, r.right / 2, r.bottom / 2, text.ptr, text.length);
DeleteObject(SelectObject(dc, old));
break;
}
이 원본 프로그램을 실행하면 이렇게 됩니다.창 크기를 조정합니다.Create WindowW 호출에서 600400으로 지정된 곳은 1600900이 됩니다.
나는 매우 좋다고 생각한다.
Reference
이 문제에 관하여(D 언어의 Windows 견본을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HaruoWakakusa/items/1ea3e0a67b767e9e30a7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)