• Lunes 29 de Abril de 2024, 11:38

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Emperorxdevil

Páginas: [1]
1
C/C++ / Re: Duda Al Pintar Texto En Consola
« en: Jueves 2 de Agosto de 2007, 14:29 »
Rayos !! La API ValidateRect no estaba en mi base de datos.
Weno, me estoy bajando varios libros de la API para completarla.

Al final conseguí pintar texto de esta forma:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. void menu(void);
  6.  
  7. HWND hConsole;
  8.  
  9.  
  10.  
  11. void main() {
  12.  
  13.   menu();
  14.   getchar();
  15.  
  16. }
  17.  
  18.  
  19.  
  20. void menu(void)
  21.  {
  22.  
  23.  
  24.    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  25.  
  26.    SetConsoleTextAttribute(hConsole, 2);
  27.  
  28.  
  29.     printf("\n\n(Texto en verde) El StdHWND es: %d ",hConsole);
  30.  
  31.  
  32.    SetConsoleTextAttribute(hConsole, 5);
  33.    printf("\n\n\n");
  34.  
  35. }
  36.  
  37.  


Gracias por el soporte !!

Salu2

2
C/C++ / Duda Al Pintar Texto En Consola
« en: Jueves 2 de Agosto de 2007, 00:19 »
Hola a todos.

Verán, estoy intentando pintar texto de color sobre la ventana tipica que se abre en un programa C de consola con API.

Resulta que estoy un poco perdido, porque creo que no se me olvida nada y en consola no sale el texto coloreado ni sin colorear.

El code es este:

Código: Text
  1.  
  2.  
  3. char s[]="Texto"; // texto que quiero pintar de rojo
  4.  
  5. HWND h;
  6. HDC hd;
  7.  
  8.  
  9. h = FindWindow("ConsoleWindowClass", NULL);  // obtengo el handle
  10. hd=GetDC(h) // obtengo el handle del contexto
  11.  
  12.         SetTextColor(hd, 0x00FF0000); // defino el color rojo..
  13.    TextOut(hd, 10, 5, s, lstrlen(s)); // intento pintarlo en el area cliente de la ventana
  14.  
  15.  

Podeis decirme por qué no "pinta" el texto ?
No es la Api correcta ?

Gracias

3
ASM (Ensamblador) / Re: Duda Con Code Asm En Gcc
« en: Viernes 27 de Julio de 2007, 00:57 »
Gracias por el soporte !

Salu2

4
ASM (Ensamblador) / Re: Duda Con Code Asm En Gcc
« en: Jueves 26 de Julio de 2007, 23:17 »
Pos vaya tela, entonces debo suponer que compila pero al ejecutar es cuando falla.

Alguna idea de como posicionar el cursor coordenadas x,y en la consola de c (que no sea con gotoxy q no es ansi) ?

Porque tenia otro code en asm que hace eso, pero tambien es de 16 bits y no va a funcionar, aunque creo que debería porque si no para que quiere windows la maquina virtual de 16 bits ?

O puedo pasar ese code de alguna forma a 32 bits (y se supone que funcionará) ?


Gracias

5
ASM (Ensamblador) / Duda Con Code Asm En Gcc
« en: Jueves 26 de Julio de 2007, 01:24 »
Hola a todos, verán estaba programando en C cuando pense qué podía hacer para borrar la ventana de consola (el cls de windows, vamos) en vez de hacer unos cuantos printf("\n") cutres.

Revise mis archivos y me encontre con un code en asm que lo hacía.

Su code es éste:

Código: Text
  1.  
  2. Mov ax,0600h
  3. Mov bh, 07h  
  4. Mov cx,0000h
  5. Mov dx,184fh
  6. Int 10h
  7.  
  8.  

Tras mirar como gcc trabajaba con el asm y ver que la sintaxis era AT&T
porté el code a ésto:

Código: Text
  1.  
  2.  
  3. void cls() {
  4.  
  5.  __asm__ ("movw $0x600, %ax\n"
  6.               "movb $0x7, %bh\n"
  7.               "movw $0x0, %cx\n"
  8.               "movw $0x184f, %dx\n"
  9.               "int $0x10");
  10. }
  11.  
  12.  
  13.  

El programa me compila, pero al usar la función cls() en la linea:

Código: Text
  1.  
  2. "int $0x10");
  3.  
  4.  

El programa de un Segmentation Fault.

Pueden decirme por qué falla ? No he portado bien el code, o es que Windows Xp no me deja usar esa interrupción ?

A ver si me pueden ayudar.

Salu2

6
C# / Re: Inputbox En C#
« en: Martes 24 de Julio de 2007, 23:51 »
No se esactamente a lo que te refieres NeoPro, (ya se que cuestion de codear) pero lo que quise hacer fue 'emular' el Inputbox de VB y creo que lo consegui.

Salu2

7
C/C++ / Re: Problema Extraño Al Tratar De Escribir Un Archivo.
« en: Domingo 22 de Julio de 2007, 23:41 »
Asi a golpe de vista me choca esto:

Código: Text
  1.  
  2. struct _tipot{
  3. char tipotrans[15];
  4. char desc[100];
  5. char dep[];
  6. char giro[];
  7. char trasp[];  /* Tamaño sin definir, tampoco incializados */
  8. char ab[];
  9. char cdep[];
  10. char cgiro[];
  11. char ctrasp[];
  12. char cab[];
  13. int monto;
  14. };
  15.  
  16.  

Define la longitud de los arrays o inicialos con valor (dices que compila, pero yo creo que no).

Luego deshazte de esto (no sirve para nada) no es ANSI y usa getchar, funciona esactamente igual.

Código: Text
  1.  
  2. #include <conio.h>
  3.  
  4. getch();
  5.  
  6. getche()
  7.  
  8.  

Y cierra los archivos que abras hombre, que no he visto fclose por ningun lao.

Despues de esto, a ver que es lo que falla.

Salu2

8
C/C++ / Re: Captura De Excepciones Ansi C
« en: Domingo 22 de Julio de 2007, 23:24 »
Gracias, ahora si entendi en que fallaba y aprendi a capturar la excepción a la que llamo.

Aunque me quejo de que la info de algunas las páginas no es suficiente (antes de ver ese link googlee y ningun ejemplo que vi me saco de la duda) o no esta bien explicada.

Salu2 y gracias

9
C/C++ / Re: Captura De Excepciones Ansi C
« en: Domingo 22 de Julio de 2007, 17:09 »
Gracias por el aporte, aunque no sé por qué este code no intercepta la excepcion que desencadeno (corregí el valor en signal.h) ya que ahora uso raise:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <signal.h>
  4.  
  5. void manejador(int sig) {
  6. printf("\Excepción capturada\n");
  7. system("PAUSE");
  8.        exit (0);    
  9.      }
  10.      
  11.  
  12. int main() {
  13.    
  14.      signal(SIGUSR1,manejador);
  15.    
  16.      printf(" %d",4);
  17.      raise(SIGUSR1);          
  18.      getchar();
  19. }
  20.  
  21.  

Gracias de antemano
Salu2

10
C# / Re: Captura Webcam En C#
« en: Domingo 22 de Julio de 2007, 06:01 »
Gracias por reportar el error.
Por los errores que me muestras, faltan los namespaces:
Código: Text
  1.  
  2. System.Drawing;             // Para Image
  3. System.Windows.Forms;   //  Para Form
  4.  
  5.  
Ya los inclui arriba.
Salu2

11
C/C++ / Captura De Excepciones Ansi C
« en: Domingo 22 de Julio de 2007, 05:58 »
Hola a todos.

Verán tengo un problemilla que todavía no he conseguido solucionar.

En C++ puedo usar try, catch y throw para gestionar las excepciones.

Pero resulta que tengo programar en ANSI C.

Investigué sobre el tema y vi que esto se hace con señales. Bien, pues resolví alguna duda pero cuando escribi este code para probar lo aprendido...

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <signal.h>
  4.  
  5. void manejador(int sig) {
  6. printf("\Excepción capturada\n");  
  7.            getchar();  
  8.      }
  9.      
  10.  
  11. int main() {
  12.    
  13.      signal(SIGUSR,manejador);
  14.    
  15.      printf(" %d",4/0);          
  16.      
  17. }
  18.  
  19.  

Me di cuenta de que la constante SIGUSR no estaba definida en signal.h
Abri el archivo y le di un valor arbitrario (en concreto 12) pensando que después de esto el problema estaría solucionado...

Pero no es asi, el programa genera el tipico error de W xp de que mandes el reporte de errores en vez de capturar el error.

Por qué usando SIGPFE si captura el error y una vez definida la constante SIGUSR  ( en signal.h)no? Puedo arreglarlo ?

Qué es lo que he hecho mal ? Porque este error es una prueba y lo que busco es escribir capturadores de excepciones para que los programas que haga.

En VB, usaba la API SetUnhandledExceptionFilter pero creo que no es viable esta solución porque para programas de consola tengo que incluir windows.h y son 300 kb + (con gcc), además si las librerias de C me lo pueden solucionar paso de esto.


A ver si pueden ayudarme, y gracias

12
C# / Captura Webcam En C#
« en: Sábado 21 de Julio de 2007, 17:12 »
Hola a todos.

Aqui les dejo un clase propia para capturar imagenes con la webcam en C#

Esta clase, lista las cam's enchufafas al pc, captura fotos, permite redimensionar la imagen capturada antes de guardarla y elegir el formato de la imagen (jpg,bmp,etc)

Espero que les sirva.

Para usarla, declaren un nuevo objeto webcam.

En el constructor le dicen que frames /s capturara, un picturebox para mostrar la captura y un listbox ( en el que saldran las cam's detectadas).

Usen los metodos Listar, Capturar, StopCaptura y GuardarImagen


Espero que les sirva y les animo a mejorarla.

Namespaces Adicionales para que funcione la clase:
Código: Text
  1.  
  2. using System.Drawing;                              // Para Image
  3. using System.Drawing.Imaging;                // Para trabajar con imágenes
  4. using System.Drawing.Drawing2D;           // Para trabajar con Imágenes
  5. using System.Runtime.InteropServices;   // Para usar API
  6. using System.Windows.Forms;               // Para usar Formularios
  7.  
  8.  

Código: Text
  1.  
  2. public class WebCam  {
  3.    
  4.      // Conserva esta cabecera
  5.      // Empeorxdevil 2007
  6.    
  7.            class SaveImage {
  8.  
  9.           // Conserva esta cabecera
  10.           // Emperorxdevil 2007
  11.  
  12.                       /// <summary>
  13.                       /// Imagen que contiene la clase
  14.                       /// </summary>
  15.                       public  Image Tmp; //  referencia a la imagen del Picturebox Asociado
  16.                       Form Ref; // referencia que necesitare a este formulario
  17.                
  18.                         Form Opciones;
  19.                         GroupBox Gr;
  20.                         RadioButton R1;
  21.                         RadioButton R2;
  22.                         RadioButton R3;
  23.                         TextBox Porciento;
  24.                         TextBox Larg;        // Objetos necesarios para formar el diálogo
  25.                         TextBox Anch;
  26.                         Label L1;
  27.                         Label L2;
  28.                         Button Acepta;
  29.                         Button Cancelar;
  30.                    
  31.                         SaveFileDialog Sv;
  32.                         DialogResult rs;
  33.  
  34.  
  35.                 /// <summary>
  36.                 /// Constructor de clase SaveImage
  37.                 /// </summary>
  38.                 /// <param name="imagen">Imagen que se va a guardar</param>
  39.                 /// <param name="Interfaz"> Si se mostrará Interfaz</param>
  40.                 public SaveImage(Image imagen, bool Interfaz) {
  41.  
  42.                         Tmp=imagen; // Asigno la imagen...              
  43.                          Opciones= new Form();
  44.                          Ref=Opciones;
  45.                          Opciones.Width=333;     // Configuracion
  46.                          Opciones.Height=198;
  47.                          Opciones.Text="Parámetros de Imagen";
  48.                          Opciones.ControlBox=false;
  49.                          Opciones.ShowInTaskbar=false;
  50.                          Opciones.FormBorderStyle=FormBorderStyle.FixedDialog;
  51.  
  52.                              Gr= new GroupBox();
  53.                              Gr.Width=288;
  54.                              Gr.Height=105;
  55.                              Gr.Text="Configuración";
  56.                              Gr.Location= new Point(18,15);  
  57.                             Porciento= new TextBox();    
  58.                             Porciento.Enabled=false;                   // Configuracion
  59.                             Porciento.Text="";    
  60.                             Porciento.Width=37;
  61.                             Porciento.Height=20;
  62.                             Porciento.MaxLength=3;
  63.                             Porciento.TextAlign=HorizontalAlignment.Center;
  64.                             Porciento.Location= new Point(147,47);
  65.                                 R1= new RadioButton();
  66.                                 R1.Text="Guardar con Dimensiones Actuales";
  67.                                 R1.Width=191;
  68.                                 R1.Height=17;
  69.                                 Gr.Controls.Add(R1);
  70.                                 R1.Location= new Point(18,25);                                  
  71.                                 R2 = new RadioButton();
  72.                                 R2.CheckedChanged += new EventHandler(R2_CheckedChanged);
  73.                                 R2.Text="Reducir tamaño al";
  74.                                 R2.Width = 115;             // Configuracion
  75.                                 R2.Height = 17;
  76.                                 R2.Location= new Point(18,48);
  77.                                 Gr.Controls.Add(R2);
  78.                                 Gr.Controls.Add(Porciento);
  79.                                 L1 = new Label();
  80.                                 L1.Text="%";
  81.                                 L1.AutoSize=true;
  82.                                 L1.Location= new Point(195,50);
  83.                                 Gr.Controls.Add(L1);
  84.                                 R3 = new RadioButton();
  85.                                 R3.CheckedChanged += new EventHandler(R3_CheckedChanged);
  86.                                 R3.Text="Cambiar tamaño a"; // Configuracion
  87.                                 R3.Width=113;
  88.                                 R3.Height=17;
  89.                                 R3.Location= new Point(18,71);
  90.                                 Gr.Controls.Add(R3);
  91.                                 L2 = new Label();
  92.                                 L2.Text="X";
  93.                                 L2.AutoSize=true;
  94.                                 L2.Location=new Point(195,75);
  95.                                 Gr.Controls.Add(L2);
  96.                     Larg= new TextBox();
  97.                     Larg.Enabled=false;
  98.                     Larg.Width=37;
  99.                     Larg.Height=20;
  100.                     Larg.MaxLength=4;
  101.                     Larg.TextAlign=HorizontalAlignment.Center;
  102.                     Larg.Location= new Point(147,71);
  103.                     Gr.Controls.Add(Larg);
  104.  
  105.                     Anch= new TextBox();
  106.                     Anch.Enabled=false;
  107.                     Anch.Width=37;
  108.                     Anch.Height=20;
  109.                     Anch.MaxLength=4;
  110.                     Anch.TextAlign=HorizontalAlignment.Center; // Configuracion
  111.                     Anch.Location= new Point(218,70);
  112.                     Gr.Controls.Add(Anch);                    
  113.  
  114.                            Acepta= new Button();
  115.                            Acepta.Text="Aceptar";
  116.                            Acepta.Width=59;
  117.                            Acepta.Height=26;
  118.                            Acepta.Location= new Point(247,133);
  119.                            Acepta.Click += new EventHandler(Acepta_Click);
  120.  
  121.                            Cancelar= new Button();
  122.                            Cancelar.Text="Cancelar";
  123.                            Cancelar.Width= 59;
  124.                            Cancelar.Height=26;
  125.                            Cancelar.Location= new Point(18,133);
  126.                            Cancelar.Click += new EventHandler(Cancelar_Click);
  127.                                 Opciones.Controls.Add(Gr);
  128.                                 Opciones.Controls.Add(Acepta);
  129.                                 Opciones.Controls.Add(Cancelar);
  130.                                 Opciones.StartPosition=FormStartPosition.CenterScreen;
  131.                                 Opciones.ShowDialog();
  132.                      
  133.                 }
  134.  
  135.                
  136.                 /// <summary>
  137.                 /// Constructor de la clase SaveImage sin Interfaz
  138.                 /// </summary>
  139.                 /// <param name="imagen">Imagen a Guardar</param>
  140.                 public SaveImage(Image imagen) {
  141.                     Tmp = imagen; // Asigno la imagen...  
  142.                 }
  143.  
  144.                 void R3_CheckedChanged(object sender, EventArgs e)
  145.                {
  146.                    if (this.R3.Checked) { this.Anch.Enabled=true; this.Larg.Enabled=true;}
  147.                    else {this.Anch.Enabled=false; this.Larg.Enabled=false; }
  148.                }
  149.                 void R2_CheckedChanged(object sender, EventArgs e)
  150.                {
  151.                    if (this.R2.Checked) { this.Porciento.Enabled=true;}
  152.                    else { this.Porciento.Enabled=false; }
  153.                }
  154.                 void Acepta_Click(object sender, EventArgs e)
  155.                {
  156.                      try {
  157.                             if (R1.Checked|| R2.Checked||R3.Checked) {                
  158.                                    
  159.                              if (R2.Checked) {Tmp=Resize(Tmp,Convert.ToInt32(Porciento.Text));}
  160.                              
  161.                              if (R3.Checked) {Tmp=Resize(Tmp,Convert.ToInt32(Larg.Text),Convert.ToInt32(Anch.Text)); }      
  162.    
  163.                                    Sv= new SaveFileDialog(); // Creo un diálogo para salvar la imagen
  164.                                    Sv.Title = "Guardar imagen como..."; // Lo configuro
  165.                                    Sv.Filter = "Archivo JPG|*.jpg|Archivo PNG|*.png|Archivo GIF|*.gif|Mapa de Bits|*.bmp";
  166.                                    rs = Sv.ShowDialog(); // Lo muestro modal
  167.  
  168.  
  169.                                    if (rs == DialogResult.OK) {
  170.                                    
  171.                                        int x = Sv.FilterIndex; // Ontengo la extensión seleccionada  
  172.  
  173.                                        switch (x)
  174.                                        {
  175.                                            // Salvo la imagen en el formato deseado
  176.                                            case 1:
  177.                                                Tmp.Save(Sv.FileName, ImageFormat.Jpeg);
  178.                                                break;
  179.                                            case 2:
  180.                                                Tmp.Save(Sv.FileName, ImageFormat.Png);
  181.                                                break;
  182.                                            case 3:
  183.                                                Tmp.Save(Sv.FileName, ImageFormat.Gif);
  184.                                                break;
  185.                                            case 4:
  186.                                                Tmp.Save(Sv.FileName, ImageFormat.Bmp);
  187.                                                break;
  188.                                        }
  189.                                             Ref.Dispose(); // Cierro el formulario        
  190.                                    }
  191.                                 }
  192.                                 else { MessageBox.Show("Al menos debe selecionar una opción","xdevilWebCapture", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
  193.  
  194.                                 }
  195.    
  196.                                 catch {
  197.                                     MessageBox.Show("Introduzca valores válidos", "xdevilWebCapture", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  198.                                 }      
  199.  
  200.                }                
  201.                 void Cancelar_Click(object sender, EventArgs e)
  202.                 {
  203.                      Ref.Dispose(); // Cierro el formulario
  204.                 }
  205.  
  206.  
  207.  
  208.                 /// <summary>
  209.                 /// Escala la imagen capturada al % especificado
  210.                 /// </summary>
  211.                 /// <param name="foto"> Imagen que se quiere escalar </param>
  212.                 /// <param name="TantoPorCiento"> Porcentaje de reducción</param>
  213.                 /// <returns>Imagen escalada</returns>
  214.                 public Image Resize(Image foto,int TantoPorCiento) {
  215.  
  216.                         float Tporciento=((float)TantoPorCiento/100); // Obtengo el coeficiente de dimension                    
  217.                         int ImgOrAncho=foto.Width;
  218.                         int ImgOrAlto=foto.Height; // Obtengo las dimensiones originales de la foto
  219.  
  220.                         int OrigX=0;
  221.                         int OrigY=0;
  222.                         int ResX=0;  // Variables referencia para saber donde empiezo a contar px
  223.                         int ResY=0;
  224.  
  225.                         int ResAncho=(int)(ImgOrAncho*Tporciento);
  226.                         int ResAlto = (int)(ImgOrAlto * Tporciento); // Obtengo las dimensiones al % especificado    
  227.  
  228.                       Bitmap RszIm= new Bitmap(ResAncho,ResAlto,PixelFormat.Format24bppRgb); // Creo una imagen con esas dimensiones y bpp
  229.                       RszIm.SetResolution(foto.HorizontalResolution,foto.VerticalResolution); // Le doy la misma res. que la original
  230.                        
  231.                       Graphics Gfoto= Graphics.FromImage(RszIm); // Creo una intancia de Graphics para manejar la imagen nueva
  232.                       Gfoto.InterpolationMode= InterpolationMode.HighQualityBicubic; // Especifico la calidad del algoritmo de sampleo
  233.                       // De la foto original, obtengo la redimensionada (mediante un rectángulo)
  234.                       Gfoto.DrawImage(foto,new Rectangle(ResX,ResY,ResAncho,ResAlto),new Rectangle(OrigX,OrigY,ImgOrAncho,ImgOrAlto),GraphicsUnit.Pixel);  
  235.                       Gfoto.Dispose(); // Ya no me hace falta esto, asi que lo descargo
  236.  
  237.                         return(RszIm); // Devuelvo la imagen redimensionada
  238.                 }
  239.                 /// <summary>
  240.                 /// Redimensiona la imagen en pixeles
  241.                 /// </summary>
  242.                 /// <param name="foto"> Imagen a redimensionar</param>
  243.                 /// <param name="ancho">Ancho de la imagen</param>
  244.                 /// <param name="alto">Alto de la imagen</param>
  245.                 /// <returns>Imagen redimensionada</returns>
  246.                 public Image Resize(Image foto, int ancho, int alto) {
  247.  
  248.                             int ImgORAncho = foto.Width;
  249.                             int ImgOrAlto =  foto.Height; // Obtengo las dimensiones de la foto
  250.  
  251.                             int OrigX = 0;
  252.                             int OrigY = 0;
  253.                             int ResX = 0;  // Varables referencia para saber donde contar px
  254.                             int ResY = 0;
  255.  
  256.                             float Porciento = 0;
  257.                             float PorcientoAncho = 0; // Porcentajes de sampleo
  258.                             float PorcientoAlto = 0;
  259.  
  260.                     PorcientoAncho = ((float)ancho / (float)ImgORAncho);
  261.                     PorcientoAlto  = ((float)alto / (float)ImgOrAlto); //Calculo el % que puedo resamplear
  262.    
  263.                         if (PorcientoAlto  < PorcientoAncho){
  264.                                     Porciento  = PorcientoAlto; }
  265.                             else { // Para resamplear bien                
  266.                                     Porciento = PorcientoAncho; }
  267.                          
  268.  
  269.                     int AnchuraFinal = (int)(ImgORAncho  * Porciento);
  270.                     int AlturaFinal;  // Calculo las nuevas dimensiones                
  271.        
  272.                             if (ancho >alto) {
  273.                                         AlturaFinal = (int)(ImgOrAlto  * Porciento); }
  274.                                else {
  275.                                     AlturaFinal =AnchuraFinal;} // Para proporcionar la imagen
  276.  
  277.                     Bitmap RszIm = new Bitmap(ancho, alto,PixelFormat.Format24bppRgb);
  278.                     RszIm.SetResolution(foto.HorizontalResolution,foto.VerticalResolution);
  279.  
  280.                     Graphics Gfoto = Graphics.FromImage(RszIm);
  281.                     Gfoto.InterpolationMode =InterpolationMode.HighQualityBicubic;
  282.                     Gfoto.DrawImage(foto,new Rectangle(ResX, ResY, AnchuraFinal, AlturaFinal),new Rectangle(OrigX, OrigY, ImgORAncho , ImgOrAlto),GraphicsUnit.Pixel);
  283.                     Gfoto.Dispose();
  284.                     return (RszIm);
  285.  
  286.                 }
  287.  
  288.             } /// Clase que guarda las imágenes
  289.  
  290.              #region Funciones API
  291.  
  292.           [DllImport("user32.dll", EntryPoint = "SendMessage")]
  293.           public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
  294.  
  295.           [DllImport("avicap32.dll", EntryPoint = "capCreateCaptureWindowA")]
  296.           public static extern int capCreateCaptureWindowA(string lpszWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int hwndParent, int nID);
  297.  
  298.           [DllImport("user32.dll", EntryPoint = "EmptyClipboard")]
  299.           public static extern int EmptyClipboard();
  300.          
  301.           [DllImport ("avicap32.dll",EntryPoint="capGetDriverDescriptionA")]
  302.           public static extern bool capGetDriverDescriptionA(int wdriver,string lpszName,int cbName,string lpszVer,int cbVer);
  303.  
  304.          
  305.              #endregion
  306.  
  307.              #region Constantes API
  308.  
  309.           const int WM_USER = 1024;
  310.           const int WM_CAP_CONNECT = 1034;
  311.           const int WM_CAP_DISCONNECT = 1035;
  312.           const int WM_CAP_GET_FRAME = 1084;  // Constantes necesarias
  313.           const int WM_CAP_COPY = 1054;
  314.           const int WM_CAP_START = WM_USER;
  315.           const int WM_CAP_SET_PREVIEW = WM_CAP_START + 50;
  316.           const int WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
  317.          
  318.        #endregion
  319.      
  320.              private int Frecuencia=0; // Frecuencia de captura de imagen  
  321.              private  int CamHandle=0; // Handle del dispositivo
  322.                      
  323.  
  324.              Timer reloj; // Timer
  325.              ComboBox Cbx; // Para referencia al Combobox
  326.              PictureBox Pbx; // Para referencia al Picturebox
  327.                        
  328.          
  329.         /// <summary>
  330.         /// Crea una instancia de la clase WebCam de Emperorxdevil
  331.         /// </summary>
  332.         /// <param name="frecuencia">Intervalo de tiempo en el que se capturarán las imágenes</param>
  333.         /// <param name="pct">PictureBox en el cual se mostrará lo capturado por la webcam</param>
  334.         /// <param name="cb"> Listbox en el que se mostrarán las Cams detectadas</param>
  335.         public WebCam(int frecuencia,PictureBox pct, ComboBox cb) {
  336.              
  337.             Frecuencia=frecuencia;
  338.             Pbx=pct;              // Inicio las variables necesarias
  339.             reloj= new Timer(); // Creo el timer
  340.             reloj.Tick += new EventHandler(reloj_Tick); // Le asigno el controlador  
  341.             reloj.Interval=Frecuencia; // Asigno la velocidad de captura
  342.             Cbx= cb; //Configuro la referencia
  343.            
  344.            }
  345.  
  346.         private void reloj_Tick(object sender, EventArgs e)
  347.         {
  348.  
  349.             SendMessage(CamHandle, WM_CAP_GET_FRAME,0,0); // Capturo la imagen
  350.             SendMessage(CamHandle, WM_CAP_COPY, 0, 0); // La copio al portapeles
  351.             Pbx.Image=Clipboard.GetImage(); // La mando al Picturebox
  352.             EmptyClipboard(); // Vacío el portapapeles
  353.            
  354.         }
  355.         /// <summary>
  356.         /// Listará las cámaras web encontradas en el Combobox asociado
  357.         /// </summary>
  358.         public void Listar() {
  359.                    
  360.               bool valor;
  361.               string nombre;    
  362.               string version;
  363.               int x=0;
  364.  
  365.                 do {
  366.                     nombre="Dispositivo"+x.ToString();
  367.                     valor=capGetDriverDescriptionA(x,nombre,100,"v1",100);
  368.                      if (valor) Cbx.Items.Add(nombre);
  369.                      x=x+1;
  370.                 } while (!valor==false);                      
  371.                    
  372.         }
  373.         /// <summary>
  374.         /// La WebCam se Encenderá y mostrará lo capturado en el PictureBox referenciado
  375.         /// </summary>
  376.         /// <param name="Dispositivo">Nº de dispositivo del Combobox</param>        
  377.         public void Capturar(int Dispositivo) {
  378.  
  379.                         try {
  380.                              
  381.                               StopCaptura(); // Antes de nada "reseteo" el dispositivo  
  382.                               CamHandle= capCreateCaptureWindowA("XdevilCapture"+Dispositivo.ToString(),0,0,0,0,0,Pbx.Handle.ToInt32(),Dispositivo); // Obtengo el Handle de la cam
  383.                               SendMessage(CamHandle, WM_CAP_CONNECT, 0, 0); // Enciendo la cam
  384.                               SendMessage(CamHandle,WM_CAP_SET_PREVIEWRATE,30,0); // Establezco los frames de captura /seg
  385.                               SendMessage(CamHandle, WM_CAP_SET_PREVIEW,0,0); // Empiezo a capturar
  386.                               reloj.Start(); // Inicio la captura      
  387.                         }
  388.  
  389.                         catch (Exception e) {
  390.                               MessageBox.Show("No se puede Iniciar la WebCam","Error");              
  391.                         }
  392.  
  393.               }
  394.         /// <summary>
  395.         /// Detiene la captura de imágenes y apaga la WebCam
  396.         /// </summary>
  397.         public void StopCaptura() {
  398.  
  399.  
  400.                        try {
  401.                            reloj.Stop(); // Paro el reloj que captura
  402.                            SendMessage(CamHandle, WM_CAP_DISCONNECT, 0, 0); // Apago la cam
  403.                            EmptyClipboard(); // Vacío el portapapeles
  404.                          }
  405.  
  406.                         catch (Exception e) { } // No hago nada.. pa k ?
  407.  
  408.               }
  409.         /// <summary>
  410.         /// Muestra diferentes parametros configurables de la imagen que se va a guardar
  411.         /// </summary>
  412.         public void GuardarImagen() {
  413.                  
  414.                 SaveImage s= new SaveImage(Pbx.Image,true); // Creo la clase que guarda las fotos
  415.               }  
  416.        
  417.      
  418.     }
  419.  
  420.  
  421.  

Salu2

13
C# / Inputbox En C#
« en: Sábado 21 de Julio de 2007, 17:06 »
Si has programado en VB, te acordarás del tipico Inputbox para pedir datos.
 Pues bien, teniendo en cuenta que en C# no existe...
 Por qué no implementarlo ?
 
 Aqui les dejo el code de la clase Inputbox.
 Es estática (no hace falta construir el objeto para usarla) y devuelve datos tipo    string.

Su sintaxis es: Inputbox.Show(Titulo_Ventana,Titulo_Pregunta,Posicion)

 Se usa asi:

Código: Text
  1.  
  2. string n;
  3. n=Inputbox.Show("Inputbox en C#", "Cual es su nombre ? ", FormStartPosition.CenterScreen);
  4. Messagebox.Show(n);
  5.  
  6.  

Q lo disfruten !!

Código: Text
  1.  
  2.  
  3. public static class Inputbox
  4.         {
  5.  
  6.          // Conserva esta cabecera
  7.         //  Emperorxdevil 2007
  8.  
  9.             static Form f;
  10.             static Label l;
  11.             static TextBox t; // Elementos necesarios
  12.             static Button b1;
  13.             static Button b2;
  14.             static string Valor;
  15.  
  16.             /// <summary>
  17.             /// Objeto Estático que muestra un pequeño diálogo para introducir datos
  18.             /// </summary>
  19.             /// <param name="title">Título del diálogo</param>
  20.             /// <param name="prompt">Texto de información</param>
  21.             /// <param name="posicion">Posición de inicio</param>
  22.             /// <returns>Devuelve la escrito en la caja de texto como string</returns>
  23.             public static string Show(string title, string prompt, FormStartPosition posicion)
  24.             {
  25.  
  26.                 f = new Form();
  27.                 f.Text = title;
  28.                 f.ShowIcon = false;
  29.                 f.Icon = null;
  30.                 f.KeyPreview=true;
  31.                 f.ShowInTaskbar = false;
  32.                 f.MaximizeBox = false;
  33.                 f.MinimizeBox = false;
  34.                 f.Width = 200;
  35.                 f.FormBorderStyle = FormBorderStyle.FixedDialog;
  36.                 f.Height = 120;
  37.                 f.StartPosition = posicion;
  38.                 f.KeyPress += new KeyPressEventHandler(f_KeyPress);
  39.                
  40.                 l = new Label();
  41.                 l.AutoSize = true;
  42.                 l.Text = prompt;
  43.  
  44.  
  45.                 t = new TextBox();
  46.                 t.Width = 182;
  47.                 t.Top = 40;
  48.  
  49.                 b1 = new Button();
  50.                 b1.Text = "Aceptar";
  51.                 b1.Click += new EventHandler(b1_Click);
  52.  
  53.  
  54.                 b2 = new Button();
  55.                 b2.Text = "Cancelar";
  56.                 b2.Click += new EventHandler(b2_Click);
  57.  
  58.                 f.Controls.Add(l);
  59.                 f.Controls.Add(t);
  60.                 f.Controls.Add(b1);
  61.                 f.Controls.Add(b2);
  62.  
  63.                 l.Top = 10;
  64.                 t.Left = 5;
  65.                 t.Top = 30;
  66.  
  67.                 b1.Left = 5;
  68.                 b1.Top = 60;
  69.  
  70.                 b2.Left = 112;
  71.                 b2.Top = 60;
  72.  
  73.                 f.ShowDialog();
  74.                 return (Valor);
  75.             }
  76.  
  77.             static void f_KeyPress(object sender, KeyPressEventArgs e)
  78.             {
  79.                 switch(Convert.ToChar(e.KeyChar)) {
  80.  
  81.                     case ('\r'):
  82.                             Acepta();
  83.                     break;;
  84.  
  85.                     case (''):
  86.                             Cancela();
  87.                     break;;
  88.                 }
  89.             }
  90.             static void b2_Click(object sender, EventArgs e)
  91.             {
  92.                 Cancela();
  93.             }
  94.             static void b1_Click(object sender, EventArgs e)
  95.             {
  96.                 Acepta();
  97.             }
  98.             private static string Val
  99.             {
  100.  
  101.                 get { return (Valor); }
  102.                 set { Valor = value; }
  103.             }
  104.             private static void Acepta() {
  105.                 Val = t.Text;
  106.                 f.Dispose();
  107.             }
  108.             private static void Cancela() {
  109.                 Val=null;
  110.                 f.Dispose();
  111.             }
  112.  
  113.  
  114.         }
  115.  
  116.  

Salu2

Páginas: [1]