а. понял. проблема в слишком активном захвате фокуса этим компонентом.
если не нужно управление pdf'ом, то наименьшим "головняком" будет просто сделать AcroPDF1->Enabled = false если нужно хотя бы полистать, то можно управлять через AcroPDF1->gotoNextPage(), AcroPDF1->gotoPreviousPage() а если немого заморочиться, то можно сделать возможность управления:
| Код | //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "AcroPDFLib_OCX" #pragma resource "*.dfm" TForm1 *Form1; HHOOK hHookMC = 0; //--------------------------------------------------------------------------- LRESULT CALLBACK LowLevelMouseProc(int code, WPARAM wParam, LPARAM lParam) { HWND hWnd = Form1->Handle; if (code == HC_ACTION && wParam == WM_MOUSEMOVE && GetForegroundWindow() == hWnd) { MSLLHOOKSTRUCT *ms = reinterpret_cast<MSLLHOOKSTRUCT *>(lParam); TPoint pt = ms->pt; ScreenToClient(hWnd, &pt); static TWinControl *ac = 0; TRect r = Form1->AcroPDF1->BoundsRect; if (pt.x > r.left && pt.x < r.right && pt.y > r.top && pt.y < r.bottom) { if (!ac) { ac = Form1->ActiveControl; Form1->AcroPDF1->Enabled = true; } } else { if (ac) { Form1->AcroPDF1->Enabled = false; Form1->ActiveControl = ac; ac = 0; } } } return CallNextHookEx(0, code, wParam, lParam); } //---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { hHookMC = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)LowLevelMouseProc, GetModuleHandle(0), 0); ListBox1->Items->Add("1.pdf"); ListBox1->Items->Add("2.pdf"); ListBox1->Items->Add("3.pdf"); } //--------------------------------------------------------------------------- void __fastcall TForm1::ListBox1DblClick(TObject *Sender) { int idx = ListBox1->ItemIndex; if (idx == -1) return; AcroPDF1->Enabled = false; AcroPDF1->LoadFile(WideString(ListBox1->Items->Strings[idx])); AcroPDF1->setView (L"Fit"); AcroPDF1->setShowToolbar(false); // AcroPDF1->setShowScrollbars(false); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { UnhookWindowsHookEx(hHookMC); } //---------------------------------------------------------------------------
|
|