DLL中的Forms問題,大家來看一下啊!!

來源:互聯網
上載者:User
DLL中的Forms問題,大家來看一下啊!! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061208104302104.html
我在視窗的panel中調用了一個dll檔案中的視窗,調用是一切正常的,但要加  
  Panel1.updatecontrolstate視窗才能正常的顯示出來。如果我的dll表單中用了pagecontrol,問題就出現了,當按上面的tab切換時,   panel的顯示不會發生變化,除非再次調用Panel1.updatecontrolstate。   關鍵是這個語句怎麼加,加在什麼地方?大家可以嘗試一下。  
   
 

你跟蹤以下就知道了,Panel1.updatecontrolstate,實際上是給vcl發送訊息,  
  updatecontrolstate發送的是cm_base+25;  
   
  所以要麼你在本地視窗切換的時候sendmessage,要麼在dll視窗中的onpaint事件裡  
  寫入.  
   
  //不知道對不對,樓主看看

我的子視窗代碼:  
  function   CreateDLLForm(myAPP:TApplication;myScr:TScreen):TForm;  
  begin  
    Application:=myApp;  
    Screen:=myScr;  
    application.CreateForm(TfrmDllForm,frmDllForm);  
    result:=frmDllForm;  
  end;  
   
  我的主視窗代碼:  
  myHandle:=LoadLibrary('dllproj.dll');  
  if   myHandle<>0   then  
      begin  
          @myProc:=GetProcAddress(myHandle,'CreateDLLForm');  
          if   assigned(myProc)   then  
                begin  
                    DLLForm:=myProc(Application,Screen);  
                    DllForm.Parent:=Panel1;  
                    DLLform.Show;  
                    Panel1.UpdateControlState;  
                end;  
      end;  
   
  我嘗試過了,dll視窗的pagecontrol發生變化的時候,主視窗好像無法感知。

可以通過發訊息的辦法和主表單通訊!  
  SENDMESSAGE(APPLICATION。MAINFORM。HANDLE,WM-XXXX,XX,XX);  
  然後主表單在對應的訊息處理函數裡面執行相應的操作!

前提是DLL要用主程式的APPLICATION

帶包編譯(vcl70.bpl,   rtl70.bpl)

to:newfang(傳說中的MIC)  
  我本來想在dll視窗的pagecontrolchange中用sendmessage,結果,主程式根本就沒收到,問題確實如你所說,主程式的application控制代碼得不到啊,所以這個發訊息的動作寫在什麼地方還沒研究出來

另外,我處理訊息的過程是在主form中定義的,好像訊息傳給應用程式也不行,要傳給form的控制代碼。

 
  在建立Dllform的時候把applicaton.handle作為DLLForm單元中的全域變數。  
  (或者直接傳遞panel1的handle);這樣就可以給application或者panel1發送訊息直接通訊了。  
   
  訊息在pagecontrol的onchange事件裡發送即可。

現在的問題變成了DLL子視窗發訊息時怎樣知道主視窗的控制代碼,不是應用程式的,  
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.