
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.08.2004, 15:22
|
|||
|---|---|---|---|
Инициализация переменных |
|||
|
#18+
Незнаю сюда ли вопрос.. но может кто чего знает.. Пишется внешняя компонента для 1С. Состоит из AddIn.dll и активного документа на базе MFC. AddIn.dll ответсвенна за создание окна внутри 1С, загрузку туда активного документа, передачу параметров из 1С в активный документ. Вот код создания такого окна: RECT rct = { 10,10,800,400 }; CString csProgID = "AddIn.Gdoc"; CString csTitle = "Окно внешней компоненты"; HWND hWnd; IDispatch *pDisp; //создаем окно 1С и загружаем туда документ по его ID //Документ создается с значениями по умолчанию m_iExtWndsSupport->CreateAddInWindow(csProgID.AllocSysString(), csTitle.AllocSysString(), 0,0, &rct, 0, &hWnd, &pDisp); //После выполнения CreateAddInWindow pDisp указывает на созданный активный документ. //Вызываем метод активного документа SetFileName, котрый допустим просто присваивает переданное значение какой-то переменной например cFile, а та просто отображается в окне. COleDispatchDriver drvMain(pDisp,FALSE); DISPID id; BYTE bTypes[2] = { VT_BSTR,0 }; BSTR bscFName = T2OLE(m_csFileName); BSTR bcs = T2OLE("SetFileName"); BSTR *arNames = &bcs; pDisp->GetIDsOfNames(IID_NULL,arNames,1,MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),SORT_DEFAULT),&id); drvMain.InvokeHelper(id,DISPATCH_METHOD,VT_EMPTY,NULL,bTypes,bscFName); Проблема вот в чем: Выполнять методы документа, присваивать его свойствам какие либо значения получается можно только после его отображения. В случае с сFile мне не трудно вызвать ondraw() для перерисовки окна с новыми уже значениями. Но как быть с размерами пользовательского окна? Они определяются при создании документа и остаются равными значениями по умолчанию. Отсюда вопрос 1. Как передать значения до CreateAddInWindow() 2. Можно ли программно переопределить значения пользовательского окна. void CGdocView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSize sizeTotal; // TODO: calculate the total size of this view sizeTotal.cx = sizeTotal.cy = 100*nStr; SetScrollSizes(MM_TEXT, sizeTotal); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 07:41
|
|||
|---|---|---|---|
Инициализация переменных |
|||
|
#18+
Есть функция у CWnd, PreCreateWindow, туда передаётся сруктура, котороая помимо прочего содержит размер и положение окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 15:02
|
|||
|---|---|---|---|
Инициализация переменных |
|||
|
#18+
Да нет, само окно меня устраивает. Меня не устраивает размер клиентской части окна. Она изменяется в зависимости от размера документа и если нужно появляется скролинг. Тут все оказалось достаточно просто nStr=NewValue; sizeTotal.cx = sizeTotal.cy = 1000*nStr; SetScrollSizes(MM_TEXT, sizeTotal); Invalidate(TRUE); типа того что-то.. Только теперь вопрос в том КОГДА это делать.. Нужно чтобы окно перерисовывалось при изменении значения CSaphDoc->nStr (переменная класса CSaphDoc, в которую передается значение из 1С) Выглядеть все должно так - 1С создает документ со значениями по умолчанию - Присваивает значения всем переменным, свойсвам, выполняет методы и т.д. в результате чего в классе CSaphDoc собираются все измененные ей данные. - Когда 1С все заполнила допустим выполняет какой-то метод, которые должен перерисовать окна и содержимое по требованию. Вот как вызвать из CSaphDoc перерисовку окна я чет туплю.. И еще хотелось бы, чтобы до выполнения этой функции вообще ничего не рисовалось, а ожидалось заполнения данных и команды отрисовки.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 15:25
|
|||
|---|---|---|---|
Инициализация переменных |
|||
|
#18+
точно туплю UpdateAllViews(NULL); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2034499]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 369ms |

| 0 / 0 |
