Win32 uygulamasının HINSTANCE'ı WinMain'e aktarıldı, ancak geçerli HINSTANCE'ı belirlemenin başka bir yolu var mı (eğer bunu söyleyemediyseniz, win32 programlamada çok yeniyim!)? Bir kütüphanenin içinde bir pencere oluşturmam gerekiyor ve (kütüphane çapraz platform olduğundan), kimliği geçmek zorunda kalmamayı tercih ediyor.Geçerli HINSTANCE'ı belirle?
cevap
bellek, GetModuleHandle(NULL);
örnek tanıtıcı döndürür hizmet.
MFC kullanıyorsanız, AfxGetInstanceHandle'ı kullanabilirsiniz. MFC kullanmıyorsanız
kullanabilirsiniz: GetWindowLong (hWnd, GWL_HINSTANCE)
__ImageBase özellikle kütüphaneler söz konusu olduğunda arkadaşınız. (R. Chen tarafından, olmasa Brian Bondy ile bağlantılı aynı post) bağlantılı blog yazısı okunmaya değer olduğunu
Not (yorumlar dahil!)
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS ile hantal [GetModuleHandleEx] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683200.aspx) yoksayılıyor, bu gerçekten bulmak için sadece ** güvenilir ** yoldur modül kolu ve kabul edilen cevap olmalıdır. – IInspectable
fonksiyon AfxGetStaticModuleState() hile yok . Bir dll içinde çağırırsanız, işlevler, bir exe içindeki çağrı, yürütülebilir dosyaya tanıtıcı döndürdüğünde, tanıtıcıyı dll'ye döndürür.
DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);
Soru * winapi * ile etiketlenmiştir. Windows API'sında 'AfxGetStaticModuleState' yoktur. – IInspectable
- 1. Görüntüdeki kalıbı belirle
- 2. Android'de ProgressDialog öğesini belirle
- 3. C# Kod boyutunu belirle
- 4. Websocket send() bittiğinde belirle
- 5. dotnet sürümümü belirle
- 6. Temel URL'yi Belirle
- 7. Tanımlı bir kullanıcı için tüm grupları belirle
- 8. sınıflandırma için rasgele ormanı belirle
- 9. Tüm alt öğelerin genişliğini belirle
- 10. İki dikdörtgenin kesişme alanını belirle
- 11. PHP Dizisindeki Boyutların sayısını Belirle
- 12. GWT CellTable - sütun genişliği belirle
- 13. Android çevirici varsayılan metni belirle
- 14. T-SQL'de Saat Dilimi Kaybını Belirle
- 15. wkhtmltopdf: Hangi kağıt boyutları geçerli?
- 16. SQL Server Sorgulama Boyutları Sonuçları Belirle
- 17. OpenFileDialog. "Dizin Diyaloğunu Belirle" ne dersiniz?
- 18. HTML Chrome Denetimi Resim Boyutlarını Belirle
- 19. Montajda 32/64 bit mimariyi belirle
- 20. C# MVC Başarılı Http Durum Kodunu Belirle
- 21. Swift: applicationDidEnterBackground çağrıldığında Aktif Görünüm Denetleyicisini Belirle
- 22. xtable + knitr sütun genişliğini belirle html
- 23. Gönderme/yenileme sonrasında seçili seçeneği belirle seç
- 24. javascript Harita nesnesi vs Nesne belirle
- 25. En son uygulama havuzu geri dönüştürülen bir uygulama havuzu belirle
- 26. Tesseract-OCR tarafından tanınmak üzere kullanılacak yazı tipini açıkça belirle
- 27. Javascript: Yarına yeni bir tarih belirle 8 am
- 28. php - bir açılan seçicide varsayılan değeri belirle db
- 29. Başlangıç yığın işaretleyicisini, bağlayıcı komut dosyasıyla açıkça belirle
- 30. Raylar 3- Aktif Yönetici (Formtastic), sütun belirle Genişlik
Tamamen doğru değil: Exe'nin HINSTANCE'sini tekrarlar. Kod bir DLL içinde yürütürse, bu yanlış davranışlara yol açabilir –
@Serge: ne söyleyeceğinden, yürütülebilir dosyasının HINSTANCE istediği tam olarak. –
+1: Bir modül adından geçerek, bu işlev de 'HINSTANCE' DLL'lerini almak için kullanılabilir. “HINSTANCE” ve “HMODULE” un Windows'un modern sürümlerinde esas olarak eşdeğer olduğunu unutmayın. –