Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> string vs WinAPI, передавать string вместо LPSTR 
V
    Опции темы
nt100
Дата 5.6.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.6.2008

Репутация: нет
Всего: нет



Привет

хочется обойтись без char* в программе и использовать только stl
но как передать string в winapi функцию к-рая требует char* например GetDlgItemText ?



PM MAIL   Вверх
Mayk
Дата 5.6.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 3
Всего: 134



Написать обёртки, которые будут получать std::string и из них передавать в WinAPI char*'ы.



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
mrbrooks
Дата 5.6.2008, 11:37 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Код

string str;
str.c_str(); //вместо char *

PM MAIL   Вверх
nt100
Дата 5.6.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.6.2008

Репутация: нет
Всего: нет



я имею в виду на запись. т.е. если параметер типа __out LPTSTR

PM MAIL   Вверх
bsa
Дата 5.6.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



тут было неправильно

Это сообщение отредактировал(а) bsa - 5.6.2008, 15:38
PM   Вверх
Mayk
Дата 5.6.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 3
Всего: 134



если я правильно понял, то примерно так
Код

#include <windows.h>
#include <string>
#include <iostream>


std::string getWindowText(HWND hwnd) // ну или использовать std::string& для возвращения out параметра
{
    char buffer[64000];
    int usedBuffer = GetWindowTextA(hwnd,buffer,sizeof(buffer));
    return std::string(buffer,buffer+usedBuffer);
}

int main()
{
    std::cout << getWindowText(GetForegroundWindow());
}


идея думаю ясна.

Это сообщение отредактировал(а) Mayk - 5.6.2008, 11:58


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
nt100
Дата 5.6.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.6.2008

Репутация: нет
Всего: нет



то есть на каждую функцию свою обертку писать
а по другому никак?
PM MAIL   Вверх
Lazin
Дата 5.6.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



лучше написать, иначе можно нарушить целостность контейнера
минимизируй использование голого API,  и будет тебе счастье 
PM MAIL Skype GTalk   Вверх
Mayk
Дата 5.6.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 3
Всего: 134



Цитата(nt100 @  5.6.2008,  16:17 Найти цитируемый пост)
то есть на каждую функцию свою обертку писать
а по другому никак? 

Можешь поискать в инете, может есть что. Я как-то искал, мне не попалось. В нете есть некоторые схожие либы(по враппингу именно winapi), но они относительно тяжеловесны.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Rififi
Дата 5.6.2008, 13:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 3
Всего: 36



Цитата(nt100 @  5.6.2008,  12:17 Найти цитируемый пост)
то есть на каждую функцию свою обертку писать
а по другому никак? 

всё уже написали за тебя.
http://winstl.org/
PM MAIL   Вверх
nt100
Дата 6.6.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.6.2008

Репутация: нет
Всего: нет



всем спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.