Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > разминка мозгов..


Автор: PuLN 4.9.2006, 20:59
есть часть кода
Код

void DrawStartButton()
{
 int i;
 HANDLE h;
 int toppos=GetSystemMetrics(SM_CYSCREEN)-23;
 

 ShowWindow(hWnd, SW_SHOW);
 
 SetWindowPos(hWnd, HWND_TOPMOST, 4, toppos, 50, 20, SWP_SHOWWINDOW);
 UpdateWindow(hWnd);

 h=CreateEvent(0, true, false, "et");


 for (i=0; i<50; i++)
 {
        toppos=toppos-4;
        SetWindowPos(hWnd, HWND_TOPMOST, 4, toppos, 50, 20,
         SWP_SHOWWINDOW);
        WaitForSingleObject(h,15);
 }

ругается только на  h=CreateEvent(0, true, false, "et"); пишет CreateEventW cannot convert param 4 from 'const char[3]' to 'LPCWSTR'

без понятия что делать,научите..

Автор: Romikgy 4.9.2006, 21:10
Цитата(PuLN @  4.9.2006,  19:59 Найти цитируемый пост)
h=CreateEvent(0, true, false, "et");

h=CreateEvent(0, true, false, TEXT ("et"));
вроде так где то встречал или L(вместо TEXT)

Добавлено @ 21:15 
Код

#define __TEXT(q) L##q
#else
#define __TEXT(q) q
#endif
/*
 * UNICODE a constant string when UNICODE is defined, else returns the string
 * unmodified.
 * The corresponding macros  _TEXT() and _T() for mapping _UNICODE strings
 * passed to C runtime functions are defined in mingw/tchar.h
 */
#define TEXT(q) __TEXT(q)

у меня в 
winnt.h

Добавлено @ 21:16 
пример
Код

#define HOTKEY_CLASSA    "msctls_hotkey32"
#define HOTKEY_CLASSW    L"msctls_hotkey32"

Автор: Sartorius 4.9.2006, 22:11
 А разве не работает при явном приведении (LPCWSTR)"text"?

Автор: SergeCpp 4.9.2006, 22:21
"text" — это 5 байтов
L"text" — это 10 байтов

(LPCWSTR)"text" лишь указывает на то, что эти 5 байт следует интерпретировать как 2.5 символа smile UNICODE...

Весьма странные, между прочим, символы получатся... smile

Автор: Romikgy 4.9.2006, 22:22
Sartorius, эксперимент те покажет,
 везде делают как я показал

Автор: GremlinProg 5.9.2006, 11:26
http://forum.vingrad.ru/index.php?showtopic=110370&view=findpost&p=842156

Автор: PuLN 5.9.2006, 12:40
а что будет,если 0 туда воткнуть?
вроде работает,только суть другая?

Добавлено @ 12:43 
GremlinProg, мультибайт кстати не работает..

Автор: PuLN 5.9.2006, 12:56
Romikgy, выходит тоже самое если 0 туда ...
а так работает,спасибо..

Автор: GremlinProg 5.9.2006, 15:43
PuLN, как это не работает,  все работает и очень даже хорошо, причем это самый аккуратный способ выставить чарсет. Можно и програмно, но некрасиво нагружать препроцессор такими вещами:
Код

#ifdef UNICODE
#undef UNICODE
#endif

#include ...


Добавлено @ 15:48 
PS: MDE 2003 version 7.1.3088

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)