-
Gesamte Inhalte
28 -
Benutzer seit
-
Letzter Besuch
-
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
-
Auswahlrahmen programieren?
Schnitzelfritz antwortete auf Board00's Thema in C++: Compiler, IDEs, APIs
Wenn du MFC verwendest kannst du auch mal die CRectTracker Klasse probieren. -
Compiler error: 2501 <Problem mit class>
Schnitzelfritz antwortete auf twegele's Thema in C++: Compiler, IDEs, APIs
Hi, Evtl. fehlt nur folgende Linie in deinem Code (stdafx.h): #include <afxtempl.h> -
Ist ein Alpha-Kanal in HBITMAP (alternativ HICON) vorhanden?
Schnitzelfritz antwortete auf Segfault_ii's Thema in C++: Compiler, IDEs, APIs
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. -
HICON -> QIcon/QPixmap?
Schnitzelfritz antwortete auf Segfault_ii's Thema in C++: Compiler, IDEs, APIs
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 ) { ... } } -
HICON -> QIcon/QPixmap?
Schnitzelfritz antwortete auf Segfault_ii's Thema in C++: Compiler, IDEs, APIs
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) -
Frage zu GetWindowThreadProcessId
Schnitzelfritz antwortete auf strico's Thema in C++: Compiler, IDEs, APIs
'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) -
Frage zu GetWindowThreadProcessId
Schnitzelfritz antwortete auf strico's Thema in C++: Compiler, IDEs, APIs
Wie ist denn die Syntax für das C# Keyword 'out' in VB .Net? -
Programmabsturz als "Win32 Release"
Schnitzelfritz antwortete auf Filou's Thema in C++: Compiler, IDEs, APIs
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. -
Frage zu GetWindowThreadProcessId
Schnitzelfritz antwortete auf strico's Thema in C++: Compiler, IDEs, APIs
Vielleicht wenn du es als IntPtr übergibst? -
Frage zu GetWindowThreadProcessId
Schnitzelfritz antwortete auf strico's Thema in C++: Compiler, IDEs, APIs
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. -
Hilfe bei Steuerelemnten
Schnitzelfritz antwortete auf SunnyBunny's Thema in C++: Compiler, IDEs, APIs
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. -
Frage zu GetWindowThreadProcessId
Schnitzelfritz antwortete auf strico's Thema in C++: Compiler, IDEs, APIs
Hi, in diesem Fall darfst du nicht den Rückgabewert der Funktion überprüfen sondern musst den zweiten Parameter untersuchen: Die MSDN sagt folgendes: -
Programmabsturz als "Win32 Release"
Schnitzelfritz antwortete auf Filou's Thema in C++: Compiler, IDEs, APIs
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; } -
Programmabsturz als "Win32 Release"
Schnitzelfritz antwortete auf Filou's Thema in C++: Compiler, IDEs, APIs
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);