Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Eigenen Cursor einbinden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
12.01.2007, 16:36 Uhr
-Biohazard-



Hallo Leute,
ich kriege es dummerweise nicht auf die Reihe, einen eigenen Cursor in mein Programm einzubinden. Ich definiere zwar in meiner Headerdatei einen Cursor, doch habe ich keine Ahnung, wie ich das dann mit der Resourcendatei (.rc) hinkriege (muss ich das auch machen ) oder ich überhaupt den Cursor anzeigen lasse. Die Cursordatei exisitert - "MyCursor.cur".
Main.cpp

Code:
#undef UNICODE
#include <windows.h>
#include <iostream>
#include "resource.h"
using namespace std;

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
//Deklaration der Windows-Nachrichten-Prozedur
char szAppName[] = "Test"; // Programmname
char szTitleName[] = "Test"; // Fenstertitel
HWND hWnd;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
// HINSTANCE hInstance und hPrevInstance = Programm identifizieren,
{
  ShowWindow( GetConsoleWindow(), SW_HIDE ); // Konsole verstecken
  Sleep( 100 );
  MSG msg;
  WNDCLASS wc;
  wc.style = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc = WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInstance;
  wc.hCursor = LoadCursor( NULL, MAKEINTRESOURCE(IDC_MYCURSOR) );
  wc.hIcon = LoadIcon( NULL, IDI_WARNING );
  wc.hbrBackground = ( HBRUSH )GetStockObject( BLACK_BRUSH );
  wc.lpszClassName = szAppName;
  wc.lpszMenuName = NULL;
  RegisterClass( & wc );
  hWnd = CreateWindow( szAppName, szTitleName, WS_OVERLAPPEDWINDOW, 0, 0, 800, 600, NULL, NULL, hInstance, NULL );
  ShowWindow( hWnd, iCmdShow );
  UpdateWindow( hWnd );
  while ( GetMessage( & msg, NULL, 0, 0 ) )
  {
    TranslateMessage( & msg );
    DispatchMessage( & msg );
  }
  return msg.wParam;
}

LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
  switch ( message )
  {
    case WM_DESTROY:
      PostQuitMessage( 0 );
      return ( 0 );
  }
  return DefWindowProc( hwnd, message, wParam, lParam );
}


Resource.h

Code:
#define IDC_MYCURSOR 1001


Wie gesagt: Nun weiß ich nicht, wie ich die Cursordatei einbinden und benutzen kann

Danke für eure Hilfe
--

Dieser Post wurde am 12.01.2007 um 16:36 Uhr von -Biohazard- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.01.2007, 17:00 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Einfach den Cursor in deine Projektresourcen importieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.01.2007, 17:16 Uhr
-Biohazard-



Der ist im Ordner drin, meinst du das so? Aber wie weiß dann der Compiler, welche Cursordatei er einbinden muss? Oder muss die resource.h so aussehen?

C++:
#define IDC_MYCURSOR


Sorry ich bin auf dem Gebiet neu, und Google spuckt nichts aus
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.01.2007, 18:55 Uhr
mischa
Fragender


du musst irgend wo eine datei mit der endung .rc haben und in der gibst du dann den pfad an. aber wenn du visual studio hast kannst du den einfach importieren und die ide macht alles von selbst
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.01.2007, 23:33 Uhr
-Biohazard-



Wie importieren? Das ist doch die Frage
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.01.2007, 15:10 Uhr
-Biohazard-



Für eine Antwort wäre ich dir sehr verbunden
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.01.2007, 20:43 Uhr
kurt



im arbeitbereich gehst du auf ressourcen... mit rechtsklick kommst du dann zu importieren

hoffe ich konnte dir helfen



MFG kurt
--
der tod ist sicher... das leben nicht... !!

Dieser Post wurde am 18.01.2007 um 20:43 Uhr von kurt editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.01.2007, 15:31 Uhr
-Biohazard-



Auch beim Borland C++ BuilderX?

Danke für deine Antwort
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.01.2007, 20:19 Uhr
-Biohazard-



Hallo,
ich bins nochmals. Ich habe mir nun von einem Freund Visual Studio Pro ausgeliehen, benutze als Aufbau folgenden Code, aber der Compiler will nicht Wo steckt der Fehler den Borland ignoriert

C++:
#define STRICT
#include "stdafx.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szAppName[] = "Test";
char szTitleName[] = "Test";
HWND hWnd; // Fensterhandle

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow )
{
  MSG msg;
  WNDCLASS wc;
  wc.style = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc = WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInstance;
  wc.hCursor = LoadCursor( hInstance, IDC_ARROW );
  wc.hIcon = LoadIcon( NULL, IDI_WARNING );
  wc.hbrBackground = ( HBRUSH )GetStockObject( WHITE_BRUSH );
  wc.lpszClassName = szAppName;
  wc.lpszMenuName = NULL;
  RegisterClass( & wc );
  hWnd = CreateWindow( szAppName, szTitleName, WS_OVERLAPPEDWINDOW, 0, 0, 200, 100, NULL, NULL, hInstance, NULL );
  ShowWindow( hWnd, iCmdShow );
  UpdateWindow( hWnd );
  while ( GetMessage( & msg, NULL, 0, 0 ) )
  {
    TranslateMessage( & msg );
    DispatchMessage( & msg );
  }
  return msg.wParam;
}

LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
  switch ( message )
  {
    case WM_DESTROY:
      PostQuitMessage( 0 );
      return ( 0 );
  }
  return DefWindowProc( hwnd, message, wParam, lParam );
}


Code:
1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Test.cpp
1>f:\ms visual studio\test\test.cpp(22) : error C2440: '=': 'const char [4]' kann nicht in 'LPCWSTR' konvertiert werden
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>f:\ms visual studio\test\test.cpp(35) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'char [5]' in 'LPCWSTR' nicht möglich
1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>f:\ms visual studio\test\test.cpp(43) : warning C4244: 'return': Konvertierung von 'WPARAM' in 'int', möglicher Datenverlust
1>Das Buildprotokoll wurde unter "file://f:\MS Visual Studio\Test\Debug\BuildLog.htm" gespeichert.
1>Test - 2 Fehler, 1 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Danke
--

Dieser Post wurde am 21.01.2007 um 20:21 Uhr von -Biohazard- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.01.2007, 22:20 Uhr
mischa
Fragender


du musst von unicode auf multy bite umschalten. das geht unter den properties und dann unter general oder dort in der ecke
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: