|
|
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
Функция long CGdocDoc::pColumnCount(IDispatch* ptable) { long k; IDispatch* pTable; pTable=ptable; COleDispatchDriver drv1Main(pTable,TRUE); DISPID id; BYTE bTypes[1] = { 0 }; CString csName("ColumnCount"); BSTR bcs = csName.AllocSysString(); BSTR *arNames = &bcs; pTable->GetIDsOfNames(IID_NULL,arNames,1,MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),SORT_DEFAULT),&id); drv1Main.InvokeHelper(id,DISPATCH_METHOD,VT_I4,&k,NULL); return k; } Вызов в void CGdocView::OnDraw(CDC* pDC) long j; j=pDoc->pColumnCount(); CFont* old = (CFont*) pDC->SelectObject(&font_1); pDC->TextOut(pDoc->InitalCoordinateX+(pDoc->nWidthColumnAll/2),pDoc->InitalCoordinateY+(pDoc->SizeCaption/2),pDoc->m_string); pDC->SelectObject(&font_2); pDC->TextOut(0,0,"ТЕСТ: Текст основной Font_2"); После использования функции, а именно drv1Main.InvokeHelper(id,DISPATCH_METHOD,VT_I4,&k,NULL); все выводимое на экран исчезает!! Объясните пожалуйста что происходит? (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 18:28 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
UsФункция Вызов в void CGdocView::OnDraw(CDC* pDC) long j; j=pDoc->pColumnCount(); CFont* old = (CFont*) pDC->SelectObject(&font_1); pDC->TextOut(pDoc->InitalCoordinateX+(pDoc->nWidthColumnAll/2),pDoc->InitalCoordinateY+(pDoc->SizeCaption/2),pDoc->m_string); pDC->SelectObject(&font_2); pDC->TextOut(0,0,"ТЕСТ: Текст основной Font_2"); а где происходит инициализация font_1, font_2 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 08:47 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
и еще, почему вы не используйте ATL-макросы, #import - директивы ? Использование InvokeHelper, ИМХО изврат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 08:50 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
а где происходит инициализация font_1, font_2 ? В ините CGdocView и еще, почему вы не используйте ATL-макросы, #import - директивы ? Использование InvokeHelper, ИМХО изврат. Потому что в методике написания внешних компонент для 1С указан именно этот путь. Если честно я не задумывалась почему. И если можно поподробнее почему изврат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 12:42 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
и еще, почему вы не используйте ATL-макросы, #import - директивы ? Использование InvokeHelper, ИМХО изврат. Потому что в методике написания внешних компонент для 1С указан именно этот путь. Если честно я не задумывалась почему. И если можно поподробнее почему изврат?[/quot] была аналогичная задача, я для этого написал простенький врапер-класс, типа такого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. А что у тебя возвращает InvokeHelper в pvRet ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 07:18 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
Но в классе вы тоже используете InvokeHelper. Это к вопросу об изврате. А что у тебя возвращает InvokeHelper в pvRet ? Я не могу посмотреть что он возвращает. Такое впечатление, что ВСЕ что после InvokeHelper он не выполняет. В виду того что на точки останова оно не реагирует (см. соседнюю ветку) я не могу пошагово посмотреть выполнение, а вынуждена после нужной строки вписывать инструкцию на которой он сыпется. Так вот чтобы там не находилось он НЕ сыпется. Если перед InvokeHelper, то вылетает как и положено. p.s. Мне в принципе не принципиально выполнение InvokeHelper в Ondraw. В CGdocDoc он нормально отрабатывает и я там перегоняю весь массив 1С в свой, а потом уже в CGdocView с ним работаю. Но хотелось бы понять что происходит и почему нужно идти в обход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 16:58 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
Us Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 07:01 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
У меня было две версии функции с параметром и без. Извинюсь скопировано с разных версий. Есть, конечно там параметр. j=pDoc->pColumnCount(pDoc->pDispTb); -- CGdocDoc: public: IDispatch *pDispTb; void CGdocDoc::ReplData(IDispatch* cspdisp) { AFX_MANAGE_STATE(AfxGetAppModuleState()); // TODO: Add your dispatch handler code here pDispTb=cspdisp; ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 07:26 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
Это для случая с параметром. Тогда Функция long CGdocDoc::pColumnCount(IDispatch* ptable) { long k; COleDispatchDriver drv1Main(pTable,TRUE); DISPID id; BYTE bTypes[1] = { 0 }; CString csName("ColumnCount"); BSTR bcs = csName.AllocSysString(); BSTR *arNames = &bcs; pDispTb ->GetIDsOfNames(IID_NULL,arNames,1,MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),SORT_DEFAULT),&id); drv1Main.InvokeHelper(id,DISPATCH_METHOD,VT_I4,&k,NULL); return k; } Работают они одинаково. Что с параметром что без. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 07:40 |
|
||
|
View + InvokeHelper
|
|||
|---|---|---|---|
|
#18+
Вообще лезть спросонья в форум вредно.. :-) Вариант с параметром CGdocDoc.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. CGdocDoc.cpp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. CGdocView::OnDraw Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Попытка вызова в другом месте CGdocDoc Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 12:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32672468&tid=2034479]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 370ms |

| 0 / 0 |
