Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru


RusFAQ.ru: Win API

Выпуск № 029
от 21.11.2003, 21:10

Администратор:
Имя: Калашников О. А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 67
Отправлено ответов: 118
Активность: 176.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 149
URL: Программирование
[Подробней >>]
BOLT
Статус: Профессиональный
Общий рейтинг: 170.9
URL: Начинающему программитсу: софт, примеры, документация, Assembler, C & C++.
Телефон: Три раза АУ!
[Подробней >>]
Илья
Статус: Профессиональный
Общий рейтинг: 102.55
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 106.45
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 61. Продолжение к 58. Здравствуй, Bob. А этот ListView существует только как MFC? Или я плохо смотрел :)... (ответов: 1)
Вопрос № 62. Доброго времени суток, эксперты! При помощи ExpandEnvironmentStrings (C/API)можно проверить имеющиес... (ответов: 1)
Вопрос № 63. Ребята помогите. ------------------------------------------------------------ Имею на Dialog box'e t... (ответов: 3)

Вопросов: 3, ответов: 5


 Вопрос № 61

Продолжение к 58.
Здравствуй, Bob.
А этот ListView существует только как MFC? Или я плохо смотрел :)
Если только MFC, то как можно созтать что-то подобное на WinAPI?
Может ссылочки, примерчики...



Вопрос отправлен: 12.11.2003, 19:41
Отправитель: Илья (b.i@date.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Доброе время суток, Илья!
Нет, он существует в common controls (не забудь поставить в начале проги InitCommonControls, но больше ничего не надо).
Я создавал через редактор ресурсов в VC. А так, есть класс - SysListView32. Используй его (сообщения и т.д. описаны в мсдн).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 18.11.2003, 02:27
Отправитель: Bob Johnson


 Вопрос № 62

Доброго времени суток, эксперты!
При помощи ExpandEnvironmentStrings (C/API)можно проверить имеющиеся переменные среды,а вот установить новые,похоже,используя ее нельзя,как например пользуясь ф-ей _putenv.Да и она не работает как следует.Я,например,хотел прописать в PATH RAR,чтобы сархивировать файл и ничего не получается.Новая переменная не устанавливается.Помогите разобраться.
С уважением, Uri



Вопрос отправлен: 13.11.2003, 02:23
Отправитель: Юрий (g.u@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает BOLT

Приветствую Вас, Юрий!
Эта функция может только "вытаскивать" переменные окружения. Вроде правильно они работают, может ты че-нить не так делаешь? См приложение - там пример.
/*The following example uses the GetComputerName, GetUserName, GetSystemDirectory, GetWindowsDirectory, and ExpandEnvironmentStrings functions to get information that describes the system configuration. This example displays the information in a window's client area. */
LPTSTR lpszSystemInfo; // pointer to system information string
DWORD cchBuff = 256; // size of computer or user name
TCHAR tchBuffer2[BUFFER]; // buffer for concatenated string

DWORD dwResult; // function return value

SYSTEM_INFO siSysInfo; // structure for hardware information
int aTabs[1] = {260}; // tab stop for TabbedTextOut

TCHAR tchBuffer[BUFFER]; // buffer for expanded string
int nSize; // size of string

lpszSystemInfo = tchBuffer2;

// Get and display the name of the computer.

GetComputerName(lpszSystemInfo, &cchBuff);

nSize = sprintf(tchBuffer,
"Computer name: %s",
lpszSystemInfo);
TextOut(hdc, 15, 20, tchBuffer, nSize);

// Get and display the user name.

GetUserName(lpszSystemInfo, &cchBuff);

nSize = sprintf(tchBuffer,
"User name: %s",
lpszSystemInfo);
TextOut(hdc, 15, 40, tchBuffer, nSize);

// Get and display the system directory.

nSize = GetSystemDirectory(lpszSystemInfo, MAX_PATH+1);

nSize = sprintf(tchBuffer,
"System directory: %s",
lpszSystemInfo);
TextOut(hdc, 15, 60, tchBuffer, nSize);

// Get and display the Windows directory.

nSize = GetWindowsDirectory(lpszSystemInfo, MAX_PATH+1);

nSize = sprintf(tchBuffer,
"Windows directory: %s",
lpszSystemInfo);
TextOut(hdc, 15, 80, tchBuffer, nSize);

// Display the "environment variables" header.

nSize = sprintf(tchBuffer,
"Environment variables (partial list):");
TextOut(hdc, 15, 105, tchBuffer, nSize);

// Expand the OS and NTVERSION environment variables.

dwResult = ExpandEnvironmentStrings(
"OS=%OS% NTVERSION=%NTVERSION%",
lpszSystemInfo,
BUFFER);

TextOut(hdc, 25, 120, (LPCTSTR) lpszSystemInfo,
dwResult - 1);

// Expand the PATH environment variable.

dwResult = ExpandEnvironmentStrings(
"PATH=%PATH%",
lpszSystemInfo,
BUFFER);

TextOut(hdc, 25, 135, (LPCTSTR) lpszSystemInfo,
dwResult - 1);

// Expand the LIBPATH environment variable.

dwResult = ExpandEnvironmentStrings(
"LIBPATH=%LIBPATH%",
lpszSystemInfo,
BUFFER);

TextOut(hdc, 25, 150, (LPCTSTR) lpszSystemInfo,
dwResult - 1);

// Expand the TMP environment variable.

dwResult = ExpandEnvironmentStrings(
"TMP=%TMP%",
lpszSystemInfo,
BUFFER);

TextOut(hdc, 25, 165, (LPCTSTR) lpszSystemInfo,
dwResult - 1);


Ответ отправлен: 13.11.2003, 16:57
Отправитель: BOLT


 Вопрос № 63

Ребята помогите.
------------------------------------------------------------
Имею на Dialog box'e text control. Какое сообщение мне нужно ловить, при наведениии курсора на контрол? Хочу сделать что-то типа ссылки.
Пробовал сообщение WM_CAPTURECHANGED - не работает. WM_APPCOMMAND - не подходит, т.к. появилось только в Win2k. WM_MOUSEMOVE - не могу заюзать, т.к. оно посылается только функции, обрабатывающей сообщения своего окна.
Есть предположение повесить функцию-обработчик на контрол, как на окно (по сути дела контрол это же и есть окно). Тогда можно было ловить WM_MOUSEMOVE и никаких проблем! Но как это сделать. Может это и невозможно? Если возможно, то кусок кода, пожалуйста.
------------------------------------------------------------
Ребята, Bob Johnson, Gibbel, помогите!
------------------------------------------------------------
Заранее большое всем спасибо!



Вопрос отправлен: 17.11.2003, 21:03
Отправитель: BOLT

[Следующий вопрос >>] [Список вопросов]

Отвечает Илья

Приветствую Вас, BOLT!
>>Есть предположение повесить функцию-обработчик на контрол, как на окно (по сути дела контрол это же и есть окно).... Но как это сделать
С диалогом не пробовал, но должно прокатить.
Установи на окно новый обработчик с помощью lpPrevWndFunc=SetWindowLong(hWnd, GWL_WNDPROC, lpNewWndFunc);
А в обработчике, когда надо передать сообщение дальше (исходной процедуре) используй return CallWindowProc(lpPrevWndFunc, hWnd, uMsg, wParam, lParam );
А еще почитай о сабклассинге(это то, что я пытался тебе сейчас показать) и суперклассинге (например видел на rsdn.ru)


Ответ отправлен: 18.11.2003, 20:17
Отправитель: Илья


Отвечает Gibbel

Здравствуйте, BOLT!
Лови WM_MOUSEMOVE - если есть это сообщение, значит мышь в окне. WM_MOUSELEAVE - мышь покидает окно. Для использования последнего нужно по WM_MOUSEMOVE вызвыать TrackMouseEvent() с соответствующими параметрами.
Подставить свою функцию в качестве оконной можно вызвав SetWindowLongPtr() с параметром GWLP_WNDPROC, но при этом не забудь сохранить старый адрес оконной функции (получить его можно с помощью GetWindowLongPtr() с тем же параметром) и вызывать ее, если ты не перехватываешь сообщение.

Ответ отправлен: 18.11.2003, 10:43
Отправитель: Gibbel


Отвечает Bob Johnson

Приветствую Вас, BOLT!
Ты должен делать свой класс, в котором и ловить сообщения. Сделать это не трудно - регистрируешь свой класс, указываешь оконную процедуру и вперед. Если бы ты оставил свой адрес, я мог бы выслать тебе тестовую прогу, где я создавал что-то типа hyperlink для одного друга - у меня твой адрес видимо уже затерялся где-то, а вот, нашел, так что высылаю.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 19.11.2003, 01:15
Отправитель: Bob Johnson



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (29)
C / C++ (23)
Perl (4)
Builder / Delphi (20)
Pascal (20)
Basic / VBA (7)
Java / JavaScript (10)
PHP (15)
Криптография (8)
WinAPI (11)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (58)
"Железо" (35)
Поиск информации (22)
Администратору
Windows NT/2000/XP (38)
Linux / Unix (18)
Юристу
Гражданское право (12)
Семейное право (9)
Трудовое право (10)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное