[ Foro de C++ ]
Buenas me he metido un lío con la API y me gustaría cambiar la fuente de unos controles edit pero no salgo. Lo hago de la siguiente manera y no me funciona:
hfont = (HFONT)GetStockObject(SYSTEM_FONT); // es una fuente del stock de fuentes del sistema
int idc = 8000;
HDC hdc;
HFONT hfont_anterior;
for (int i = 0; i < dimension; i++) {
for (int x = 0; x < dimension; x++) {
hMatriz_[i][x] = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, L"EDIT", L"", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
79 + (x * ancho) ,36 + (i * alto), /* Posición */ 40, 25, /* Tamaño */ hwnd, (HMENU)idc++, datos->instancia, NULL);
hdc = GetDC(hMatriz_[i][x]);
(HFONT)SelectObject(hdc, hfont);
}
}
A ver si me podeis ayudar alguno no estoy seguro de que esto se haga así la verdad no tengo ni idea.
Gracias
Te respondo... pero para decir que no te puedo ayudar... hace muchos años que no toco la API. Desde que surgieron herramientas visuales como Visual Basic, Delphi, o, más recientemente, Visual C++ y Visual C#. Incluso en los primeros tiempos de la programación Windows no visual (hace casi 30 años) no hice cosas avanzadas, y ya no recuerdo lo poco que llegué a aprender, porque era tremendamente engorroso.
Gracias de todas maneras, pues ahí estoy dándolo todo con la API.
Al final conseguí arreglarlo de la siguiente manera por a alguien le sirve.
Primero creo mi propia fuente.
hfont = CreateFont(15, 0, 0, 0, 300, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, DEFAULT_PITCH | FF_ROMAN, L"Times New Roman");
y luego con el mensaje WM_SETFONT se la meto a hm[i][x] que es un array de manipuladores de edits.
SendMessage(hm[i][x], WM_SETFONT, (WPARAM)hfont, MAKELPARAM(TRUE, 0));
No se porque con las fuentes de stock no funcionaba, o quizás es que no enviaba el mensaje SETFONT y lo hacía a través del DC. Misterios sin resolver.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)