PREGUNTAS CONTESTADAS - C/Visual C

 Hay un total de 745 Preguntas.<<  >> 

    Pregunta:  131 - UTILIZAR EL MÓDEM COMO FAX EN C++
Autor:  Federico
FAX desde C++: Cómo puedo enviar ficheros .PCX o similares como fax por el módem? Cómo se usa el módem desde C++ en modo FAX? Cuales son los comandos AT para FAX?
  Respuesta:  Joaquin Araneda C.
Los comandos AT para tu FAX los podras encontrar en el Manual de tu  FAX/MODEM, generalmente en el apartado donde explica como funciona.

Para activarlo desde C., solamente tienes que hacer llamadas a sistema.

    Pregunta:  161 - LIBRERIA DINAMICA EN VISUAL C++
Autor:  Hector
hola como estan todos .deseo saber si alquien sabe como constrir una libreria dinamica en visual c++ o la forma de utilizar esta en la construccion de un drivers ?
  Respuesta:  Andres Manggini
Hola!

Tu pregunta es bastante amplia, ya que no se si conoces las bases para la creacion de una DLL, y queres saber si Visual C++ te da alguna facilidad o si queres saber desde cero como se hace una DLL . Suponiendo que te referis a lo primero (que es la mas corta ;)
Visual C++ 5.
Con el AppWizard podes decirle que te cree el esqueleto de una DLL para a partir de ahi implementar lo que necesites, tenes 3 opciones al crear una DLL

1) Crear una DLL ´Regular´ con MFC linkeado estaticamente, lo que significa que las librerias de MFC se van a linkear (perdon por el spanglish) junto a tu programa, esto hace que la maquina cliente no tenga que tener las librerias de MFC para utilizarlo. Por otro lado el tamaño minimo de tu programa si utilizas esta opcion posiblememnte este en los 120k.
2) Crear una DLL ´Regular´ con MFC linkeado dinamicamente. Esto hace que la maquina cliente tenga que tener las librerias de MFC instaladas y tu programa pueda ocupar un minimo de unos 20K.
3) Crear una ´Extension DLL´ usando las librerias dinamicamente.

Las dos primeras opciones que dicen ´Regular´ significa que el programa que la use puede estar escrito en cualquier lenguaje ya que tu DLL solo puede exportar funciones del estilo C.

La tercera opcioen ´Extension DLL´ te permite exportar clases, para esto el cliente tiene que ser un programa MFC linkeado dinamicamente.
El cliente puede construir objetos o derivar clases de las clases exportadas por la DLL.
Chau, Suerte!.

  Respuesta:  Hernan Peraza
Veo que deseas hacer drivers!, Debes recordar que bajo modo protegido (Windows) no es posible manejar interrupciones de hardware , DMAs,etc de manera directa, debes diseñar un VXD (controlador de dispositivo virtual, es de 32bits) o puedes crear una DLL (libreria dinamica) de 16 bits (modo real). Una vez desarrollado el vxd or dll , puedes usar las APIs de windowspara cargarlo en tu aplicacion como el CreateFile() o el DeviceIOControl()......... etc...

Desarrollar un DLL es muy sencillo , de hecho cualquier libro de Visual C/C++ dice como lograrlo
Ahora , Si tienes dudas de como hacer un vxd , solo dime ok?

Saludos!

    Pregunta:  162 - VECTORES EN VISUAL C++
Autor:  Willser
Estoy diseñando un programa con Microsoft Visual C++ 1.0 y MFC 2.0 con imágenes .BMP, .TIF y/o .GIF, de 512*512, para aplicarles algunos algoritmos de analisis, lo que se me ocurre es bajar el archivo a un vector de [512][512], pero tengo algunos problemas:
1. No es posible crear un vector que supere los 64Kb. A pesar de que compile en modo ´Large´ y ´Huge´.
2. Alguien me sugirió usar el tipo ´huge´ en la declaración del vector que es de tipo ´unsigned char´, pero éste solo me ha funcionado en Borland C++ para DOS, en Modo ´Large´.
3. Ante esto, quise usar una lista enlazada que simule un vector 2D, pero creo se demora un poco más.
4. Además, Desconozco el formato de éstos archivos.
5. ¿Ah. ¨Y Cómo puedo modificar el contenido del archivo, habiendo bajado y modificado los datos a un vector o a una lista enlazada?.
6. Este es el código utilizado pero lee 262279 Bytes y realmente son 262144=512*512 Bytes.
  Respuesta:  Jaime Calahorrano
Si esta utilizando un sistema operativo de 16 bits, cambiese a uno de 32 como Windows 95. Ahi no tiene que preocuparse del huge. En medida de lo posible migre a Visual 4.2 o superior. En este puede manejar vectores sumamente grandes sin importar el tipo de dato a utilizar. Y no tiene el limite de los 64k. No hay ningun problema en migrar de borlandc a visual.
  Respuesta:  Daniel Osuna
Si estas programando para entorno Windows, puedes utilizar el siguiente código para usar array´s mas grandes de 64k.
// defines variable globales
char far *matriz[512][512];
HGLOBAL hmatriz[512];

//luego en alguna parte de la inicialización debes asignar memoria para el array:

for(i=0; i<512; i++){
hmatriz[i]=::GlobaAlloc(GPTR,512);
matriz[i]=::GlobalLock(hmatriz[i]);
}

Con esta asignación de memoria ahora podemos usar la matriz como cualquier matriz convencional:

el elemento n,m de la matris se apuntará por matriz[n][m]

Una vez que finalizastes la utilización de esta tipos de los datos debes liberar la memoria utilizando:

for(i=0; i<512; i++){
::GlobalUnlock(hmatriz[i]);
::GlobaFree(hmatriz[i]);
}
El límite en la asignación esta dado por el número de handles (en pruebas que hecho nunca pude asignar mas de 3000 filas en la matríz)
Acuérdate de agregar #include "windows.h" antes de utilizar las funciones Global...

Si tienes otra duda escríbeme:

    Pregunta:  169 - COMUNICAR DOS MAQUINAS VIA RED ETHERNET
Autor:  Gustavo
Necesito comunicar dos maquinas via red ethernet, si alguien pudiera darme una guia de como hacer un programa en C o C++ para que la pc pueda detectar y leer frames TCP/IP
Gracias de antemano
  Respuesta:  Carlos Antonio
Primeramente un saludo>
Hay algo en tu pregunta que no me queda claro y es que no entiendo el porque deseas comunicar via ETHERNET ,este es un standard de comnunicacion entre dispositivos que funciona al nivel de enlace del modelo OSI. Llegar a ese nivel no parece nada facil.
Ahora si deseas una comunicacion via TCP/IP si te puedo ayudar.
Hay varias funciones y estructuras primitivas de los sistemas operativos que te permiten hacer todo lo referente a la comunicacion por el protocolo TCP/IP entre estas puedes encontrar:
socket
connect
accept
bind
select
read
write
shutdown
entre otras muy buenas
estas funciones que te menciono son de la version BSD sockets para sistemas UNIXs en Windos son casi iguales y el principio es el mismo
  Respuesta:  Jaime Calahorrano
Busque documentacion sobre la programacion basada en el paradigma de socktes. Este paradigma simplifica mucho el proceso de envio y recepcion de datos especialmente en redes TCP/IP. Si posee Visual C++ 4.0, o superior, no le sera dificil hacer ese tipo de programas.

    Pregunta:  194 - GUARDAR DATOS Y OBJETOS EN DISCO DURO
Autor:  Weimar
Estoy programando en borland c++. Necesito saber cual es la manera mas facil pero efectiva de guardar datos y objetos en disco duro.
Los objetos son nodos de una lista (una nómina de empleados) doblemente enlazada. Tengo una clase empleado, que es la encargada de llenar los nodos con los datos de todos los empleados y tengo una clase lista que la declaré como clase amiga de la clase empleado. La información (los nodos) son los que se deben guardar en disco duro.
Cuando yo abro el programa nomina, la lista debe estar vacía y debe comenzar a recoger la información del disco, y cuando salgo del programa debe guardar nuevamente la información en el disco duro.
La lista debe ordenarse por numeros de identificacion y los empleados se podrán buscar por número de identificación, por apellidos, nombre, cargo en la empresa, o, por área de trabajo.
Gracias al que me responda de antemano.
  Respuesta:  A. Lopez
mira aqui tienes un ejemplo de , como guardar estructuras en disco, este es un fragmento de un programa, que hize para un video club.FILE

Pelicula *Cinta=NULL;

Cinta=*Primero;
while(Cinta){
fwrite(Cinta,sizeofPelicula),1,*Archivo);
Cinta=Cinta->Siguiente;
}

Arhivo: es un puntero FILE

pero antes de hacer estu debes crear el archivo, y comprobar si gubo o no algun error, en caso de que si hubiere, no denes ejecutar esta parte.

si tienes alguna otra duda sobre esto, escribeme, y haber si te puedo ayudar.
  Respuesta:  Alex
Mira el siguiente ejemplo lo hice para un sistema
de reserva de pasajes de un aeropuerto
está en C puro pero es lo mismo:

Alex


typedef struct _tpasviaasi{
long nropasap;
char *nombre;
}tpasviaasi;

typedef struct _tviaje{
tpasesp *TopeDiccPasEsp;
tpasesp *pasesp;
int TopeDiccPasViaAsi;
tpasviaasi *pasviaasi[MAXASIENTOS];
tpasvianom *pasvianom;
}tviaje;

typedef struct _tvuelo{
char *codcomp;
int nrovuelo;
int dia;
char *aersal;
char *aerlleg;
int hsalida;
int duracion;
int cantasi;
long precio;
tviaje *viajes[CANTSEMANAS];
}tvuelo;

typedef struct _tcompania{
char *codigo;
char *nombre;
int TopeDiccVuelos;
tvuelo *vuelos[MAXVUELOS];
struct _tcompania *prox;
}tcompania;


// PARA GRABAR //

#include "grabocmp.h"

int GuardarCompanias(tcompania *compania)
{
int i,x,a;
FILE *archcompania,*archvuelos,*archviajes,*archespera,*archasientos;
tcompania *compania_aux;
tvuelo *vuelo_aux;
tviaje *viaje_aux;
compania_aux=compania;





AbrirArch(&archcompania,"compania.dat","w+");
AbrirArch(&archvuelos,"vuelos.dat","w+");
AbrirArch(&archviajes,"viajes.dat","w+");
AbrirArch(&archespera,"esperas.dat","w+");
AbrirArch(&archasientos,"asientos.dat","w+");

while (compania_aux)
{
fprintf(archcompania,"%s %s\n",compania_aux->codigo,comp
  Respuesta:  Pablo Ronse
Mira la ayuda del método Serialize que viene con las listas.
Un saludo

    Pregunta:  199 - UTILIZAR SONIDO EN C++
Autor:  pepo
Me gustaria saber como puedo utilizar sonido en C++.
Muchas gracias de antemano.
  Respuesta:  abel guzman
para utilizar sonido deves de habilitar la libreria
#include
lo mas interesante es cuando utilizas un for
for(i=1;i<=valor;i++){//introduce cualquier numero
sound(200+i);//aqui el sonido va cambiando
delay(50);//esto esta en mili segundos
nosound();//termina el sonido
}

espero que sirva de algo
  Respuesta:  Diego Delgado
Mira dices que quieres utilizar un sonido, pues en turbo c++ es muy sencillo solo es agregar unas cuantas cosas de la siguiente manera:

#include

sound(900);//es la frecuencia del sonido
delay(400);//tiempo de sonido
nosound();//termina el sonido

ten en cuenta que tienes que terminar con el nosound(); por que si no lo terminas el computador quedará sonando.....
  Respuesta:  Andres Manggini
Hola!.

No aclaras si es para Windows o D.O.S. u otro sistema operativo.

Windows: Si lo que queres es ejecutar sonidos wav simplemente, podes usar la API PlaySound, podes tocarlo sincronica o asincronicamente. Si necesitas algo mas potente podes usar DirectSound, fijate en la documentacion de DirectX.

D.O.S: Tenes que lidiar con las tarjetas de sonido ya que a diferencia de Windows, tenes que trabjar directamente sobre el hard. Fijate en revistas como RunEnter:

www.geocities.com/BourbonStreet/7312/runenter.htm
o la Virtual Zone Magazine en:
http://www.vzonemagazine.ergos.es/

Saludos!

    Pregunta:  204 - PROBLEMAS CON UPDATEALLVIEWS()
Autor:  Javier
Pregunta Visual C 5.0
¿Que debo hacer para que cadda vez que quiera actualizar una vista no me borre lo que tengo antes sino que me añada lo que quiero meter?
¿Tiene UpdateAllViews() alguna forma de hacer esto?
Muchas Gracias
  Respuesta:  yon
En MFC de visual; Existen varias formar de actualizar el contexto sin que se te borre el contenido; Te explicare las formas màs sencillas.
Existen dos manejadores para actualizar el dispositivo de contexto(CDC), el OnDraw que por lo general pertenece a ala clase Vista del proyecto y el On_paint, que es parecido.
Ambas funciones realizan la misma labor; Responder a los mensajes de windows de actualizar el contenido de la pantalla; Windows cada vez que tu ventana se maximiza o se sobre escribe otro ventana sobre ella manda un mensaje al OnDraw o la On_paint, para que actualice el contenido del programa, el OnDraw por lo general recibe un CDC*; Este es el dispositivo de contexto con el realizas todas las operaciones de despliegue a pantalla. El On_paint es mas eficiente pero mas dificil de usar; Primero debes obtener un dispositivo de contexto, esto lo heces asì:
CPaintDC Obj(this);

Asi cada vez que windows mande se actualiza tu pantalla.
Pero si lo que deseas es mandarla a actualizar has lo siguiente:
* Crea un estructura para almacenar los datos a desplegar.
*Instanciala en el Doc.
*En el OnDraw puedes invocar la impresion a pantalla con el CDC y el
GetDocument()-> // Es un puntero al Doc.
*Imprimir con esas dos herramientas los datos.
*En el momento que necesites que tu programa vuelva a imprimir, usa la funcion Invalidate(); Esta le manda un mensaje a windows que el contenido de la ventana ya no es valido y debe volverse a imprimir.
**Con el On_paint es parecido pero se usa InvalidateRect(), y debes usar el CPaintDC; Con el InvalidateRect(RECT) puedes mandalarle una estructura tipo RECT para que solo se modifique una parte de la pantalla esto hace mas eficiente al programa ya que la actualizacion de una pantalla es un proceso costoso.
  Respuesta:  Alonso Salazar
No logro comprender exactamente tu problema quisiera me explicaras exactamente los que quieres hacer y cual es el problema que te presenta para ayudarte, me puede enviar una explicacion mas extensa, quizas pueda resolver tu problema ya que yo programo en VC++ 5.0 y utilizo las vistas y el DAO para acceso a datos y no he tenido ningun problema con ellos.

    Pregunta:  205 - VISIONAR UNA FOTO GIF O JPG
Autor:  Javier
Pregunta Visual C 5.0
¿Que debo hacer para visionar uan foto GIF o JPEG en Visual C?
¿Hay algun OCX que me permita eso y sea freeware?
Muchas Gracias
  Respuesta:  Ariel Parra
En primera instancia es como agregar un ActiveX Control en tu aplicacion de tipo MFC?
1.- Abres un nuevo proyecto.
2.- Lo agregas de tipo MFC(AppWizard) .exe
3.- Cuadro de Dialogo
4.- Observas que en una de las posteriores ventanas que saldran este activado el Check box de ActiveX Controls, si no estuviera activalo, por lo regular por determinacion siempre esta activado.
5.- Ya que haya generado el cuadro de Dialogo borras todo lo que este en el mismo (Botones, Static Text, Etc.)
6.- Te vas al menu Project, Add to Project, Component and controls, ahi se abrira una venta de donde apareceran dos folders uno llamado Registered ActiveX Controls y otro folder llamado Visual C++ Components, abre el directorio llamado Registered ActiveX Controls, selecciona el que dice Kodak Image Edit Control (Imgedit.ocx) le das insertar, preguntara si desea insertarlo dele ok y despues Close.
7.- En los controles aparecera el icono que representara el ocx agregelo al cuadro de dialogo. En el ClassWizard declare una variable de tipo de esa clase del ocx y trabaje con ella.
  Respuesta:  David
En el Win95 OSR2 se instala un programa de dibujo en Inicio/Programas/Accesorios llamado Imaging, este programa utiliza una serie de OCX que quedan registrados en windows, uno de ellos es el IMGEDIT.OCX, que te permite visualizar ficheros .JPG, .BMP, y algunos formatos más.

Los gif no los soporta, y me he encontrado que algunos jpg no los lee. (¿Diferentes versiones?), la ventaja de este control es que esta en cualquier Windows 95 OSR2.
Ultimamente utilizo el control Imagin de VB5, ya que este si soporta GIF y todos los JPG.

  Respuesta:  Andres
Hola.
Fijate en esta direccion: http://web.ukonline.co.uk/Members/julian.smart/
Ahi en ´Code cupboard´ vas a encontrar CImage 1.2 para MFC que maneja JPG, GIF, BMP etc..

Trae el codigo fuente.

    Pregunta:  217 - ALGORITMOS GRÁFICOS EN C/C++
Autor:  Daniel
Alguien conoce algun libro bueno de algoritmos gráficos básicos en C-C++, un libro que te indique bien cosas tan sencillas como: hacer un linea recta inclinada pixel a pixel o la curva que pase por tres puntos o rotar un punto en el plano etc.
Tambien si alguien conoce una Wed donde encontrar funciones, que realicen este tipo de operaciones gráfica os agradecería que me lo comentarais.
Gracias.
  Respuesta:  Rosalío Morales Rizo
Pues un buen libro en español puede ser:

Graficas por computadora
2ª Edición
Donald Hearn, M. Pauline Baker
PHH (Prentice Hall)
ISBN-968-880-482-7

Contiene exactamente lo que pides...
  Respuesta:  Endos
Visita el siguiente servidor, allí encontrarás la GPE (Game Programers Enciclopedia) que contiene explicaciones de como realizar lo que pides (está en inglés):
ftp://x2ftp.oulu.fi/pub/msdos/programming/gpe/

    Pregunta:  219 - CONECTAR TURBO C CON CLIPPER
Autor:  Julio
Tengo problemas para conectar Turbo C++ con Clipper 5.2, resulta que tengo los 2 archivos fuentes, compilados (.OBJ) sin errores, incluyo la libreria EXTEND.H en el codigo CPP, la funcion escrita en .C es de tipo CLIPPER, la funcion es utilizada en el codigo .PRG pero al momento de enlazarlos siempre me marcan que falta la función que estoy utilizando en el PRG. Ademas el Codigo en C esta compilado de la manera LARGE MODE. La manera en que enlazo es:
RTLINK FI , LIB
y marca error de definicion. Qué es lo que pasa, o que es lo que debo hacer.
  Respuesta:  Alonso Salazar
Te muestro un ejemplo de las funciones que yo tengo en una libreria propia para clipper hechas en Borland C:

Este codigo retorna el estado de la tecla ALT, si esta presionada o no.

/***************************************/
#include

CLIPPER ALT(void)
{
_retl( (int) ((*(char *) 0x00000417) & 0x8) );
return;
}
/***************************************/

Lo compilo asi:
TCC -c -ml -f-
Se asume que el archivo esta en el directorio actual, que esta TCC.EXE y TASM.EXE y que los *.h estan en el directorio que indica TURBOC.CFG y luego lo meto en una libreria:
TLIB -+
Esto me crea un *.LIB el cual lo utilizo con el Blinker Fi LIB
En tu caso seria:
RTLink LIB
Si tienes algun problema...

|<  <<  1 2 3 4 5 6 7 8 9 10 11  >>  >|