D語言值得關注

來源:互聯網
上載者:User
    今天偶爾關注了一下D語言。一直以來都在拿C++與C#,Java做比較,後兩種對於程式員來說無疑是更順手的,但

是效率上C++是最強的。D語言雖然剛剛萌芽,但是只看了他的簡單介紹之後心裡就很激動,“Great, just what I need

”。
    介紹D語言的一個中文的Blog:http://blog.csdn.net/uframer/
    D語言環境配置教程:http://www.cppblog.com/cpunion/archive/2005/11/02/892.html
    D語言官方網站:http://www.digitalmars.com/d/index.html
    D語言開源網站:http://www.dsource.org
    D語言作者的網站:http://www.walterbright.com/

    另外嘗試了一下D語言win32編程,下面是一個最小的程式--建立一個視窗:
import std.c.windows.windows;

extern (Windows) BOOL DestroyWindow(HWND hWnd);
enum { PM_REMOVE = 0x0001 }
const LPSTR IDC_ARROW = cast(LPSTR)32512;
extern (C) void *memset(void *dest, int c, size_t count);
extern (Windows) BOOL FreeLibrary(HMODULE hModule);

HWND createWindow()
{
    HINSTANCE moduleHandle = GetModuleHandleA(null);
    assert(moduleHandle);

    WNDCLASS wc;
    wc.lpszClassName = "DWndClass";
    wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = &windowProc;
    wc.hInstance = moduleHandle;
    wc.hIcon = LoadIconA(cast(HINSTANCE)null, IDI_APPLICATION);
    wc.hCursor = LoadCursorA(cast(HINSTANCE)null, IDC_ARROW);
    wc.hbrBackground = cast(HBRUSH) (COLOR_WINDOW + 1);
    wc.lpszMenuName = null;
    wc.cbClsExtra = wc.cbWndExtra = 0;
    assert(RegisterClassA(&wc));

    RECT rect;
    rect.left = 0; rect.top = 0; rect.right = 640; rect.bottom = 480;
    AdjustWindowRect(&rect, WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE, FALSE);
    HWND result = CreateWindowA("DWndClass", "Just a window",
        WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT,
        rect.right - rect.left, rect.bottom - rect.top, HWND_DESKTOP,
        cast(HMENU)null, moduleHandle, null);
    assert(result);

    return result;
}

extern (Windows) int windowProc(HWND hWnd, uint uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_CLOSE || uMsg == WM_DESTROY)
    {
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProcA(hWnd, uMsg, wParam, lParam);
}

bit doEvents(HWND wnd)
{
    MSG msg;
    while (PeekMessageA(&msg, null, 0, 0, PM_REMOVE))
    {
        if (WM_QUIT == msg.message) return false;
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }
    Sleep(16);
    return true;
}

int main()
{
    HWND wnd = createWindow();
    while (true)
    {
        if (!doEvents(wnd))
            break;
    }
   
    DestroyWindow(wnd);
    return 0;
}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.