Zum Inhalt springen

Schnitzelfritz

Mitglieder
  • Gesamte Inhalte

    28
  • Benutzer seit

  • Letzter Besuch

  1. Hi, prinzipiell ist es möglich. Am besten suchst du auf Seiten wie The Code Project - Free Source Code and Tutorials oder CodeGuru nach Besipielen. z.B. CFlatComboBox
  2. Wenn du MFC verwendest kannst du auch mal die CRectTracker Klasse probieren.
  3. Hi, Evtl. fehlt nur folgende Linie in deinem Code (stdafx.h): #include <afxtempl.h>
  4. Hab mal ein bißchen recherchiert. Vielleicht hilft dir GDI+ weiter. Die Klasse Bitmap stellt eine Funktion GetPixelFormat zur Verfügung, die einen Wert aus der PixelFormat Enumeration zurückgibt. Da gibt es auch Werte für Alpha Kanäle. GDI+ erfodert aber etwas Overhead.
  5. Hm... hab ich jetzt auch keine Patentlösung parat. Vielleicht kannst du es über GetObject rausfinden, ob es sich um ein 32 Bit Bitmap handelt (ich glaub mit niedrigerer Bit Tiefe gehen keine Alpha Kanäle :confused: ) ICONINFO nfo; ... BITMAP bm; if ( GetObject ( nfo.hbmColor, sizeof(BITMAP), &bm ) == sizeof(BITMAP) ) { // evtl. Alpha Kanal if ( bm.bmBitsPixel == 32 ) { ... } }
  6. Wenn du nur den Handle des HICON als HBITMAP brauchst, dann solltest du GetIconInfo verwenden. Du benötigst dafür noch die ICONINFO Struktur als Parameter: ... ICONINFO nfo; GetIconInfo ( hIcon, &nfo ); // das ist der Handle für das Icon als HBITMAP nfo.hbmColor; // das ist der Handle für den transparenten Bereich des Icons nfo.hbmMask; ... Falls du noch die transparente Farbe brauchst musst du die beiden Handles noch untersuchen. (GetPixel)
  7. 'out' Parameter sind in C# die "klassischen" C++ Zeiger (LPDWORD in deinem Fall). Da ich in VB. Net nicht so fit bin weiß ich nicht wie das hier heißt (ByRef, ByVal)
  8. Wie ist denn die Syntax für das C# Keyword 'out' in VB .Net?
  9. Toll, dass es jetzt klappt. Ich habe die Funktionssignatur genommen, weil es die standardsignatur für user defined messages der MFC ist. Wenn du Visual Studio 6.0 verwendest dann compiliert alles ohne Probleme. Compilierst du den selben Code z.B. mit Visual Studio .Net 2003 meckert der Compiler sofort wenn deine Funktion nicht dieser Signatur entspricht. Ob das jetzt wirklich genau der Grund war kann ich nicht 100% beantworten aber es ist durchaus möglich da der Absturz nur im Release Build aufgetreten ist. Freut mich auf jeden Fall wenn ich helfen konnte.
  10. Vielleicht wenn du es als IntPtr übergibst?
  11. Deine Funktionsdeklaration sieht wie VB aus. Wie rufst du die Funktion denn auf? Weist du dem zweiten Parameter vorher etwas zu? Die funktion erwartet hier eine Zeigervariable.
  12. ListCtrl weiß ich leider grad nicht auswendig :floet: Bei dem Button setzt leitest du eine Klasse von CButton ab und reagierst auf die WM_OWNERDRAW Message. Dazu muss in der Dialogressource der BS_OWNERDRAW Style für den Button gesetzt sein. Was du dann noch brauchst sind Member Funktionen mit denen du dein Bild setzen kannst. Schau evtl auch mal zu CodeGuru oder The CodeProject, da es dort schon viele solcher Klassen gibt.
  13. Hi, in diesem Fall darfst du nicht den Rückgabewert der Funktion überprüfen sondern musst den zweiten Parameter untersuchen: Die MSDN sagt folgendes:
  14. Hi Filou, dein Problem hat mich nicht mehr losgelassen, daher hab ich mir mal schnell ein Test Projekt nachgebaut. (Code ist mit VS .Net 2003 erstellt). Bei mir wurde der Nachrichtenhandler ohne Probleme geöffnet als ich in der Threadfunktion PostMessage verwendet habe. Benutzt du VS 6.0? Da ist der Compiler etwas fehlertoleranter, wenn dein Nachrichtenhandler nicht die richtige Signatur für User defined messages (WM_USER) hat. Vielleicht ist das mit ein Grund warum deine Release Build einen Fehler hat. Hier siehst du mein Testprojekt, vielleicht hilfts dir weiter: (Die Implementierung der Threadfunktion habe ich aus deinem Post übernommen. Wichtig ist die Signatur von OnCheckTermine) // CThreadTestDlg Dialogfeld class CThreadTestDlg : public CDialog { // Konstruktion public: CThreadTestDlg(CWnd* pParent = NULL); // Standardkonstruktor ... // Generierte Funktionen für die Meldungstabellen virtual BOOL OnInitDialog(); [B]afx_msg LRESULT OnCheckTermine(WPARAM wParam, LPARAM lParam);[/B] DECLARE_MESSAGE_MAP() }; #define WM_CHECKTERMINE (WM_USER+0x100) BEGIN_MESSAGE_MAP(CThreadTestDlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_MESSAGE(WM_CHECKTERMINE,OnCheckTermine) //}}AFX_MSG_MAP END_MESSAGE_MAP() UINT DBUeberwachung(LPVOID pParam) { CThreadTestDlg *pWnd; pWnd=(CThreadTestDlg*)pParam; int iCounter = 0; //Dieser Thread überprüft alle 30 Sekunden die Verbindung zur Datenbank //und aktuallisiert die die Anzeige. while (g_iDBUeberwachung != 5555) //ENDLOS { //DATENBANKÜBERWACHUNG AKTIV if(g_iDBUeberwachung == SERVICE_START) { pWnd->PostMessage(WM_KEYDOWN,VK_F5,0); // Simulieren, dass die F5-Taste gedrückt wurde // Zur Aktuallisierung der Dokumentenliste // Und zur Prüfung des Status der Datenbank if(iCounter == 5) // Nur jede 10 Datenbankprüfung auch Termine Prüfen { pWnd->PostMessage(WM_CHECKTERMINE, 0, 0); iCounter = 0; } iCounter++; Sleep(1000); } //DATENBANKÜBERWACHUNG BEENDEN if(g_iDBUeberwachung == SERVICE_STOP) { return (1); } } return (0); } BOOL CThreadTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt // wenn das Hauptfenster der Anwendung kein Dialogfeld ist SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden g_iDBUeberwachung = SERVICE_START; CWinThread *pThread = AfxBeginThread ( DBUeberwachung, this, THREAD_PRIORITY_NORMAL ); return TRUE; } [B]LRESULT CThreadTestDlg::OnCheckTermine(WPARAM wParam, LPARAM lParam)[/B] { CAboutDlg dlg; dlg.DoModal(); return 0; }
  15. Dann probiers mal ohne Adressoperator: CPatient *pWnd; pWnd=(CPatient*)CWnd::FromHandle ( (HWND)[B]pParam[/B] ); ... CWinThread *pThread = AfxBeginThread(DBUeberwachung, [B]this -> GetSafeHwnd()[/B], THREAD_PRIORITY_NORMAL);

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...