إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

تصحيح أو إستكمال كود إذا كان ممكن

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • تصحيح أو إستكمال كود إذا كان ممكن

    السلام عليكم ورحمة الله وبركاته

    بعد محاولات عديدة أخيرا توصلت إلى كود إظهار ديالوج إختيار الخط أو الفونت عبر قراءة ومحاولة الفهم من هذه الصفحة :
    https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

    يتم ظهور ديالوج إختيار الفونت طبعا بعد تفعيل إضافة الميمورى
    ولكن المطلوب هو تصحيح أو إستكمال الكود لمعرفة جميع الريتيرن الممكن الحصول علية كـــــ إسم الخط أو الفونت و الاستايل من ناحية هو عريض أو تحته خط أو ما إلى ذلك حتى يمكن الاستفادة منه فيما بعد " الريتيرن " طبعا يتم وضع الريتيرن بعد وضع الكود فى فانكشن له

    الكود :

    كود:
    --
    local str = Memory.CreateStructure("long, long, long, long, long, long, long, long, long, long, long, long, long, long, long");
     
     Memory.SetStructureData(str, 1, 0, Memory.Size(str), "");
     Memory.SetStructureData(str, 2, 0, Application.GetWndHandle(), "");
     
     Memory.SetStructureData(str, 5, 0, 10, "");
     
     Memory.SetStructureData(str, 6, 0, 256, ""); 
     
     Memory.SetStructureData(str, 7, 0, 255, "");
     
     Memory.SetStructureData(str, 13, 0, 1024, "");
     Memory.SetStructureData(str, 14, 0, 6, "");
     
     local result = DLL.CallFunction("comdlg32.dll", "ChooseFontA", str, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
    
    Memory.FreeStructure(str);
    أعلم أن هناك إضافات يمكنها عمل المطلوب ولكنى أبحث عن هذا بالتحديد لزيادة المعرفة فإن أمكنك المساعدة لا تبخل على بالمعلومة .

  • #2
    السلام عليكم ورحمة الله وبركاته
    للأسف لا أملك لا التعامل مع الاضافة و لا المعلومة

    لكن للأمانة لم يظهر لي ديلوج اختيار الفونت
    علما أعمل على جهاز قديم بونداوز (xp)

    تعليق


    • #3
      أشكرك على التفاعل مع السؤال أخى أبوبلقيس

      جربته على ويندوز 7 فقط ويعمل رغم نقصان الكود
      ولسه لم أجرب على باقى أنظمة الويندوز إلا بعدما أتوصل إلى فهم كيفية إستكمال الكود بالطريقة الصحيحة إن شاء الله

      سوف أحاول الاستكمال اليوم

      تعليق


      • #4
        المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
        أشكرك على التفاعل مع السؤال أخى أبوبلقيس

        جربته على ويندوز 7 فقط ويعمل رغم نقصان الكود
        ولسه لم أجرب على باقى أنظمة الويندوز إلا بعدما أتوصل إلى فهم كيفية إستكمال الكود بالطريقة الصحيحة إن شاء الله

        سوف أحاول الاستكمال اليوم
        نظام ويندور 7

        بعد وضعه الكود في زر يظهر مربع الخطوط

        الشكل التالي :

        تعليق


        • #5
          المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
          أشكرك على التفاعل مع السؤال أخى أبوبلقيس

          جربته على ويندوز 7 فقط ويعمل رغم نقصان الكود
          ولسه لم أجرب على باقى أنظمة الويندوز إلا بعدما أتوصل إلى فهم كيفية إستكمال الكود بالطريقة الصحيحة إن شاء الله

          سوف أحاول الاستكمال اليوم
          تمنينا تقديم القليل لرد الجميل مما تعلمته منك لكن يبدو أن المطلب فوق قدراتي
          فدنا بكل ما تتوصل اليه موفق

          تعليق


          • #6
            محاولة أخرى :

            كود:
            --
            local _LogFont = Memory.CreateStructure("long, long, long, long, long, long, long, long, long, long, long, long, long, long");
             Memory.SetStructureData(_LogFont, 1, 0, "<0", "");
             Memory.SetStructureData(_LogFont, 2, 0, "0", "");
             Memory.SetStructureData(_LogFont, 3, 0, "20", "");
             Memory.SetStructureData(_LogFont, 4, 0, "20", "");
             Memory.SetStructureData(_LogFont, 5, 0, "400", "");
             
             Memory.SetStructureData(_LogFont, 6, 0, true, ""); --Italic
             
             Memory.SetStructureData(_LogFont, 7, 0, true, "");  --Underline
             Memory.SetStructureData(_LogFont, 8, 0, true, "");  --StrikeOut
             Memory.SetStructureData(_LogFont, 9, 0, "0xB2", "");  --ARABIC_CHARSET
             Memory.SetStructureData(_LogFont, 10, 0, "OUT_TT_PRECIS", "");  --OutPrecision  
             Memory.SetStructureData(_LogFont, 11, 0, "CLIP_DEFAULT_PRECIS", "");   --ClipPrecision
             Memory.SetStructureData(_LogFont, 12, 0, "0x04", "");    --FontQuality
             Memory.SetStructureData(_LogFont, 13, 0, "1", "");    --PitchAndFamily  FIXED_PITCH
            
             Memory.SetStructureData(_LogFont, 14, 0, "Arial", "");    --FaceName
            
            local str = Memory.CreateStructure("long, long, long, long, long, long, long, long, long, long, long, long, long, long, long");
            
             Memory.SetStructureData(str, 1, 0, Memory.Size(str), "");
             Memory.SetStructureData(str, 2, 0, Application.GetWndHandle(), "");
             
             Memory.SetStructureData(str, 4, 0, _LogFont, "");
             
             Memory.SetStructureData(str, 5, 0, "0x00000100", "");
             
             Memory.SetStructureData(str, 6, 0, "0x00000100", "");   --Flags
             
             Memory.SetStructureData(str, 7, 0, "255", "");
             
             Memory.SetStructureData(str, 8, 0, "", "");
             
             Memory.SetStructureData(str, 9, 0, "", "");
             Memory.SetStructureData(str, 10, 0, "", "");
             Memory.SetStructureData(str, 11, 0, "", "");
             Memory.SetStructureData(str, 12, 0, "", "");
             
             Memory.SetStructureData(str, 13, 0, "0x0100", "");  --BOLD_FONTTYPE
             Memory.SetStructureData(str, 14, 0, 6, "");
             
             
             local result = DLL.CallFunction("comdlg32.dll", "ChooseFontA", str, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
            
             if result~=false then
                 _c = Memory.GetStructureData(str, 5, 0, "");  --  _GetFontSize
                 _c1 = Memory.GetStructureData(str, 14, 0, "");
                 Dialog.Message("", _c1);
             end 
            Memory.FreeStructure(_LogFont);
            Memory.FreeStructure(str);

            تعليق


            • #7
              تم الحذف مؤقتا
              التعديل الأخير تم بواسطة عبود عبود; الساعة 28-10-2017, 10:04 AM.

              تعليق


              • #8
                بسم الله الرحمن الرحيم
                استاذ عبود تمت التجربة على وندوز 7 و8 والاثنين
                يعطي نتيجة ممتازة لاختيار الفونت

                الكود الثاني يعطي ايضا نيجة ممتازة ولكن يظهر مسج برقم 6

                موفق بإذن الله ... لك مني أجمل تحية .

                تعليق


                • #9
                  المشاركة الأصلية بواسطة ياسرهتهت مشاهدة المشاركة
                  بسم الله الرحمن الرحيم
                  استاذ عبود تمت التجربة على وندوز 7 و8 والاثنين
                  يعطي نتيجة ممتازة لاختيار الفونت

                  الكود الثاني يعطي ايضا نيجة ممتازة ولكن يظهر مسج برقم 6

                  موفق بإذن الله ... لك مني أجمل تحية .
                  جزاك الله خيرا ...... هذا المسج هو تجاربى التى أحاول الحصول منها على إسم الخط ولسة لم تنجح معى

                  يمكنك أنت أيضا قراءة ردى السابق قراءة متأنية ربما تستفيد شيئا منها إذا كان كلامى التفسيرى واضح

                  تعليق


                  • #10
                    طبعا نسيت أشكر أخى عبدالهادى أيضا

                    تعليق


                    • #11
                      شكرا الى الأستاذ / Sajjadkhati من منتدى آخر وذلك لتصحيحة الكود لإيجاد إسم الفونت أو الخط بهذا التعديل :

                      كود:
                      --
                      local _LogFont = Memory.CreateStructure("long, long, long, long, long, byte, byte, byte, byte, byte, byte, byte, byte, char[32]");
                       Memory.SetStructureData(_LogFont, 1, 0, "<0", "");
                       Memory.SetStructureData(_LogFont, 2, 0, "0", "");
                       Memory.SetStructureData(_LogFont, 3, 0, "20", "");
                       Memory.SetStructureData(_LogFont, 4, 0, "20", "");
                       Memory.SetStructureData(_LogFont, 5, 0, "400", "");
                       
                       Memory.SetStructureData(_LogFont, 6, 0, true, ""); --Italic
                       
                       Memory.SetStructureData(_LogFont, 7, 0, true, "");  --Underline
                       Memory.SetStructureData(_LogFont, 8, 0, true, "");  --StrikeOut
                       Memory.SetStructureData(_LogFont, 9, 0, "0xB2", "");  --ARABIC_CHARSET
                       Memory.SetStructureData(_LogFont, 10, 0, "OUT_TT_PRECIS", "");  --OutPrecision  
                       Memory.SetStructureData(_LogFont, 11, 0, "CLIP_DEFAULT_PRECIS", "");   --ClipPrecision
                       Memory.SetStructureData(_LogFont, 12, 0, "0x04", "");    --FontQuality
                       Memory.SetStructureData(_LogFont, 13, 0, "1", "");    --PitchAndFamily  FIXED_PITCH
                      Memory.SetStructureData(_LogFont, 14, 4, 73, "");    --FaceName "Impact"
                       	 Memory.SetStructureData(_LogFont, 14, 5, 109, "");    --FaceName "Impact"
                       	 Memory.SetStructureData(_LogFont, 14, 6, 112, "");    --FaceName "Impact"
                       	 Memory.SetStructureData(_LogFont, 14, 7, 97, "");    --FaceName "Impact"
                       	 Memory.SetStructureData(_LogFont, 14, 8, 99, "");    --FaceName "Impact"
                       	 Memory.SetStructureData(_LogFont, 14, 9, 116, "");    --FaceName "Impact"
                      
                      	 
                       
                       
                      local str = Memory.CreateStructure("long, long, long, long, long, long, long, long, long, long, long, long, long, long, long");
                       Memory.SetStructureData(str, 1, 0, Memory.Size(str), "");
                       Memory.SetStructureData(str, 2, 0, Application.GetWndHandle(), "");
                       
                       Memory.SetStructureData(str, 4, 0, _LogFont, "");
                       
                       Memory.SetStructureData(str, 5, 0, "0x00000100", "");
                       
                       Memory.SetStructureData(str, 6, 0, "0x00000100", "");   --Flags
                       
                       Memory.SetStructureData(str, 7, 0, "255", "");
                       
                       Memory.SetStructureData(str, 8, 0, "", "");
                       
                       Memory.SetStructureData(str, 9, 0, "", "");
                       Memory.SetStructureData(str, 10, 0, "", "");
                       Memory.SetStructureData(str, 11, 0, "", "");
                       Memory.SetStructureData(str, 12, 0, "", "");
                       
                       Memory.SetStructureData(str, 13, 0, "0x0100", "");  --BOLD_FONTTYPE
                       Memory.SetStructureData(str, 14, 0, 6, "");
                       
                       
                       
                       local isOkSelect = DLL.CallFunction("comdlg32.dll", "ChooseFontA", str, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);  -- فراخوني تابع ChooseFont که در فايل Comdlg32.dll هست
                      
                      if (tonumber(isOkSelect) == 1) then  
                          myString = Memory.GetString(_LogFont + 28, -1, "Ascii");
                      	Dialog.Message("Notice", myString, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
                      end

                      تعليق


                      • #12
                        الاصج ان نقول : لاظهار إسم الفونت أو الخط بهذا التعديل

                        تعليق


                        • #13
                          المشاركة الأصلية بواسطة فرح صالحي مشاهدة المشاركة
                          الاصج ان نقول : لاظهار إسم الفونت أو الخط بهذا التعديل
                          ههههههه طيب وعلشان نظهر إسم الفونت أو الخط مش كان لازم إيجادة ؟

                          تعليق


                          • #14
                            المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
                            ههههههه طيب وعلشان نظهر إسم الفونت أو الخط مش كان لازم إيجادة ؟
                            الكود القديم كان قادرا على ايجاد الخط اما الكود الجديد فزيادة على ايجاد الخط اظهره في مسج لذلك قلت ان الاصح ان نقول اظهاره
                            تقبل مروري والسلام

                            تعليق


                            • #15
                              صحيح ولكن لا يزال هناك تصحيحات كثيرة مطلوبة
                              أما مسألة المسج فهذه ليست لب الموضوع فكان من الممكن أى شيئ آخر
                              أما عن تعليقى السابق فقد كان لسبب وهو معرفة أن الكود التالى يستخدم للحصول على النص " إسم الخط " وهو أيضا ليس صحيحا 100% :

                              كود:
                              Memory.GetString(_LogFont + 28, -1, "Ascii");
                              فبالكاد ينقصة تعديل صغير ليمكنه الحصول أو إيجاد إسم الخط دون زيادة
                              بالطبع مرور جميل منك

                              تعليق

                              مواضيع تهمك

                              تقليص

                              المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                              المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                              المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                              المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                              المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                              يعمل...
                              X