Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

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

14.12.2013, 13:19. Просмотров 1545. Ответов 26
Метки нет (Все метки)

Можно как то преобразовать String в HWND ?
как сделать обратное преобразование то есть из HWND в String разобрался, а вот из String в HWND немогу найти способ.

Тип HWND нужен для хранения хендла окна, я его пишу в базу данных, а из нее можно получить результат только типа String, потом чтобы проверить наличие этого окна в функции IsWindow(); нужно значение с типом HWND
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как преобразовать String в HWND (C++):

Как преобразовать char* в string и вывести переменную string на экран? - C++
for (int k = 0; k < 10; k++) { int x = (int)rand() / RAND_MAX + rand() % 6 + 2; char *chars = new char; ...

Как преобразовать char в string - C++
Есть массив char buffer; есть переменная string X; как присвоить значение X допустим такое X=buffer+buffer;

Как преобразовать string в char*? - C++
Как преобразовать string в char* и отправить как аргумент наименьшими усилиями? #include <iostream> #include <string> using...

Как преобразовать string в int ? С++ - C++
Здравствуйте, можете объяснить как преобразовать string в int ? С++. Объясните как можно проще, так-как я недавно начал изучать...

C++: как преобразовать double в string? - C++
Например, вычисляем значение 22/7 с точностью до 10 знаков после запятой: #include <iostream> #include <windows.h> using namespace...

Как преобразовать строку string в int? - C++
имеется строка string которая содержит такие наборы символов - "0,0,0,3,32,253,0,0,43" необходимо цифры записать в матрицу а запятые...

26
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.12.2013, 13:30 #2
если бы у вас было понимание того что вы делаете то вы бы знали что HWND это typedef указателя на void и вы бы сохраняли в БД(вот ещё глупость) беззнаковое целое типа size_t и доставали бы беззнаковое целое
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 13:56  [ТС] #3
Jupiter,
попробовал

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

Не по теме:

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

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

Добавлено через 1 минуту
Цитата Сообщение от nill Посмотреть сообщение
Тип HWND нужен для хранения хендла окна, я его пишу в базу данных, а из нее можно получить результат только типа String,
Не может быть такой базы данных.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.12.2013, 14:20 #7
Цитата Сообщение от nill Посмотреть сообщение
попробовал
size_t нужно прикастовать к HWND,
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 14:24  [ТС] #8
Jupiter, можно показать на примере ?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 14:26 #9
Цитата Сообщение от nill Посмотреть сообщение
rror C2664: IsWindow: невозможно преобразовать параметр 1 из "size_t" в "HWND"
Правильно, не явно указательные и не указательные типы друг к другу не приводятся. Приводи явно и будет тебе щасье.
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 14:48  [ТС] #10
taras atavin, пример ?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 15:11 #11
C++
1
if (IsWindow((HWND)test))
Добавлено через 2 минуты
Можно также при получении целого в переменную сразу приводить, а каждый раз при использовании не приводить. Кстати, окно создаётся в каждом сеансе заново и при закрытии дескриптор теряет смысл. Так зачем же его хранить в базе?
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 16:56  [ТС] #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 Хендлы в БД мне нужны потому что их проверяет одна прога, а сами хендлы от других прог, для связи решил использовать БД, то что при каждом запуске прог хендлы разные это я в курсе
0
nexen
14.12.2013, 16:59
  #13

Не по теме:

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

1
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.12.2013, 19:23 #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));
: исходник будет лучше самодокументированным.
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
14.12.2013, 19:35  [ТС] #15
taras atavin,

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

PS Хендл закрытого окна нужен для того чтобы удалить запись о нем из БД, Схема такая главная прога отслеживает запущенные проги и если одна из отслеживаемых прог закрывается, аварийно или пользователем данные о ней удаляются из БД, общий смысл главное проги отслеживать запущенные проги.
0
14.12.2013, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 19:35
Привет! Вот еще темы с ответами:

Как преобразовать string в double и обратно? - C++
нашел функцию atof но не хочет запускаться. сам начеркал функцию для перевода в double но обратно чет даже идей нет.

Как преобразовать тип double в string - C++
Есть переменная типа double нужно ее преобразовать в тип string Как это можно сделать наиболее простым способом используя стандартные...

Помогите новичку - как преобразовать int к string - C++
Помогите новичку Как делать преобразование к классу int gcc version 2.95.3 20010315 (release)

Как преобразовать объект string в строку char*? - C++
Доброго времени суток! Недавно я писал код, и обнаружил, что в качестве имя файла при объявлении объектов ifstream/ofstream нельзя...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru