PROFI'den SUPERPROFI'ye kadar tüm sorularınız - 1. - sayfa 11

 
joo :

Bunu yaptım, hala aynı hata:

Zhunko :

Proje, kendi özellikleriyle VC++ 6.0'a mı kopyalandı, yoksa ayrı mı yapılandırıldı?

VS 2010'da XP'de olmayan işlevleri kullandığım üç kez zaten oldu. Her şey Vista ve 7'de çalıştı, ancak XP altında terminal kitaplığı görmedi.

Zhunko :

Konunun başında yazmış. Bu, XP'de bulunmayan WinAPI işlevleri kullanılırsa olur. Diğer sebep. Sistemin minimum sürümü daha yüksek bir sürümle sınırlıysa.

şimdi bende aynısı var Tüm eller bu işlevi aramak için uzanmayacak.

 

Zhunko :

joo :

Bunu yaptım, hala aynı hata:

Zhunko :

Proje, kendi özellikleriyle VC++ 6.0'a mı kopyalandı, yoksa ayrı olarak mı yapılandırıldı?

VS 2010'da XP'de olmayan işlevleri kullandığım üç kez zaten oldu. Her şey Vista ve 7'de çalıştı, ancak XP altında terminal kitaplığı görmedi.

Zhunko :

Konunun başında yazmış. Bu, XP'de bulunmayan WinAPI işlevleri kullanılırsa olur. Diğer sebep. Sistemin minimum sürümü daha yüksek bir sürümle sınırlıysa.

şimdi bende aynısı var Tüm eller bu işlevi aramak için uzanmayacak.

Nedenimi buldum! Ama onunla ne yapacağımı bilmiyorum.

Sorun, statik yöntemlerle bu sınıf yöntemi yapımında olduğu ortaya çıktı:

     static HWND HandleByProcessIdAndClass()
     {
      HWND   hwndLocal = NULL ; // Дескриптор искомого окна.
      size_t i = 0 ;

       ::EnterCriticalSection(&GetInstance()->csOne);
      ::EnterCriticalSection(&GetInstance()->csMultiple);
     ................. Здесь защищаемый код ...................
       ::LeaveCriticalSection(&GetInstance()->csMultiple);
      ::LeaveCriticalSection(&GetInstance()->csOne);
       return (hwndLocal);
     }

Senkronizasyonu kaldırmaya değer (kırmızıyla vurgulanmıştır) - kitaplık XP'ye görünür hale gelir. Vista'da çalışır.

Belki bazı sistem kitaplıklarının yetersiz bir sürümüdür?

=======

Bu sınıfın pahasına açıklamak gerekiyor.

Statik "Windows" yöntemlerine sahip tüm sınıf yöntemleri ve bunların yaklaşık 80'i benzer bir senkronizasyona sahiptir.

Belirtilen yöntem, önce başka bir "WindowsMT4" sınıfının örnek oluşturucusunda çağrılır.

Görünüşe göre "Windows" sınıfı doğru zamanda başlatılmıyor.

 

Nedenini buldum. Andrew yardım etti. Singleton'lar yanlış.

XP ve Vista, sınıfları farklı şekilde başlatır. Doğru singletonlara ihtiyacınız var.

 
Zhunko :

Nedenini buldum. Andrew yardım etti. Singleton'lar yanlış.

XP ve Vista, sınıfları farklı şekilde başlatır. Doğru singletonlara ihtiyacınız var.


Ne utanç. Sadece korkunç!
 
C-4 :

Ne utanç. Sadece korkunç!
Evet, tamam... :-)) Statik yöntemlerle sınıfı bir singleton'a değiştirdim. Her şey çalıştı.
 
Zhunko :
Evet, tamam... :-)) Statik yöntemlerle sınıfı bir singleton'a değiştirdim. Her şey çalıştı.

Tecrübe alışverişi için süper profesyonellere soru :)) - Singleton'u nasıl kaldırırsınız?

 
alsu :

Tecrübe alışverişi için süper profesyonellere soru :)) - Singleton'u nasıl kaldırırsınız?

Net kaynaklar ne demek? Yıkıcıda yapabilirsiniz.
 
Zhunko :
Net kaynaklar ne demek? Yıkıcıda yapabilirsiniz.

Hayır, bir nesnenin kendisini silme açısından - ne zaman silineceğine hangi prosedür karar verir?

Şu anda herhangi bir pratik hedefim yok, bir zamanlar birkaç singleton şablonu kullanan bir proje yaptığımı hatırladım - ve bu yüzden singleton'u kaldırma anında her zaman sorunlar vardı - referans izleme, sarma ile karıştırmak zorunda kaldım sarmalayıcılardaki yok edici, vb. .p... ve örneğin, bir istisna nedeniyle modüllerden biri çöktüğünde, tam bir sıçrama oldu... Sonuç olarak, bu, tek tonlarla en son uğraştığım zamandı. , çünkü. bana bu iyiden çok hemoroid gibi geldi)) Belki yanılıyorum.

 
alsu :

Hayır, bir nesnenin kendisini silme açısından - ne zaman silineceğine hangi prosedür karar verir?

Şu anda herhangi bir pratik hedefim yok, bir zamanlar birkaç singleton şablonu kullanan bir proje yaptığımı hatırladım - ve bu yüzden singleton'u kaldırma anında her zaman sorunlar vardı - referans izleme, sarma ile karıştırmak zorunda kaldım sarmalayıcılardaki yok edici, vb. .p... ve örneğin, modüllerden biri bir istisna nedeniyle çöktüğünde, o zaman tam bir sıçrama oldu... Sonuç olarak, bu tektonlarla son uğraşışımdı. , çünkü. bana bu iyiden çok hemoroid gibi geldi)) Belki yanılıyorum.

Son zamanlarda singletons öğrendim. Onlarsız imkansız olduğunu anladım. silemiyorum. Gerek yoktu.
 

alsu :

Sonuç olarak, bu singleton'larla son uğraşışımdı. bana bu iyiden çok hemoroid gibi geldi)) Belki yanılıyorum.

Bir singleton'u kaldırmakta sorun yaşıyorsanız, bunun kötüye kullanılması muhtemeldir. Singleton'lar da farklı olsa da, örneğin bir anka kuşunu ele alalım.