D 언어의 Windows 견본을 만들어 보았습니다.

4032 단어 DKuin
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이 됩니다.

나는 매우 좋다고 생각한다.

좋은 웹페이지 즐겨찾기