Görüntüler ve böylece kullanıcı bir arama işleminin parametreleri belirtebilirsiniz Bul iletişim kutusu yöneten örnek kod açıklanmıştır. Arama işlemi gerçekleştirebilmesi iletişim kutusu penceresini yordamınız iletileri gönderir.
İletişim kutusunu görüntülemek için ReplaceText işlevini kullanır dışında kod görüntüleme ve yönetme Değiştir iletişim kutusu, benzer. Değiştir iletişim kutusunu Ayrıca kullanıcı tıklamaları değiştirin ve Tümünü Değiştir düğmelerini yanıt iletileri gönderir.
Bul veya Değiştir iletişim kutusunu kullanmak için üç ayrı görevleri gerçekleştirmeniz gerekir:
Uygulamanızı başlatmak zaman, FINDMSGSTRING kayıtlı ileti için ileti tanımlayıcısı almak için RegisterWindowMessage işlevini çağırın.
UINT uFindReplaceMsg; / / mesaj tanımlayıcısı FINDMSGSTRING için uFindReplaceMsg RegisterWindowMessage(FINDMSGSTRING) =
Bul iletişim kutusunu görüntülemek için önce bir FINDREPLACE yapısı başlatılamıyor ve FindText işlevini çağırın. İletişim kutusunu kapatmadan önce kapsam dışına gitmez yani FINDREPLACE yapısı ve arama dizesi arabelleği bir küresel ya da statik değişken olması unutmayın. HwndOwner üye kayıtlı iletileri alır pencerede belirtmek için ayarlamanız gerekir. İletişim kutusu oluşturduktan sonra taşıyabilir veya döndürülen tanıtıcıyı kullanarak işleme.
FINDREPLACE fr; / / ortak iletişim kutusu yapısı
hwnd hwnd; / / sahibi penceresi
char szFindWhat [80]; / / alan string buffer
hwnd hdlg = null; / / idare Bul iletişim kutusu
/ / FINDREPLACE başlatılamadı
ZeroMemory (amp; fr, sizeof(FINDREPLACE));
fr.lStructSize = sizeof(FINDREPLACE);
fr.hwndOwner hwnd; =
fr.lpstrFindWhat = szFindWhat;
fr.wFindWhatLen = 80;
fr.Flags = 0;
hdlg = FindText (& fr)
İletişim kutusu açıkken, ana ileti döngüsü IsDialogMessage işlevine bir çağrı eklemelisiniz. İletişim kutusunun pencere tanıtıcısı IsDialogMessage arama parametresi olarak geçmektedir. Bu iletişim kutusu klavye iletilerini düzgün işler sağlar.
İletişim kutusundan gönderilen iletileri izlemek için pencere yordamınız gerekir FINDMSGSTRING kayıtlı mesaj kontrol ve FINDREPLACE yapısı aşağıdaki örnekte olduğu gibi geçirilen değerleri işleme:
LPFINDREPLACE lpfr;
Eğer (ileti uFindReplaceMsg ==) {/ / Get işaretçi FINDREPLACE yapısına lParam.
lpfr (LPFINDREPLACE) lParam; =
/ / FR_DIALOGTERM bayrağı ayarlanmışsa, / / iletişim kutusunu tanımlayan tanıtıcı geçersiz.
Eğer (lpfr-gt;Bayraklar ve FR_DIALOGTERM) {hdlg = null;
return 0;
} / / FR_FINDNEXT bayrağı ayarlanmışsa, / / uygulama tanımlı arama yordam çağrı
/ / için istenen dize aramak için.
Eğer (lpfr - > Flags & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
(BOOL) (lpfr - > Flags & fr_down), (bool) (lpfr - > Flags & fr_matchcase));
return 0;
}