25.05.2005, 18:00 | #1 |
Участник
|
обертка к WinAPI PrintDlg
Господа может кто-то делал обертку для функции WinAPI PrintDlg
может поделитесь кодом |
|
26.05.2005, 08:51 | #2 |
Участник
|
А что ты с ней хочешь сотворить? Смысл?...
|
|
26.05.2005, 09:41 | #3 |
Участник
|
2BVN получу указатель на контекст устройства, есть у меня такая мечта....
PS1 Я уважаю любознательных людей, но очень прошу не надо лишнего бла-бла-бла. Если не можете реально помочь, лучше не пишите. Спасибо. |
|
26.05.2005, 18:16 | #4 |
Участник
|
неужели ни кто не инкапсулировал APIшные функции ???
PHP код:
|
|
27.05.2005, 10:55 | #5 |
Гость
|
А чего говорит CommDlgExtendedError функция (по MSDN она должна выдать код ошибки)?
|
|
27.05.2005, 11:10 | #6 |
Участник
|
если вот так то работает
DLL _DLL = new DLL("Comdlg32"); DLLFunction _getPrintDlg = new DLLFunction(_DLL, "PrintDlgA"); _getPrintDlg.returns(ExtTypes:: DWord); _getPrintDlg.arg(ExtTypes::Pointer); struct.dWord (#offset0,66 ); //lStructSize = sizeof(PRINTDLGEX); struct.dWord (#offset4, _hwnd ); Не знаю устроит ли это вас |
|
27.05.2005, 11:18 | #7 |
Участник
|
Цитата:
Изначально опубликовано lagr221374
А чего говорит CommDlgExtendedError функция (по MSDN она должна выдать код ошибки)? |
|
27.05.2005, 11:37 | #8 |
Участник
|
Цитата:
Изначально опубликовано BVN
если вот так то работает DLL _DLL = new DLL("Comdlg32"); DLLFunction _getPrintDlg = new DLLFunction(_DLL, "PrintDlgA"); _getPrintDlg.returns(ExtTypes:: DWord); _getPrintDlg.arg(ExtTypes::Pointer); struct.dWord (#offset0,66 ); //lStructSize = sizeof(PRINTDLGEX); struct.dWord (#offset4, _hwnd ); Не знаю устроит ли это вас PS Кстати извиняюсь за грубость... действительно напряжно выуживать из массы "умных высказываний" типа "зачем тебе нужно"... да "нафига так делать".. и т.п. действительно нужную инфу... а в данной ситуации мне просто нужно узнать отступы принтера (не настройки листа, а реальный отступ принтера), что бы коректно расставить разрывы страниц при формировании многостраничного отчета в экселе... вот и вся задача... |
|
27.05.2005, 12:01 | #9 |
Участник
|
При использовании PrintDlgEx необходимо что бы выскочил диалог pPageRanges = (LPPRINTPAGERANGE) GlobalAlloc(GPTR,10 * sizeof(PRINTPAGERANGE)); Если его не определить то глухо.А на Аксапте это писать не очень А длинна структуры для PrintDlgEx у вас правильная -84, 66 это у PrintDlgA.
P.S. Просто люблю с API поковыряться. Сделал вертикальный вывод текста в ах , но мне не очень то нравиться как получилось |
|
27.05.2005, 17:03 | #10 |
Участник
|
тогда в продолжение разговора....
указатель контекста он мне вернул, но подсунуть этот дескриптор в функцию getDeviceCaps не удается... все время возвращаеться ноль... при любом флаге... PHP код:
|
|
27.05.2005, 17:46 | #11 |
Участник
|
Ну на С++ , у меня получилось без проблем
GetDeviceCaps( pd.hDC, // device-context handle HORZSIZE // index of capability to query ); На Аxapte тоже --- int h; h= struct.dWord (#offset16); info(int2str(struct.dWord (#offset16))); h= WinAPI::getDeviceCaps(h,4); //4 -я просто число вогнал вместо HORZSIZE |
|
30.05.2005, 10:55 | #12 |
Участник
|
ну вроде все получилось... спасибо...
единственно, в коде забыл про флажок написать, который заставляет указатель на контекст возвращать: Цитата:
Изначально опубликовано BVN
#define.PD_RETURNDC (0x00000100) DLL _DLL = new DLL("Comdlg32"); DLLFunction _getPrintDlg = new DLLFunction(_DLL, "PrintDlgA"); _getPrintDlg.returns(ExtTypes:: DWord); _getPrintDlg.arg(ExtTypes::Pointer); struct.dWord (#offset0,66 ); //lStructSize = sizeof(PRINTDLGEX); struct.dWord (#offset4, _hwnd ); struct.dWord (#offset20, #PD_RETURNDC ); PS кстати... Цитата:
Изначально опубликовано BVN
Сделал вертикальный вывод текста в ах , но мне не очень то нравиться как получилось |
|
30.05.2005, 17:30 | #13 |
Участник
|
Не нравится потому что слегка кривовато выходит. Я сделал свой класс по принципу WINAPI, и туда все что меня интересует ,чего нет ахе пишу. Вот дорихтую, тогда выложу.
:-) |
|