|
Mostrar Mensajes
|
Páginas: 1 2 3 [4] 5 6 7 8
|
31
|
Programación / Programación C/C++ / Re: [C] Funciones para manejar procesos
|
en: 7 Octubre 2011, 14:50 pm
|
puede ser que NEW y DELETE llaman por debajo a malloc y free, me parecio haber visto eso en el depurador .... muy weno el codes pero ponele free , mas si haces mallocs dentro de un bucle con lo cual se asigna memoria continuamente y nunca se libera y el proceso se agranda mucho, aparte cuando cerras el proceso se prduce una excepcion y el sistema operativo lo debe liberar me parece
|
|
|
33
|
Programación / Programación C/C++ / Re: Ayuda con codigo en c++, problema con strcmp
|
en: 5 Octubre 2011, 01:57 am
|
claro cuando declaras un puntero char debes asignarle inmediatamente alguna cadena y un cero terminante ej: char *cadena = "asdasdasd\0"; sino queda como un puntero NULL y no puede usarse. sino te conviene declarar un vector de char algo como esto char vector[128] = {0}; y lo inicialisas con cero de esa manera. cuando asignas desde un puntero char a un char debes hacerlo como si se tratara de un vector de char, usando notasion de corchetes asi cadena[posicion] = char no se si me explico, y las funciones de cadena solo trabajan con cadenas terminadas en cero como bien se dijo.. aunque algunas reasignan el cero terminante
|
|
|
35
|
Programación / Programación C/C++ / leer cadena de editbox
|
en: 5 Octubre 2011, 00:03 am
|
estoy tratando de leer el contenido que se ingresa a un editbox el cual esta en un dialogbox secundario .... encontre este codigo en visual basic que no entiendo muy bien pero trate de pasarlo a c o de entender al menos lo que hace, pero no entiendo como hacer esto aun Public Function GetTextBoxLine(hWnd As Long) As String 'INPUT: hWnd = Handle to text box 'OUTPUT: Text of specified TextBox Control
Dim lngLineCount As Long Dim lngLineNumber As Long Dim lngRet As Long Dim lngLen As Long Dim lngFirstCharPos As Long Dim bytBuffer() As Byte Dim strAns As String
'get number of lines lngLineCount = SendMessage(hWnd, EM_GETLINECOUNT, 0, 0&)
For lngLineNumber = 0 To lngLineCount - 1 'first character position of the line lngFirstCharPos = SendMessage(hWnd, EM_LINEINDEX, lngLineNumber, 0&)
'length of line lngLen = SendMessage(hWnd, EM_LINELENGTH, lngFirstCharPos, 0&)
ReDim bytBuffer(lngLen) As Byte
bytBuffer(0) = lngLen
'text of line saved to bytBuffer lngRet = SendMessage(hWnd, EM_GETLINE, lngLineNumber, bytBuffer(0))
If lngRet Then strAns = strAns & Left$(StrConv(bytBuffer, vbUnicode), lngLen) End If Next
GetTextBoxLine = strAns End Function
asi esta mi aproximacion de codigo pero no es asi me parece long lngFirstCharPos = SendMessage(hWnd, EM_LINEINDEX, 0, 0); int lngLen = SendMessage(hWnd, EM_LINELENGTH, lngFirstCharPos, 0); chBuffer1[0] = lngLen; long lngRet = SendMessage(hWnd, EM_GETLINE, 0, chBuffer1);
antes lo habia hecho asi pero tampoco recivia nada char chBuffer1[MAX_PATH];//={0}; int t1=SendDlgItemMessage(hWnd, IDC_ART1, EM_GETLINE, 0, (LPARAM)(LPSTR)chBuffer1);//LB_GETSTRING
char asd[12]; sprintf(asd, "%d", t1);
MessageBox(hWnd,chBuffer1,asd,0);
agradezo su ayuda
|
|
|
36
|
Programación / Programación C/C++ / Re: detectar item de lista con doble click y obtener id de elemento
|
en: 4 Octubre 2011, 22:23 pm
|
case IDC_LIST2: switch(HIWORD(wParam)) { //case LBN_SELCHANGE: case LBN_DBLCLK: { int dwSel = SendDlgItemMessage(hDlg, IDC_LIST2, LB_GETCURSEL, 0, 0);
int num = dwSel; char num_str[255]; itoa(num,num_str,10);
if(dwSel != LB_ERR) { MessageBox(hDlg,num_str,"Final Lab2",0); }
asi funciona, pero asi estaria bien? osea reemplazando el LBN_SELCHANGE por el LBN_DBLCLK, o hay otra forma mas profesional pregunto porque se dan los dos casos, y es como que el GETCURSEL estaria suponiendo que se hizo una seleccion pero, en realidad se hizo dentro del mensaje de DBLCLK
|
|
|
38
|
Programación / Programación C/C++ / Re: detectar item de lista con doble click y obtener id de elemento
|
en: 4 Octubre 2011, 22:06 pm
|
ai si gracias case IDC_LIST2: switch(HIWORD(wParam)) { case LBN_SELCHANGE: { int dwSel = SendDlgItemMessage(hDlg, IDC_LIST2, LB_GETCURSEL, 0, 0);
int num = dwSel; char num_str[255]; itoa(num,num_str,10);
if(dwSel != LB_ERR) { MessageBox(0,num_str,"TP2",0); }
si conoces una mejor forma avisame XD
|
|
|
40
|
Programación / Programación C/C++ / un dialogo dentro de otro
|
en: 4 Octubre 2011, 19:33 pm
|
hola estoy creando un programa que consta de un dialogbox y tiene dos listbox y algunos botones, lo que quisiera hacer es que al presionar uno de los botones se abra otra ventana de dialogo... mi pregunta seria que funcion debo usar o dialogbox o createdialog y si lo puedo hacer en la parte adonde detecto la presion del boton7 en el caso de mi codigo, en verdad no se bien adonde hacerlo tambien me serviria si alguien tiene algun codigo de ejemplo adonde ya usen dialogos que se abren dentro de otro existente (seria como decir dialogo padre y dialogos hijos), es que no encontre ningun ejemplo y soy iniciado en esto.. solo uso c , es decir no uso mfc INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_BUTTON7: { if( gbCaso == 1 ) {
/* Puedo crear el dialog box en este lugar al presionarse el boton ? */ } } } }
en el WinMain //creo el dailogo principal hDlg = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1), 0, (DLGPROC)DialogProc, 0);
EI: juntando mensajes.XD era algo facil pense que era mas complicado, con createdialog y luego algo como esto, gracias google if(g_hSD_d1 != NULL) { ShowWindow(g_hSD_d1, SW_SHOW); } y luego se libera desde su propio callback
|
|
|
|
|
|
|