SendMessageTimeoutW requires casting string to uint?

BoQsc vaidas.boqsc at gmail.com
Tue Jul 9 12:14:38 UTC 2019


On Tuesday, 9 July 2019 at 11:11:53 UTC, Dejan Lekic wrote:
> Now that I browsed the std.utf more, I realised what fits your 
> need best is the https://dlang.org/phobos/std_utf.html#toUTF16z

So far, this is what I have:


Filename: myVersion.d

import core.sys.windows.windows : SendMessageTimeoutW;
import core.sys.windows.windows : GetLastError;
import core.sys.windows.windows : ERROR_SUCCESS;
import core.sys.windows.windows : SMTO_ABORTIFHUNG;
import core.sys.windows.windows : LPARAM;
import core.sys.windows.windows : HWND_BROADCAST;
import core.sys.windows.windows : WM_SETTINGCHANGE;

import std.utf;

void main(){
	broadcastSettingChange();

}

void broadcastSettingChange (string envi="Environment", uint 
timeout=1)
{

     auto result = SendMessageTimeoutW(
         HWND_BROADCAST,
         WM_SETTINGCHANGE,
         0,
         envi.toUTF16z,
         SMTO_ABORTIFHUNG,
         timeout,
         null
     );

     if(result == 0)
     {
         auto errCode = GetLastError();
     }
  }



The dmd output:
> C:\Users\User\Desktop>rdmd ref.d
> ref.d(19): Error: function 
> `core.sys.windows.winuser.SendMessageTimeoutW(void*, uint, 
> uint, int, uint, uint, uint*)` is not callable using argument 
> types `(void*, int, int, const(wchar)*, int, uint, 
> typeof(null))`
> ref.d(19):        cannot pass argument 
> `toUTF16z(cast(const(char)[])envi)` of type `const(wchar)*` to 
> parameter `int`
> Failed: ["C:\\D\\dmd2\\windows\\bin\\dmd.exe", "-v", "-o-", 
> "ref.d", "-I."]





More information about the Digitalmars-d-learn mailing list