July 11, 2006 difficulties getting SetTimer () to work | ||||
---|---|---|---|---|
| ||||
There has to be a simple explanation for this. I've tried to compile the following code several times, but the compiler doesn't recognize the SetTimer identifier. Each time I've tried the following compiler settings: > dmd timer.d gdi32.lib user32.lib winsamp.def The msdn site says that SetTimer is defined under user32.lib. the error that I get in return is as follows: > timer.d(46): undefined identifier SetTimer > timer.d(46): function expected before (), not SetTimer of type int Listed here is the source code: _______________________________________________________________________________ // application demonstrates the timer event function. // note: windows data types are case sensitive // note: compile by typing; // 'dmd timer.d gdi32.lib user32.lib winsamp.def' import std.c.windows.windows; import std.c.stdio; extern (C) void _minit(); extern (C) void gc_init(); extern (C) void gc_term(); extern (C) void _moduleCtor(); extern (C) void _moduleUnitTests(); extern (Windows) int WindowProc (HWND hWnd, uint msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_PAINT: { HDC dc; // handle to the device context RECT r; PAINTSTRUCT ps; // specifies region to be redrawn dc = BeginPaint (hWnd, &ps); GetClientRect (hWnd, &r); EndPaint (hWnd, &ps); break; } case WM_DESTROY: { PostQuitMessage (0); break; } case WM_CREATE: { int timer_status = 1; // 1 - continue, -1 - stop int timer_duration = 10; // duration in milliseconds SetTimer (hWnd, timer_status, timer_duration, null); } case WM_TIMER: // now called every 10 milliseconds { } default: { break; } } return DefWindowProcA (hWnd, msg, wParam, lParam); } int WindowInitialization () { // declarations: MSG msg; HWND hWnd; WNDCLASS wc; HINSTANCE hInst; // definitions: hInst = GetModuleHandleA (null); wc.lpszClassName = "DWndClass"; wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = &WindowProc; wc.hInstance = hInst; 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; wc.cbClsExtra = 0; wc.cbWndExtra = 0; // operations: RegisterClassA (&wc); hWnd = CreateWindowA ( "DWndClass" , "just a window" , WS_THICKFRAME | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , 400 , 300 , HWND_DESKTOP , cast (HMENU) null , hInst , null ); assert (hWnd); while (GetMessageA (&msg, cast (HWND) null, 0, 0)) { TranslateMessage (&msg); DispatchMessageA (&msg); } return 1; } extern (Windows) int WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int result; gc_init (); // initialize garbage collector _minit (); // initialize module constructor try { _moduleCtor (); // call module consructor _moduleUnitTests(); // run unit tests (optional) result = WindowInitialization (); } catch (Object o) // catch any uncaught exceptions { MessageBoxA ( null , cast (char*) o.toString , "Error" , MB_OK | MB_ICONEXCLAMATION ); result = 0; // failed } gc_term (); // terminate garbage collection return result; } any help would be appreciated. _______________________________________________________________________________ |
July 11, 2006 Re: difficulties getting SetTimer () to work | ||||
---|---|---|---|---|
| ||||
Posted in reply to llee | llee wrote:
> There has to be a simple explanation for this. I've tried to compile the
> following code several times, but the compiler doesn't recognize the SetTimer
> identifier. Each time I've tried the following compiler settings:
>
>> dmd timer.d gdi32.lib user32.lib winsamp.def
>
> The msdn site says that SetTimer is defined under user32.lib.
> the error that I get in return is as follows:
>
>> timer.d(46): undefined identifier SetTimer
>> timer.d(46): function expected before (), not SetTimer of type int
The windows headers supplied with DMD are horribly incomplete. More complete ones are available in the win32 section of the bindings project at www.dsource.org.
|
Copyright © 1999-2021 by the D Language Foundation