<div dir="ltr">Hola Hugo,<div class="gmail_extra"><br><div class="gmail_quote">2014-04-10 7:56 GMT-04:00 Hugo García <span dir="ltr"><<a href="mailto:hgc2204@gmail.com" target="_blank">hgc2204@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hola,<div><br></div><div>Estoy intentando hacer un pgm con GUI y quiero hacerlo lo más orientado a objetos posible recurriendo a temas de punteros y "al bajo nivel" lo menos posible, vengo de hacer cosas en c# en visual estudio 2010) y me estoy encontrando con cosas que me resultan bastante puñeteras.</div>

<div><br></div><div>Ya se que el framework que tiene detras .net tiene mucho código que facilita la tarea, mi pregunta es ¿hay cabeceras en c++ que hagan esto?</div><div><br></div></div></blockquote><div><br></div><div>Si quieres usar el API de MS-Windows, pero "más C++", entonces puedes usar MFC, que es una colección de clases envolventes.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>Por ejemplo quiero una función que aunque lo que haga sea en c, lo que utilice sea de c++ (no se si he expresado muy bien esto...), por ejemplo ahora estaba intentando esto:</div>

<div><br></div><div><div>void DisplayMessageExtl(string szText, string szCaption)</div></div></div></blockquote><div><br></div><div>Como vienes de C#, te aclaro que en C++ todos los parámetros se pasan por copia (o por valor). Por lo tanto, si quieres pasar por referencia, tienes que ser explícito. Esto es,</div>
<div><br></div><div>void DisplayMessageExtl( const string &szText, const string &szCaption )<br></div><div><br></div><div>Sin embargo, sugiero usar 'u16string' si quieres usar cadenas de caracteres de Unicode de 16 bits.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>{</div><div>    int msgboxID = MessageBox(</div>
<div>        NULL,</div><div>        szText.c_str(),</div><div>        szCaption.c_str(),</div></div></div></blockquote><div><br></div><div>Tienes que conseguir la representación de puntero a 'char' - "al estilo de C". Para esto, invocamos la función miembro (método), 'c_str()'.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>
        MB_ICONQUESTION | MB_YESNOCANCEL | MB_DEFBUTTON2</div><div>    );</div><div><br></div><div>    switch (msgboxID)</div><div>    {</div><div>    case IDYES:</div><div>        PostQuitMessage (0);</div><div>        break;</div>

<div>    case IDNO:</div><div>        break;</div><div>    case IDCANCEL:</div><div>        break;</div><div>    }</div></div><div>}</div><div><br></div><div>Pero claro no es posible pq MessageBox espera un puntero a un char. He intenado hacer un cast con (LPCSTR) pero no funciona.</div>

<div><br></div></div></blockquote><div><br></div><div>No puedes hacer este cásting, porque 'string' no ofrece tal conversión; es decir, no sobrecarga el operador de conversión a 'const char *'.</div><div>
<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>¿Hay alguna manera de conseguir lo que quiero?</div>
<div><br></div><div>Ya no solo una solución para este caso si no en las futuras cosas que me encuentre. ¿Alguno ha usado una librería que solvente este tipo de situaciones?</div></div></blockquote><div><br></div><div>Como dije antes, supongo que te interesa algo como MFC. Existen otras clases envolventes como las ATL al igual que las WTL, las cuales extienden las ATL.</div>
<div><br></div><div><br></div><div>Espero que esto aclare la duda.</div><div><br></div><div>Steven</div><div><br></div></div></div></div>