Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2013, 20:13   #11
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Странно все это... покажите весь код, явно чтото не так...
waleri вне форума Ответить с цитированием
Старый 26.03.2013, 21:13   #12
x_Alex_x
Пользователь
 
Регистрация: 13.01.2013
Сообщений: 94
По умолчанию

Не пойму зачем Вам весь код
Это начало процедуры обработки сообщений дочернего окна. Напомню, что оно создаётся в клиентской области главного окна.
Код:
LRESULT CALLBACK MDIChildWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){
   switch(Message){
      case WM_CREATE:{
         char szFileName[MAX_PATH];
         HWND hEdit;

         hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
            WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN,
            CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
            hwnd, (HMENU)IDC_CHILD_EDIT, g_hInst, NULL);

         SendMessage(hEdit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));//Установка шрифта окна

         GetWindowText(hwnd, szFileName, MAX_PATH);
         if(*szFileName != '['){
            if(!LoadFile(hEdit, szFileName)){
               MessageBox(hwnd, "Couldn't Load File.", "Error.",
                  MB_OK | MB_ICONEXCLAMATION);
               return -1; //Окончание создания окна
            }
         }
      }
      break;
      case WM_SIZE:.......
x_Alex_x вне форума Ответить с цитированием
Старый 26.03.2013, 22:12   #13
x_Alex_x
Пользователь
 
Регистрация: 13.01.2013
Сообщений: 94
По умолчанию

Помогите лучше со вторым вопросом. Он сейчас куда важнее
x_Alex_x вне форума Ответить с цитированием
Старый 27.03.2013, 10:38   #14
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Вы упорно создаете едит контроль не указывая его размеры, это раз.
Во вторых, весь код нужен для того, чтоб посмотреть, может еще гдето меняется размер.

Если вы хотите убедить меня, что указываете размеры а окно вас просто слушается, то я вам не поверю. Если чтото не работает, значит вы чтото делаете не так, вопрос в том что и где. Если хотите - выложите весь проект, не хотите - не надо...
waleri вне форума Ответить с цитированием
Старый 27.03.2013, 10:40   #15
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от x_Alex_x Посмотреть сообщение
Есть пример записи в текстовое поле дочернего окна, а как такое проделать со строкой?
SetWindowText() меняет содержимое - например SetWindowText(hWnd, "Hello world");
waleri вне форума Ответить с цитированием
Старый 27.03.2013, 10:53   #16
x_Alex_x
Пользователь
 
Регистрация: 13.01.2013
Сообщений: 94
По умолчанию

Цитата:
Вы упорно создаете едит контроль не указывая его размеры, это раз.
Я просто поставил обратно свои значения на CW_USEDEFAULT
Вот весь код:
Вложения
Тип файла: rar TestEmptyProject.rar (5.7 Кб, 10 просмотров)

Последний раз редактировалось x_Alex_x; 27.03.2013 в 10:59.
x_Alex_x вне форума Ответить с цитированием
Старый 27.03.2013, 11:09   #17
x_Alex_x
Пользователь
 
Регистрация: 13.01.2013
Сообщений: 94
По умолчанию

Цитата:
SetWindowText() меняет содержимое - например SetWindowText(hWnd, "Hello world");
А им разве можно изменить содержимое переменной?

Если у Вас уже есть пример, будет проще понять чего я хочу:
нужно создать переменную в дочернем окне и с помощью старой функции загрузки файла записать в неё содержимое загружаемого файла. (по данным из этой переменной будет рисоваться изображение на том месте, где сейчас эдит поле)
x_Alex_x вне форума Ответить с цитированием
Старый 27.03.2013, 13:55   #18
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от x_Alex_x Посмотреть сообщение
Если у Вас уже есть пример, будет проще понять чего я хочу:
нужно создать переменную в дочернем окне и с помощью старой функции загрузки файла записать в неё содержимое загружаемого файла.
Ну так вы так или иначе выделяете там память для загрузки - сделайте указатель на эту памать нужной вам переменной. У вас проблема в том, что окон много и нигде никак не привязаны данные к окнам. На чистом С замучаетесь писать. Сделайте структуру с нужными переменными, при создании MDI client окна создавайте структуру и храните вместе с окном (например через GWL_USERDATA). Ну а далее будут функции типа:
BOOL SaveFile(struct mydocument* doc, LPCTSTR pszFile);
BOOL LoadFile(struct mydocument* doc, LPCTSTR pszFile);
BOOL Display(struct mydocument* doc, HDC hDC)
Ну и так далее.

PS.
Кстати, с размерами я никаких проблем не заметил.
waleri вне форума Ответить с цитированием
Старый 27.03.2013, 15:47   #19
x_Alex_x
Пользователь
 
Регистрация: 13.01.2013
Сообщений: 94
По умолчанию

Не знаю смогу ли осилить сие чудо Ни разу не пользовался указателями. Но, как я понял, нужно создать глобальный массив строк, в которые переписывать содержимое файлов при их загрузке. Но как можно изменять размер массива при добавлении новой строки и как понять, к какой строке обращаться из разных окон?
x_Alex_x вне форума Ответить с цитированием
Старый 27.03.2013, 17:22   #20
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Я же говорю - выделить все данные, строчки, имена файлов и т.д. в одну структуру, услвно назовем ее mydocument. При создании окна создаем и структуру (при удалении окна - удаляем). Дальше уже надо привязывать структуру к окну. Я ленивый, я бы использовал SetWindowLong(hWnd, GWL_USERDATA, ptr) но можно использовать любой механизм map.

Ну а указатели... читайте про указатели и динамическое распределение памяти и т.д. Строго говоря, к программированию на WINAPI это отношения не имеет.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinApi и С/С++ разные вещи Sylar9 Общие вопросы C/C++ 2 27.03.2012 23:41
завернуть флеш в учу оболочку gufon Общие вопросы Delphi 3 20.07.2011 07:13
учу borland С++ builder 6 Dazzl C++ Builder 3 13.05.2011 18:01
Учу Си++ под Linux, необходима помощь prog16 Свободное общение 12 09.08.2009 15:15
Разные вопросы о Delphi Enko Помощь студентам 21 10.09.2007 05:54