Nimrod で空ウインドウを出してみた
force7.de で、空ウインドウを出してみた.
import windows const NULL = 0 proc wndProc(hWnd: HWND, msg: UINT, wParam: WPARAM, lParam: LPARAM): LRESULT{.stdcall.} = case msg of WM_DESTROY: PostQuitMessage(0) else: return DefWindowProc(hWnd, msg, wParam, lParam) return 0 proc winMain(hinst: HINST, hinstPrev: HINST, lpszCmdLine: LPSTR, nCmdShow: int): int{.stdcall.} = const szClassName = "WCN_HELLO_WINDOWS" var wndClass: WNDCLASS hWnd: HWND msg: MSG wndClass.style = CS_HREDRAW or CS_VREDRAW wndClass.lpfnWndProc = wndProc wndClass.cbClsExtra = 0 wndClass.cbWndExtra = 0 wndClass.hInstance = hInst wndClass.hIcon = NULL wndClass.hCursor = LoadCursor(0, IDC_ARROW()) wndClass.hbrBackground = GetStockObject(WHITE_BRUSH) wndClass.lpszMenuName = nil wndClass.lpszClassName = szClassName if RegisterClass(wndClass) == 0: return 0 hWnd = CreateWindow( szClassName, "Hello Windows!", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, nil) discard ShowWindow(hWnd, nCmdShow) discard UpdateWindow(hWnd) while GetMessage(msg, NULL, 0, 0) != 0: discard TranslateMessage(msg) discard DispatchMessage(msg) return msg.wParam var hInst: HINST si: STARTUPINFO nCmdShow: int hInst = GetModuleHandle(nil) si.dwFlags = 0 GetStartupInfo(si) nCmdShow = if (si.dwFlags and STARTF_USESHOWWINDOW) != 0: int(si.wShowWindow) else: SW_SHOWDEFAULT discard winMain(hinst, 0, "", nCmdShow)
Nimrod 0.8.8 で試したところ、OS ビルトインの DLL にしか依存しない実行ファイルが 96.3KB (strip で 69.0KB) で生成されたので、なかなか良い感じ. が、余りにも情報がなさすぎてアレですw