Renk iletişim kutusunu özelleştirme

Bir renk iletişim kutusunu özelleştirmek için aşağıdaki yöntemlerden birini kullanabilir miyim:

Görünüm ve renk iletişim kutusunun davranış choosecolor yapısını bayrakları üyesi bayrakları ayarlayarak değiştirebilirsiniz. Örneğin, yalnızca düz renkleri görüntülemek için iletişim kutusunu doğrudan CC_SOLIDCOLOR bayrağı ayarlayabilirsiniz. Başlangıçta siyah dışında bir renk seçin, CC_RGBINIT bayrağını ayarlayın ve rgbResult üyesinin bir renk belirtmek için iletişim kutusunu neden.

Uygulamanız için benzersiz olan ek denetimler eklemek istiyorsanız renk iletişim kutusunda, örneğin, özel bir şablon sağlayabilirsiniz. Özel bir şablon varsayılan şablon yerine ChooseColor işlevini kullanır.

    Renk iletişim kutusu için özel bir şablon sağlamak
  1. RENKLE belirtilen varsayılan şablonu değiştirerek özel bir şablon oluşturun.dlg dosyasını. Varsayılan renk iletişim şablonunda kullanılan denetim tanımlayıcıları colordlg tanımlanır.H dosyası.
  2. choosecolor yapısı şablonu aşağıdaki şekilde etkinleştirmek için kullanın:

Renk iletişim kutusu CCHookProc kanca işlemi sağlayabilir. Kanca işlemi iletişim kutusuna gönderilen iletileri işleyebilir. Bu, kayıtlı mesajlar da iletişim kutusunun davranışını denetlemek için kullanabilirsiniz. Sen-meli sağlamak, denetimleri için giriş işlemek için kanca işlemi ek denetimleri tanımlamak için özel bir şablon kullanmak.

    Bir kanca işlemi için renk iletişim kutusunu etkinleştirmek için
  1. Cc_enablehook bayrağı bayrak choosecolor yapısı içinde kümesinin.
  2. LpfnHook üye kancası yordamı adresini belirtin.

Onun WM_INITDIALOG iletiyi işledikten sonra iletişim kutusu yordamı kancası yordamı bir WM_INITDIALOG iletisi gönderir. Bu iletinin lParam parametresinin choosecolor Yapısı iletişim kutusu başlatmak için kullanılan bir işaretçidir.

Kullanıcı Tamam düğmesini tıklattığında iletişim kutusunu kancası yordamı COLOROKSTRING kayıtlı mesaj gönderir. Kanca işlemi, seçili rengin reddeder ve bu iletiyi aldığında sıfır döndürerek açık kalması için iletişim kutusunu zorla. Kanca işlemi iletişim kutusuna SETRGBSTRING kayıtlı mesaj göndererek özel bir renk seçmek için iletişim kutusu zorlayabilirsiniz. Bu kayıtlı mesaj kullanmak için ileti tanımlayıcısı almak için RegisterWindowMessage işlevi için COLOROKSTRING ve SETRGBSTRING sabitleri geçmesi gerekir. Sonra tespit ve iletişim kutusundan gönderilen iletileri işlemek için ya da iletişim kutusuna göndermek için tanımlayıcıyı kullanabilirsiniz.