Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо и полностью согласен!

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 10:31 04-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Такая проблема (по Фленову):
 
на протяжении всей книги все строки или функ приходится переводить
из 'char [__]' в 'LPCWSTR'
 
к примеру функ MessageBox(0, szRecvBuff, L"Recived data", 0);
 
к строке  "Recived data" применяю L или _T (макросы?),  
к szRecvBuff (объявлен как char) LPCWSTR
 
приводит при компиляции к
 
 
1>TCPClient.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__closesocket@4 в функции "unsigned long __stdcall NetThread(void *)" (?NetThread@@YGKPAX@Z)
1>TCPClient.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__recv@16 в функции "unsigned long __stdcall NetThread(void *)" (?NetThread@@YGKPAX@Z)

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 08:45 05-03-2011
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09 это функции из winsock, добавьте сборщику ссылку на библиотеку ws2_32.lib или wsock32.lib.

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 11:21 05-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спас! Главное в предыдущем примере дорбавлял эту библиотеку! А че  за тема с приведение ти приведением строк?
 
Добавлено:
Кто читал Фленова, вопрос?
 
Глава  4.7. Приводится описание функций DWORD WINAPI ClientThread(LPVOID lpParam),
DWORD WINAPI NetThread(LPVOID lpParam),  
но я так думаю пропущен их вызов в int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)?
 
как правильно осуществить вызов?
заранее благ!
User.
 

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 16:56 05-03-2011
HelioSS



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как элементу Text Control присвоить и свойство BnClicked? То есть надо сделать что-то типа гиперссылки, но чтобы по клику выполнялись любые действия, а не только открытие html-страницы

Всего записей: 5789 | Зарегистр. 26-11-2007 | Отправлено: 09:59 12-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HelioSS
Что имеется в виду под "Text Control"? Если обычный static control, то есть несколько вариантов. Один - задать ему стиль SS_NOTIFY и ловить сообщение STN_CLICKED в родительском окне. Другой - ловить в родительском окне WM_LBUTTONDOWN и проверять место, куда попал клик. Разбирался пару страниц назад. Ещё вариант - переопределить оконную функцию static control и ловить WM_LBUTTONDOWN там.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 12:28 12-03-2011
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
видимо, имеется ввиду SysLink control. есть ещё Paul DiLascia's CStaticLink control.

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 14:04 12-03-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть CSliderCtrl. Как нибудь можно убрать крайние засечки (tics), не трогая средние?

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 08:47 13-03-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
If you do not specify TBS_AUTOTICKS, you can use member functions, such as SetTic and SetTicFreq, to specify the positions of the tick marks.  

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 00:26 14-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
SetTic просто дёргает SendMessage(m_hWnd, TBM_SETTIC, 0, nTic), а тут есть любопытное ограничение:

Цитата:
A trackbar creates its own first and last tick marks. Do not use this message to set the first and last tick marks.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 00:38 14-03-2011 | Исправлено: Abs62, 00:41 14-03-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного поясню проблему. У меня CSliderCtrl с диапазоном от -30 до 100. Мне нужна засечка на 0. Когда я его добавляю появляются засечки на краях, вроде не страшно, но они длиннее чем та которая между ними. А хотелось бы наоборот, чтобы ноль выделялся, а крайние были незаметны.
Может тут надо самому фон под слайдером рисовать или как подобное делают?

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 19:12 14-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Попробуй глянуть сюды:
Customizing the Appearance of CSliderCtrl Using Custom Draw

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:42 14-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет, проект MFC App,
есть  
char tStr[255];  
применяю к Edit Control функц GetWindowText(LPTSTR (tStr), 255)
после запуска вбиваю в Edit  - 1111. функ возвращает токо 1-ый символ,
в чем причина?

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 17:35 26-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09
В том, что юникодные функции работают с юникодными строками. И если им силой впихнуть массив char вместо wchar_t, они всё равно заполнят его юникодными (двухбайтовыми) символами. Отсюда и дальнейшие непонятки.

Цитата:
есть  
char tStr[255];

А должно быть TCHAR tStr[255].

Цитата:
TCHAR:
A WCHAR if UNICODE is defined, a CHAR otherwise.  
 
This type is declared in WinNT.h as follows:
 
#ifdef UNICODE
 typedef WCHAR TCHAR;
#else
 typedef char TCHAR;
#endif


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 17:56 26-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
полезная информация Abs62,
но приходится менять много функц в коде, которые работали с char,
не могу найти аналога gethostbyname(char) для TCHAR,
please, help me!

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 19:24 26-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09

Цитата:
Note  The gethostbyname function has been deprecated by the introduction of the getaddrinfo function. Developers creating Windows Sockets 2 applications are urged to use the getaddrinfo function instead of gethostbyname.

У getaddrinfo есть юникодный вариант - GetAddrInfoW.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:45 26-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62 спасибо за помощь, но я разбирал следующий участок кода:
 
        struct hostent *host=NULL;        
    host = gethostbyname(chStr);
    if (host == NULL)
    {
        SetDlgItemText(IDC_STATIC,
            L"Unable to resolve host");
        return;
    }
 и т. д.
 
а функц getaddrinfo и getaddrinfoW тут не подходят, пришлось добавить строчки
и использовать еще одну не безопасную функцию  
 
char chStr[255];
CharToOem(tStr,chStr);
 
 
может поэтому в итоге вместо списка открытых портов я получил абракадабру?
 
 

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 20:48 26-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09

Цитата:
CharToOem(tStr,chStr);  

Это не то, это просто смена кодировки ANSI->OEM. Преобразованием WCHAR -> char занимается WideCharToMultiByte.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:00 26-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62. я смотрел на MSDN, вроде то, потому что еще проверял во время отладки программы
 
присваивал tchar tStr[255]  127.0.0.1  ч/з
 
chHostName.GetWindowText(tStr, 255); //chHostName - edit control
 
затем благополучно
 
 CharToOem(tStr,chStr);  //char chStr[255]
 
работает потому что chStr = 127.0.0.1
и уже потом host = gethostbyname(chStr);
 
 
 

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 21:13 26-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09
Да, действительно. Но всё равно лучше использовать WideCharToMultiByte. Не случайно же про CharToOem в MSDN сказано "Do not use".

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 22:22 26-03-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru