now I didn't have RegisterClassExW, how to import that ?
Phil Lavoie
maidenphil at hotmail.com
Tue Jan 29 11:06:21 PST 2013
On Tuesday, 29 January 2013 at 19:04:04 UTC, Phil Lavoie wrote:
> In case you had not seen in the other thread:
>
> On Sunday, 27 January 2013 at 14:06:00 UTC, rsk82 wrote:
>> Ok, nevermind, found, it, it was so easy that it simply didn't
>> have to had an example:
>>
>> struct WNDCLASSEXW {
>> UINT cbSize;
>> UINT style;
>> WNDPROC lpfnWndProc;
>> int cbClsExtra;
>> int cbWndExtra;
>> HINSTANCE hInstance;
>> HICON hIcon;
>> HCURSOR hCursor;
>> HBRUSH hbrBackground;
>> LPCWSTR lpszMenuName;
>> LPCWSTR lpszClassName;
>> HICON hIconSm;
>> }
>
> If you find yourself desiring other bindings of the win32 api
> and
> don't want them to define them by hand, a project was started
> some time ago by Stewart Gordon that contains an almost complete
> set of bindings:
> http://dsource.org/projects/bindings/wiki/WindowsApi
>
> Set the import directory of your compiler appropriately and use
> it like that:
> import win32.winuser; //example, where you will probably find
> wndclassexw
>
> Additionnally, you should know that SOMETHINGA and SOMETHINGW
> means A for ascii and W for wide chars (UCS-2, so every char
> is two bytes instead of one). Normally, the api was intented to
> be used without the extra letter at the end:
>
> WNDCLASSEX wndclass; //No suffix: defaults to ascii.
>
> When people compile with the preprocessor Unicode defined, then
> all aliases are mapped to their W counterpart. What changes is
> how you pass and receive strings.
> Keep in mind they must be null terminated (as in C).
>
> The microsoft bunch also defined another macro that would help
> you make your code independant of the version used, it is called
> TCHAR.
> TCHAR * someString; //Will be char * without unicode or wchar
> with.
> someString = "My window class".toUTFz!( TCHAR * ); //This is how
> I use the std library to convert my strings. Try to keep a
> handle
> on strings that might be kept by the OS, to prevent them from
> being garbage collected.
>
> WNDCLASSEX wndclass;
> ...
> wndclass.lpszClassName = someString;
>
> Peace,
> Phil
>
> ...
>
> And because I forgot to mention, to mimic the preprocessor
> directive, the bindings use a version conditional compilation.
> Therefore, you use it like that:
> rdmd -I/where/you/put/the/bindings -version=Unicode yourmodule.d
>
> You can double check in the code, but IIRC, only the first
> letter
> is capsed.
Pragmas are included inside the modules (so you dont have to
explicitly link against libraries). There is a 1 to 1 mapping
with the genuine win32 headers. Example:
winuser.h becomes win32.winuser;
wingdi.h becomes win32.wingdi;
etc...
More information about the Digitalmars-d
mailing list