Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API | Передача данных диалоговым окном программе

Ответить
Настройки темы
Win32 API | Передача данных диалоговым окном программе
lehha


Сообщения: n/a

Профиль | Цитировать


Народ всем привет!! Пишу на MSVC++ , в принципе сабж (точнее хочу передать из поля редактирования IDC_EDIT), перепробовал все, облазил весь MSDN все безуспешно, помогите ПЖЛ.

Отправлено: 08:12, 01-03-2005

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Ммм. А как насчёт, например

Код: Выделить весь код
lResult = SendMessage(      // returns LRESULT in lResult
     (HWND) hWndControl,      // handle to destination control
     (UINT) WM_SETTEXT,      // message ID
     (WPARAM) wParam,      // = (WPARAM) () wParam;
     (LPARAM) lParam      // = (LPARAM) () lParam; );
wParam - This parameter is not used.
lParam - Pointer to a null-terminated string that is the window text.

Вам только надо правильно указать hWndControl
Это как вариант. Или я не совсем понял вопроса?

Отправлено: 09:07, 01-03-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

lehha


Сообщения: n/a

Профиль | Цитировать


Возможно я не правильно описал ситуацию, постараюсь лутше
1. Есть модальное диалоговое окно.
2. В нем есть элементы управления типа таких как editcontrol, checkbox и т.п. (в часности editcontrol).
3. Туда вводится какая то строка и при нажатии кнопки OK надо получить данные из этого editcontrol.
Пробовал
GetDlgItemText(IDC_EDIT1,mytext,80), так ни чего не получается...

Отправлено: 09:23, 01-03-2005 | #3


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
только посылать не WM_SETTEXT, а WM_GETTEXT

lehha
Не пойму в чем проблема... Есть как минимум 2 способа:

1:
[code]
LRESULT CALLBACK !Ваша_диалоговая_функция!(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
......
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
HWND editCtrlHandle = FindWindowEx(hDlg,0,"EDIT",0); // это в случае с одним editbox'ом
char* buf[1001];
SendMessage(editCtrlHandle,WM_GETTEXT,1001,(LPARAM)buf);
MessageBox(hDlg,(LPCTSTR)buf,"Куль",0);
return TRUE;
}
break;
.......
}
return FALSE;
}

2:
всё то же самое, только
Код: Выделить весь код
..............
      if (LOWORD(wParam) == IDOK) 
      {
        char* buf[1001];
        GetDlgItemText(hDlg,IDC_EDIT1,(LPSTR)buf,1001);
        MessageBox(hDlg,(LPCTSTR)buf,"Куль",0);
        return TRUE;
      }
..............
Оба способа проверенно работают.

Отправлено: 10:33, 01-03-2005 | #4

lehha


Сообщения: n/a

Профиль | Цитировать


Savant
Я всегда писал консольные приложения, так что первый раз столкнулся с этим, в принципе я делал все тоже саме, но почему то у меня не передовались параметры, вот кусок моей функции в чем тут беда???
Код: Выделить весь код
void CMainWnd::GetEdit()
  {
          CDialog mydialog(IDD_DIALOG1);
  	 if(mydialog.DoModal()==IDOK)
  	 {
	  		char* data[500];
                           GetDlgItemText(IDC_EDIT1,(LPSTR)data,500);
   	 }
  }
а если делать такую конструкцию
Код: Выделить весь код
void CMainWnd::GetEdit()
  {
          CDialog mydialog(IDD_DIALOG1);
  	 if(mydialog.DoModal()==IDOK)
  	 {
	  		char* data[500];
                           GetDlgItemText(mydialog,IDC_EDIT1,(LPSTR)buf,500);
   	 }
  }
то компилятор ругается таким образо error C2661: 'CWnd::GetDlgItemTextA' : no overloaded function takes 4 arguments, народ помогите разобраться в чем сдесь моя беда, очень коца познать это дело.

Отправлено: 11:10, 01-03-2005 | #5


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


lehha
Во втором куске для полноты явно нехватает :: перед GetDlgItemText, т.е.
Код: Выделить весь код
...
::GetDlgItemText(mydialog,IDC_EDIT1,(LPSTR)buf,500);
Хотя подожди, а у тя диалог вообще еще существует когда ты делаешь вызов GetDlgItemText() (я просто в MFC почти ни бум-бум, больше люблю WinAPI и классы AWin - "лёгкая" замена MFC)? Просто если нажатие на ОК завершает диалог, то все данные из него теряются. Попробуй сделать предложенную выше замену и напиши что вышло.

Добавлено:
Да, вполне возможно что диалог удаляется...
Цитата:
When the user exits the dialog box, the DoModal() function returns, and your program can continue. Because the dialog box object is created locally on the stack, it is automatically deleted when it goes out of scope, which is when the OnHelpAbout() function exits.

Последний раз редактировалось Savant, 01-03-2005 в 11:41.


Отправлено: 11:31, 01-03-2005 | #6

lehha


Сообщения: n/a

Профиль | Цитировать


Savant
Спасибо за наводку
Поступил чуть по другому
сначала всетаки определил класс диалогового окна, а потом по пройденой схеме ну и создал обработку OnOK()
Код: Выделить весь код
class CDialogData : public CDialog
  {
  public:
  	CDialogData(CWnd* pParentWnd=NULL) : CDialog(IDD_DIALOG2, pParentWnd)
  	{};
  	virtual void OnOK();
  };
обработка сообщений
Код: Выделить весь код
void CMainWnd::DialogData()
  {
  	CDialogData dialog(this);
  	if (dialog.DoModal()==IDOK)
  	{
  		InvalidateRect(NULL,TRUE);
  		UpdateWindow();
  	}
  }
void CDialogData::OnOK()
  {
  	char* data[10];
  	GetDlgItemText(IDC_EDIT1,(LPSTR)data,10);
 	CDialog::OnOK();
  }
Пасибо!!

Отправлено: 13:51, 01-03-2005 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API | Передача данных диалоговым окном программе

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Обращение к программе через API poisonattack Скриптовые языки администрирования Windows 1 04-12-2009 11:17
Помогите с диалоговым окном ! Stacke Microsoft Windows 2000/XP 1 12-01-2007 00:07
Win32 API | Нужна помошь по API функциям! vasika_hk Программирование и базы данных 2 23-05-2006 09:51
Win32 API | Дозвон XCodeR Программирование и базы данных 5 08-04-2006 12:26
Win32 API | Неизвестные функции Savant Программирование и базы данных 9 02-03-2005 10:18




 
Переход