Es para ver el listado de todas las opciones posibles e ir probándolas. En el codeblocks no me salen.
En visual studio me imagino que los nombres de las cabeceras serán parecidos. A ver si alguien me puede mirar o sabe donde los puedo encontrar. Estoy mirando en Codeblocks\MinGW\Include
Encontré un ejemplo por google y lo estoy modificando para hacer mi programa mientras aprendo.
Para hacer la gui a mi gusto más o menos le he dado la forma que me gustaría a cada ventana. Le añadi 2 edit box y las hice multilinea y que el enter salte de linea usando las flags correspondientes. Despues puse 2 botones. Uno para enviar texto y otro para separar los 2 editbox. En el ejemplo venian las macros de los ID_BUTTON e ID_EDIT definidos en el propio programa.
Ahora mismo lo que quiero hacer es substituir un EDIT por un control que muestre texto plano para mostrar el resultado del cifrado. Estoy usando provisionalmente otro EDIT mientras no encuentro los #define ID_LOQUESEA 111 para poder saber todas las opciones disponibles y elegir la que me convezca y la correcta para ello.
El mismo problema tengo con el boton que puse en el centro para hacer un separador entre los EDIT box para que quedase mejor. Si pudiese mirar los define buscaría algun borde adecuado para ello.
Después solo me faltaría buscar como obtener el input en un string para aplicarle el cifrado. Y como mostrar el string en el control adecuado. Esto aún no lo miré porque estoy intentando hacer lo anterior de substituir el boton y el editbox por un borde y un texto estatico o algo así.
Aquí dejo el código por si quereis compilarlo y ver la ventana para entender mejor lo que intento explicar.
Sé que no estoy usando los handlers correctamente para los botones y los edit box, de momento ni lo cambie. Lo puse de cualquier manera para ir probando y moldeando la ventana sin distraerme con otras cosas. Cuando acabe el programa repasare el código línea por línea dejándolo mejor formateado comentado, etc.
/*
Code::Blocs 17.12
Other Linker Settings:
-lmingw32 -mwindows
*/
#include <windows.h>
#define ID_EDIT 1
#define ID_BUTTON 2
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
WNDCLASSW wc = {0};
wc.lpszClassName = L"Edit control";
wc.hInstance = hInstance;
wc.hbrBackground = GetSysColorBrush(COLOR_3DDKSHADOW);
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor(0, IDC_ARROW);
RegisterClassW(&wc);
CreateWindowW(wc.lpszClassName, L"CIFRADO CESAR ASCII",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
250, 170, 430, 380, 0, 0 , hInstance, 0);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HWND hwndEdit;
HWND hwndButton;
HWND hwndButton2;
switch (msg)
{
case WM_CREATE:
{
hwndEdit = CreateWindowW(L"Edit", L"Texto Cifrado.", WS_CHILD | WS_VISIBLE | WS_BORDER |
ES_MULTILINE | ES_WANTRETURN,
10, 154, 404, 160, hwnd, (HMENU)ID_EDIT, NULL, NULL);
hwndEdit = CreateWindowW(L"Edit", L"Escribe aqui tu texto a cifrar.", WS_CHILD | WS_VISIBLE | WS_BORDER |
ES_MULTILINE | ES_WANTRETURN,
10, 10, 404, 138, hwnd, (HMENU)ID_EDIT, NULL, NULL);
hwndButton = CreateWindowW(L"button", L"ENTER", WS_VISIBLE | WS_CHILD,
335, 320, 80, 25, hwnd, (HMENU)ID_BUTTON, NULL, NULL);
hwndButton2 = CreateWindowW(L"button", NULL, WS_VISIBLE | WS_CHILD,
11, 150, 403, 3, hwnd, (HMENU)ID_BUTTON, NULL, NULL);
} break;
case WM_COMMAND:
{
if (HIWORD(wParam) == BN_CLICKED)
{
int len = GetWindowTextLengthW(hwndEdit) + 1;
wchar_t text[len];
GetWindowTextW(hwndEdit, text, len);
SetWindowTextW(hwnd, text);
}
} break;
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
}
return DefWindowProcW(hwnd, msg, wParam, lParam);
}