win32下用tango建一个空窗口
shawind
2007-04-07
import tango.sys.win32.UserGdi;
extern(Windows) enum { WS_EX_DLGMODALFRAME =0x00000001, WS_EX_NOPARENTNOTIFY =0x00000004, WS_EX_TOPMOST =0x00000008, WS_EX_ACCEPTFILES =0x00000010, WS_EX_TRANSPARENT =0x00000020, WS_EX_MDICHILD =0x00000040, WS_EX_TOOLWINDOW =0x00000080, WS_EX_WINDOWEDGE =0x00000100, WS_EX_CLIENTEDGE =0x00000200, WS_EX_CONTEXTHELP =0x00000400, WS_EX_RIGHT =0x00001000, WS_EX_LEFT =0x00000000, WS_EX_RTLREADING =0x00002000, WS_EX_LTRREADING =0x00000000, WS_EX_LEFTSCROLLBAR =0x00004000, WS_EX_RIGHTSCROLLBAR =0x00000000, WS_EX_CONTROLPARENT =0x00010000, WS_EX_STATICEDGE =0x00020000, WS_EX_APPWINDOW =0x00040000, WS_EX_OVERLAPPEDWINDOW =(WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE), WS_EX_PALETTEWINDOW =(WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST) } extern(Windows) LRESULT WndProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ){ switch( msg ){ case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProcA( hwnd, msg, wp, lp ); } return 0; } void main(){ WNDCLASSEX wc; HWND hwnd; MSG msg; wc.cbSize = WNDCLASSEX.sizeof; wc.lpszClassName = "DWndClass"; wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = &WndProc; wc.hInstance = GetModuleHandleA(null); wc.hIcon = LoadIconA(cast(HINSTANCE) null, IDI_APPLICATION); wc.hCursor = LoadCursorA(cast(HINSTANCE) null, IDC_CROSS); wc.hbrBackground = cast(HBRUSH) (COLOR_WINDOW + 1); wc.lpszMenuName = null; if(!RegisterClassExA(&wc)){ MessageBoxA(null,"Window Registration Failed!","Error!",MB_OK); return 0; } hwnd = CreateWindowExA( WS_EX_ACCEPTFILES, wc.lpszClassName, "MyWindow", WS_OVERLAPPEDWINDOW|WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, null, null, wc.hInstance, null ); if(hwnd is null){ MessageBoxA(null,"Window Creation Failed!","Error!",MB_OK); return 0; } while(GetMessageA(&msg,null,0,0)>0){ TranslateMessage(&msg); DispatchMessageA(&msg);} } --------------------- 就这么一个入门程序折腾了半天才通过编译。 D的文档实在是太贫乏了。 |
|
jinheking
2007-04-09
使用DFL吧!
|
|
shawind
2007-04-09
这个,其实我只是打算写一个窗口来容纳OpengGL,应该还不用劳烦DFL他老人家吧(^o^)
|
|
oldrev
2007-04-09
还没真正地用过tango,感觉 phobos 的 util 风格的标准库实在是太好用了,尤其是 std.file, std.path,用过就知道了
|
|
player7
2007-04-10
为什么不用SDL呢? 窗口是有了,可是控制呢?声音呢? 图形载入呢?
|
|
shawind
2007-04-10
oldrev 写道 还没真正地用过tango,感觉 phobos 的 util 风格的标准库实在是太好用了,尤其是 std.file, std.path,用过就知道了
才开始用Tango,还没有体会到他的优点,麻烦之处倒已经遇到了不少。 player7 写道 为什么不用SDL呢? 窗口是有了,可是控制呢?声音呢? 图形载入呢?
这个,我居然给忘了SDL还有其他作用.... 自己从头再写一遍似乎有点无聊。 |
|
qiezi
2007-04-10
tango是比较麻烦,因为它我已经抛弃了好多库了,很多库都依赖它。
|
|
tomqyp
2007-04-10
其实错不在tango,知道了tango我就一直在用
大多数比较麻烦的情况是因为,tango好像重写了object,所以对phobo的库不兼容,许多库如果要在tango下用的话,最好用tango再编译一次 或者直接使用bud.exe这个工具. |
|
oldrev
2007-04-11
tango不知怎么的重写了运行时,还 Object把 toString 换成了别扭的 toUtf8,结果搞的和标准库不兼容,不知他们怎么想的
|
|
qiezi
2007-04-11
是啊,根本没必要动这个部分,不兼容的也就是这里。
|