Symbol

Chri$

Mitglied
hi,
wie kann man ein eigenes, in Visual Studio 6 erstellte, Symbol an einer exe Datei verwenden, ohne eine Verknüpfung zu erstellen?
 
Ich finde deine Beschreibung nicht ganz klar, aber ich vermute, du möchtest wissen, wie man das Icon in einer Anwendung erzeugt bzw. festlegt.

Wenn du nur das Standardsymbol für Anwendungen siehst, reicht es, einfach eine Icon-Ressource anzulegen. Windows bzw. der Explorer verwendet dann dieses Symbol in der Anzeige.

Hast du bereits Icons in den Ressourcen, bedenke, dass der Explorer das erste (also das Icon mit der niedgristen ID) Icon benutzt.
 
Wenn du die Icons für ein Programm definierst muss du immer sowohl die 16x16 als auch die 32x32 Version machen
 
Oder meinst du, Dokumente bzw. Extensions, die mit deinem Programm geöffnet werden sollen? Dass diese ein Icon aus deinem Programm bekommen? Das sind Registry-Einträge, wenn's der Punkt ist, erkläre ich später gerne mehr.

Meinst du das Icon deines Hauptfensters bzw. das Icon das in der Taskleiste angezeigt wird? WM_SETICON mit jeweils TRUE und FALSE.

Das Icon, das der Explorer anzeigt, Projekt-Ressource hinzufügen-Icon - importieren oder neu anlegen. Wenn du ein Icon in Studio gemalt hast, sollte es eigentlich schon in deine EXE kompiliert werden. Ansonsten stelle sicher, dass es in den Ressourcen auftaucht bzw. das die .rc-Datei includet ist.

Sonst habe ich wirklich keine Ahnung, was du genau meinst. Kannst du es vielleicht noch einmal ausführlicher beschreiben?
 
Ich meine das Icon das am Desktop(zb Abreitsplatzicon) angezeigt wird.
Wenn man von dem eine Verknüpfung erstellt und unter Eigenschaften, Anderes Symbol klickt, kann man ein anderes auswählen. Wie kann man mit Visual Studio so ein Icon programmieren und verwenden?
 
Programmieren ist da nicht der richtige Ausdruck. Du kannst aber einfach eins malen und das sollte eigentlich als .ico speicherbar sein. Ansonsten müsste auch jedes bessere Zeichenprogramm (MSPaint natürlich nicht) .icos erstellen können. Sind auch nur eine Art Grafikformat.

Oder habe ich schon wieder falsch verstanden, und du willst wissen, wie man eine Verknüpfung am Desktop samt Icon anlegt? Dafür den folgenden Schnipsel benutzen:

Code:
BOOL CreateLink( const char *szPath, const char *szDescription, const char *szFile, const char *szIconPath, DWORD dwIconIndex, const char* szParameter )
{

  HRESULT       hRes;

  IShellLink      *pISL;

  IPersistFile    *pIPF;

  WORD            wString[MAX_PATH];

  char            szTemp[1000];

  BOOL            bResult;


  if ( !SUCCEEDED( CoInitialize( NULL ) ) )
  {
    return FALSE;
  }
  hRes = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&pISL );
  if ( !SUCCEEDED( hRes ) )
  {
    CoUninitialize();
    return FALSE;
  }
  hRes = pISL->QueryInterface( IID_IPersistFile, (void **)&pIPF );
  if ( !SUCCEEDED( hRes ) )
  {
    //MessageBox( NULL, "failed to query isl", "error", MB_OK | MB_APPLMODAL );
    CoUninitialize();
    return FALSE;
  }

  pISL->SetPath( szFile );
  wsprintf( szTemp, szFile );
  do
  {
    if ( strlen( szTemp ) )
    {
      szTemp[strlen( szTemp ) - 1] = 0;
    }
    else
    {
      break;
    }
  }
  while ( szTemp[strlen( szTemp ) - 1] != 92 );
  pISL->SetWorkingDirectory( szTemp );

  if ( szParameter )
  {
    pISL->SetArguments( szParameter );
  }

  if ( szIconPath != NULL )
  {
    pISL->SetIconLocation( szIconPath, dwIconIndex );
  }

  std::string       strDummy;


  strDummy = szPath;
  if ( strDummy.length() > 0 )
  {
    if ( strDummy[strDummy.length() - 1] != 92 )
    {
      strDummy += '\\';
    }
  }
  strDummy += szDescription;
  strDummy += ".lnk";

  // falls der Shortcut schon existiert, löschen, sonst klappt Save nicht!
  DeleteFile( strDummy.c_str() );

  MultiByteToWideChar( CP_ACP, 0, strDummy.c_str(), -1, wString, MAX_PATH );
  hRes = pIPF->Save( wString, STGM_READ );
  if ( SUCCEEDED( hRes ) )
  {
    bResult = TRUE;
  }
  else
  {
    bResult = FALSE;
  }
  pIPF->Release();
  pISL->Release();

  CoUninitialize();
  return bResult;

}

Der Schnipsel ist allgemein, den Pfad zum jeweiligen Desktop muss man selber rausfinden.

szPath ist der Pfad zum Desktop, szDescription der Text unter dem Icon, szFile der Pfad zu deinem File, szIconPath der Pfad zum gewünschten Icon (kann auch dein File sein), dwIndex der Index des Icons in dem Icon-File, und szParams etwaige zusätzliche Startparameter.
 
Ich habe eine .ico Datei erstellt aber wie kann man das Icon verwenden ohne eine Verknüpfung zu erstellen.
 
Kannst du das nicht einfach bei dem Dialog, der auf "Anderes Symbol verwenden" einfach dein Icon auswählen? Du musst nur wissen, wo du es gespeichert hast und fertig.
 

Neue Beiträge

Zurück