#Cara membuat aplikasi windows untuk antrian keygen#'Unable to register hidden window class.' + NewWndClass.cbWndExtra := SizeOf(Pointer) NewWndClass.lpszClassName := WorkerThreadWindowClassName ĬlassRegistered := GetClassInfo(HInstance, Check if the window class is already registered thread which just destroyed a previous window.ĮnterCriticalSection(GWndHandlerCritSect) We must also be sure that the class is not unregistered by another class is registered and register it if needed. We use a critical section to be sure only one thread can check if a Nothing to do if hidden window is already created Internally, Delphi use TMessage to pass parameters to his Result := DefWindowProc(ahWnd, auMsg, awParam, alParam) Check if the reference is actually our object type Obj := TObject(GetWindowLongPtr(ahWnd, 0)) into the storage space we asked windows to have When the window was created, we stored a reference to the object WndControlWindowsProc is a callback function used for message handling WorkerThreadWindowClassName = 'WorkerThreadWindowClass' GWndHandlerCritSect : TRTLCriticalSection Procedure TThreadDemoForm.WorkerThreadTerminate(Sender : TObject) Procedure TThreadDemoForm.FormClose(Sender: TObject var Action: TCloseAction) įWorkerThread.OnTerminate := nil // Cancel event handling PostMessage(FWorkerThread.FWinHandle, WM_QUIT, 0, 0) ('Asking the worker thread to terminate.') Procedure TThreadDemoForm.StopThreadButtonClick(Sender: TObject) ('Ask worker thread to start.') įWorkerThread.OnTerminate := WorkerThreadTerminate Procedure TThreadDemoForm.StartThreadButtonClick(Sender: TObject) PostMessage(FWorkerThread.FWinHandle, WM_USER + 2, 0, 0) If not Assigned(FWorkerThread) then begin Procedure TThreadDemoForm.PostMessageButtonClick(Sender: TObject) Procedure WorkerThreadTerminate(Sender: TObject) Procedure PostMessageButtonClick(Sender: TObject) Procedure StopThreadButtonClick(Sender: TObject) Procedure FormClose(Sender: TObject var Action: TCloseAction) Procedure StartThreadButtonClick(Sender: TObject) Property WinHandle : HWND read FWinHandle Procedure WndProc(var MsgRec: TMessage) virtual Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Pesan ditampilkan dalam tampilan acara (Ctrl+Alt+V) saat Anda menjalankan demo di bawah Delphi debugger. Karena utas tidak dapat mengakses VCL dan untuk menjaga semuanya tetap sederhana, saya membuat utas pekerja menampilkan pesan menggunakan OutputDebugString. Anda mungkin harus memeriksa semua yang bisa gagal.ĭalam aplikasi nyata, jika Anda memiliki beberapa utas pekerja, dapatkan semua utas dari kelas TMyThread saya sehingga mereka mewarisi antrian pesan dan pompa pesan. Saya membuat beberapa pintasan untuk membuat kode lebih mudah dibaca. Lihat nama yang saya berikan pada komponen untuk melakukan hal yang sama dan kaitkan event handler yang benar.Īnda mungkin ingin menambahkan lebih banyak pemeriksaan kesalahan. Untuk menggunakan demo, buat formulir dengan 3 tombol dan memo. Saya membuat demo untuk menunjukkan kepada Anda cara membuat utas pekerja yang sebagian besar berfungsi seperti utas utama.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |