דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. פקד colorpicker מובנה של ווינדוס ב-C#

פקד colorpicker מובנה של ווינדוס ב-C#

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 264 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי pcinfogmach
    #1

    רציתי מכמה טעמים לקרוא לcolorpicker של חלונות מתוך C#
    מצו"ב הקוד שגיבבתי מפה ומשם:
    עריכה: מסתבר שסתם בזבזתי זמן ומתוך רשלנות שחכתי לבדוק אם דבר כזה כבר קיים ראה להלן בהמשך השרשור

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace SystemColorPicker
    {
        public class ColorPicker
        {
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
            public struct CHOOSECOLOR
            {
                public int lStructSize;
                public IntPtr hwndOwner;
                public IntPtr hInstance;
                public uint rgbResult;
                public IntPtr lpCustColors;
                public uint flags;
                public IntPtr lCustData;
                public IntPtr lpfnHook;
                [MarshalAs(UnmanagedType.LPTStr)]
                public string lpTemplateName;
            }
    
            [DllImport("comdlg32.dll", CharSet = CharSet.Auto)]
            [return: MarshalAs(UnmanagedType.Bool)]
            public static extern bool ChooseColor(ref CHOOSECOLOR lpcc);
    
            public static bool GetColor(ref uint col)
            {
                CHOOSECOLOR CS = new CHOOSECOLOR();
                int structSize = Marshal.SizeOf(CS);
                CS.lStructSize = structSize;
                CS.hwndOwner = IntPtr.Zero;
                CS.flags = 0x1 | 0x2;
                CS.lpCustColors = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(uint)) * 16);
                CS.rgbResult = col;
                CS.hInstance = IntPtr.Zero;
    
                bool result = ChooseColor(ref CS);
                if (!result)
                    return false;
    
                col = CS.rgbResult;
    
                Marshal.FreeCoTaskMem(CS.lpCustColors);
                return true;
            }
        }
    }
    
    
    

    וצורת השימוש בו היא

     uint color = 0;
     ColorPicker.GetColor(ref color);
    

    האמת היא שאני מבין רק חלק מהקוד אשמח לקבל הצעות לשיפור ממי שבאמת מבין מה הולך פה

    גמ"ח מידע מחשבים ואופיס

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      זה שונה מזה:

      new ColorDialog().ShowDialog();
      

      ?

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      pcinfogmachP תגובה 1 תגובה אחרונה
      5
      • pcinfogmachP מנותק
        pcinfogmachP מנותק
        pcinfogmach
        השיב לdovid ב נערך לאחרונה על ידי pcinfogmach
        #3

        @dovid
        😂 😂 😂 😂 😂 🤣 🤣 🤣 🤣

        כל כך התרגלתי שאין לי את הפקדים שאני צריך ששחכתי לבדוק אם במקרה הזה יש אותו כבר מובנה.

        אל דאגה זה לא לקח לי הרבה זמן לעשות קצת העתק הדבק וזהו
        הנטייה שלי למחוק את הפוסט למנוע את הפדיחות
        אבל אז אמרתי שיישאר ואולי מישהו אחר ייקח לקח לבדוק לפני.....

        גמ"ח מידע מחשבים ואופיס

        תגובה 1 תגובה אחרונה
        4

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום