Autor Tema: Icono a aplicacion con transparencia  (Leído 4072 veces)

0 Usuarios y 1 Visitante están viendo este tema.

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Icono a aplicacion con transparencia
« en: Septiembre 08, 2010, 03:06:01 am »
lo q pasa es que pregunto si habria una forma de ponerle un icono a la aplicacion con canales alfa, q tenga sombra etc. porque no todos los iconos los agarra vb.
Podria ser editando su PE ya cuando este compilado, pero no lo daniaria? o si existe alguna otra solucion podrian decirmela. Gracias!!!!!
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Icono a aplicacion con transparencia
« Respuesta #1 en: Septiembre 08, 2010, 04:30:57 am »
Hola fijate esta fucnion que hiso cobein, tenes que poner el icono en un archivo de recurso (en este caso se llama ICON_1) solo se va a ver cuando este compilado.

Código: [Seleccionar]
Option Explicit
Private Const IMAGE_ICON                As Long = 1
Private Const WM_SETICON                As Long = &H80
Private Const ICON_SMALL                As Long = 0
Private Const ICON_BIG                  As Long = 1
Private Const GW_OWNER                  As Long = 4
Private Const SM_CXICON                 As Long = 11
Private Const SM_CYICON                 As Long = 12
Private Const SM_CXSMICON               As Long = 49
Private Const SM_CYSMICON               As Long = 50
Private Const LR_SHARED                 As Long = &H8000&

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function LoadImageAsString Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal uType As Long, ByVal cxDesired As Long, ByVal cyDesired As Long, ByVal fuLoad As Long) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()


Sub Main()
    Call Load(frmMain)
    Call frmMain.Show
    Call SetIcon(frmMain.hWnd, "ICON_1")
End Sub


Public Sub SetIcon(ByVal hWnd As Long, ByVal sIconResName As String)
' Author    : Cobein
' Mail      : cobein27@yahoo.com
' Purpose   : Function to make your application forms use the same Icon that the .exe

    Dim lhWndTop As Long
    Dim lhWnd As Long
    Dim cx As Long
    Dim cy As Long
    Dim hIcon As Long
    lhWnd = hWnd
    lhWndTop = lhWnd
    Do While Not (lhWnd = 0)
        lhWnd = GetWindow(lhWnd, GW_OWNER)
        If Not (lhWnd = 0) Then
            lhWndTop = lhWnd
        End If
    Loop
    cx = GetSystemMetrics(SM_CXICON)
    cy = GetSystemMetrics(SM_CYICON)
    hIcon = LoadImageAsString(App.hInstance, sIconResName, IMAGE_ICON, cx, cy, LR_SHARED)
    SendMessageLong lhWndTop, WM_SETICON, ICON_BIG, hIcon
    SendMessageLong hWnd, WM_SETICON, ICON_BIG, hIcon

    cx = GetSystemMetrics(SM_CXSMICON)
    cy = GetSystemMetrics(SM_CYSMICON)
    hIcon = LoadImageAsString(App.hInstance, sIconResName, IMAGE_ICON, cx, cy, LR_SHARED)
    SendMessageLong lhWndTop, WM_SETICON, ICON_SMALL, hIcon
    SendMessageLong hWnd, WM_SETICON, ICON_SMALL, hIcon
End Sub

Saludos.

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Icono a aplicacion con transparencia
« Respuesta #2 en: Septiembre 08, 2010, 11:28:58 am »
Yo lo resolvi con IcoFx duplicando las imagenes del icono (todos los tamaños a 32bpp y a 24bpp)...

Aun asi, como haces para que el icono del exe sea un icono aparte (por ejemplo que no sea el icono de ningun formulario?)

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Re:Icono a aplicacion con transparencia
« Respuesta #3 en: Septiembre 08, 2010, 12:27:10 pm »
Hola fijate esta fucnion que hiso cobein, tenes que poner el icono en un archivo de recurso (en este caso se llama ICON_1) solo se va a ver cuando este compilado.


Saludos.
perdoname si me equivoco, pero esto lo q hace es aplicar un icono al formulario desde recursos?
Lo q queria es q apareciera en el compilado o sea en el .exe.
no se si me di a enteder?
Gracias de antemano!
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Icono a aplicacion con transparencia
« Respuesta #4 en: Septiembre 08, 2010, 12:32:18 pm »
Para eso tenes q agregar un recurso llamado ICON y su ID=0, y agregarlo al proyecto. Una vez compilado, va a terminar siendo el icono del .exe.

Saludos
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Re:Icono a aplicacion con transparencia
« Respuesta #5 en: Septiembre 08, 2010, 12:35:13 pm »
a ok!!
deja lo checo
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein