Форум программистов, компьютерный форум CyberForum.ru

Как преобразовать String в HWND - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 13:19     Как преобразовать String в HWND #1
Можно как то преобразовать String в HWND ?
как сделать обратное преобразование то есть из HWND в String разобрался, а вот из String в HWND немогу найти способ.

Тип HWND нужен для хранения хендла окна, я его пишу в базу данных, а из нее можно получить результат только типа String, потом чтобы проверить наличие этого окна в функции IsWindow(); нужно значение с типом HWND
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.12.2013, 13:30     Как преобразовать String в HWND #2
если бы у вас было понимание того что вы делаете то вы бы знали что HWND это typedef указателя на void и вы бы сохраняли в БД(вот ещё глупость) беззнаковое целое типа size_t и доставали бы беззнаковое целое
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 13:56  [ТС]     Как преобразовать String в HWND #3
Jupiter,
попробовал

C++
1
2
3
4
size_t test;
 
    if (IsWindow(test))
    { }
получил ошибку
error C2664: IsWindow: невозможно преобразовать параметр 1 из "size_t" в "HWND"
0x10
14.12.2013, 13:58
  #4

Не по теме:

Может лучше доступным языком объяснить автору, что сохранение хендлов в базу - это нечто совсем дикое?

nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 14:11  [ТС]     Как преобразовать String в HWND #5
0x10, лучше доступным языком ответить на мой вопрос.
В базу я сохраняю хендлы потому что они нужны в двух разных прогах.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 14:19     Как преобразовать String в HWND #6
Цитата Сообщение от nill Посмотреть сообщение
Можно как то преобразовать String в HWND ?
Строку в окно? Сначала преврати телеграфную ленту в стеклопакет, потом спрашивай.

Добавлено через 1 минуту
Цитата Сообщение от nill Посмотреть сообщение
Тип HWND нужен для хранения хендла окна, я его пишу в базу данных, а из нее можно получить результат только типа String,
Не может быть такой базы данных.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.12.2013, 14:20     Как преобразовать String в HWND #7
Цитата Сообщение от nill Посмотреть сообщение
попробовал
size_t нужно прикастовать к HWND,
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 14:24  [ТС]     Как преобразовать String в HWND #8
Jupiter, можно показать на примере ?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 14:26     Как преобразовать String в HWND #9
Цитата Сообщение от nill Посмотреть сообщение
rror C2664: IsWindow: невозможно преобразовать параметр 1 из "size_t" в "HWND"
Правильно, не явно указательные и не указательные типы друг к другу не приводятся. Приводи явно и будет тебе щасье.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 14:48  [ТС]     Как преобразовать String в HWND #10
taras atavin, пример ?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 15:11     Как преобразовать String в HWND #11
C++
1
if (IsWindow((HWND)test))
Добавлено через 2 минуты
Можно также при получении целого в переменную сразу приводить, а каждый раз при использовании не приводить. Кстати, окно создаётся в каждом сеансе заново и при закрытии дескриптор теряет смысл. Так зачем же его хранить в базе?
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 16:56  [ТС]     Как преобразовать String в HWND #12
taras atavin,
В общем вот что получается

Извлекаю данные из БД
C++
1
size_t handle=atoi(PQgetvalue(pg_result, 0, 3));
делаю

C++
1
if (IsWindow((HWND)handle)){}
Но всегда получаю true даже когда окна с хендлом из БД уже нет
проверил что в переменной handle и там
50
Хотя реальное значение хендла 00050DFC

Что не так делаю ?


PS Хендлы в БД мне нужны потому что их проверяет одна прога, а сами хендлы от других прог, для связи решил использовать БД, то что при каждом запуске прог хендлы разные это я в курсе
nexen
14.12.2013, 16:59
  #13

Не по теме:

Что происходит в этой теме? О_О

taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 19:23     Как преобразовать String в HWND #14
Цитата Сообщение от nill Посмотреть сообщение
Извлекаю данные из БД
Код C++
1
size_t handle=atoi(PQgetvalue(pg_result, 0, 3));
делаю
Код C++
1
if (IsWindow((HWND)handle)){}
Но всегда получаю true даже когда окна с хендлом из БД уже нет
1. Все вопросы к функции и виндузячим глюкам.
2. А зачем вообще нужен дескриптор закрытого окна?
3. Лучше
C++
1
HWND handle=(HWND)atoi(PQgetvalue(pg_result, 0, 3));
: исходник будет лучше самодокументированным.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 19:35  [ТС]     Как преобразовать String в HWND #15
taras atavin,

HWND handle=(HWND)atoi(PQgetvalue(pg_result, 0, 3));
теперь handle получаю такой
00000032
а должно быть 00050DFC
думаю проблема в том что 00050DFC шестнадцатеричное число

PS Хендл закрытого окна нужен для того чтобы удалить запись о нем из БД, Схема такая главная прога отслеживает запущенные проги и если одна из отслеживаемых прог закрывается, аварийно или пользователем данные о ней удаляются из БД, общий смысл главное проги отслеживать запущенные проги.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 20:49     Как преобразовать String в HWND #16
Цитата Сообщение от nill Посмотреть сообщение
теперь handle получаю такой
00000032
а должно быть 00050DFC
Я не знаю, что ты там на сохранял и правильно ли получаешь. Расшифруй параметры функции PQgetvalue.

Добавлено через 4 минуты
Цитата Сообщение от nill Посмотреть сообщение
думаю проблема в том что 00050DFC шестнадцатеричное число
При чём здесь вообще система счисления? Данные всегда двоичны, а будут ли они отображены как 00050DFC, 331260, 1206774, 1010000110111111100, или даже 121211101220 - значения не имеет, хотя 00050DFC - шестнадцатеричное представление, 331260 - десятичное, 1206774 - восьмеричное, 1010000110111111100 - двоичное, а 121211101220 - даже троичное. Это всё одно и тоже число, в каждой системе можно представить любое число.

Добавлено через 2 минуты
Цитата Сообщение от nill Посмотреть сообщение
PS Хендл закрытого окна нужен для того чтобы удалить запись о нем из БД, Схема такая главная прога отслеживает запущенные проги и если одна из отслеживаемых прог закрывается, аварийно или пользователем данные о ней удаляются из БД, общий смысл главное проги отслеживать запущенные проги.
Нафиг здесь БД? Для оперативных данных предназначен массив в памяти самой утилиты.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 20:51  [ТС]     Как преобразовать String в HWND #17
taras atavin,
Это можно повторить и без PQgetvalue чтобы было понятнее

C++
1
2
char * test="00050DFC";
HWND handle1=(HWND)atoi(test);
в итоге получаю что
handle1 равно 00000032
а должно быть 00050DFC

PQgetvalue просто извлекает данные из БД в текстовом формате
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 21:03     Как преобразовать String в HWND #18
Не то. Ты получаешь атом строки с записью числа, а надо прочитать сами данные и не строковые, а бинарные. Атом - это тот же дескриптор, по нему потом можно найти строку, но сами данные в атоме не хранятся.

Добавлено через 1 минуту
Вообще забудь про atoi, чары и тому подобное.

Добавлено через 43 секунды
Цитата Сообщение от nill Посмотреть сообщение
PQgetvalue просто извлекает данные из БД в текстовом формате
Значит она тебе тоже не нужна.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 21:20  [ТС]     Как преобразовать String в HWND #19
taras atavin,
ну так а что делать то ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 21:25     Как преобразовать String в HWND
Еще ссылки по теме:

Как преобразовать string в int ? С++ C++
C++ Как преобразовать string в char*?
Как преобразовать один элемент String в Int C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 21:25     Как преобразовать String в HWND #20
Сохранять и получать бинарные данные нужного целого типа, или сырого BLOB.
Yandex
Объявления
14.12.2013, 21:25     Как преобразовать String в HWND
Ответ Создать тему
Опции темы

Текущее время: 00:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru