Code:
#define BUILD_WINDOWS
#include "Capitalizor.h"
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HFONT hBig, hFont;
HDC hdc;
hWnd2 = hWnd;
LRESULT index;
switch (message)
{
case WM_CREATE:
hdc = GetDC(HWND_DESKTOP);
hFont = CreateFont(-MulDiv(9, GetDeviceCaps(hdc, LOGPIXELSY), 72),
0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE,
get_os_ver() == VER_LONGHORN ? "Segoe UI" : "Times New Roman");
hBig = CreateFont(-MulDiv(12, GetDeviceCaps(hdc, LOGPIXELSY), 72),
0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE,
get_os_ver() == VER_LONGHORN ? "Segoe UI" : "Times New Roman");
hTitle1 = CreateWindow(
"static", "Text:",
WS_VISIBLE | WS_CHILD,
20, 30, 60, 20,
hWnd, (HMENU)90, 0, NULL);
SendMessage(hTitle1, WM_SETFONT, (WPARAM)hBig, FALSE);
hInput = CreateWindowEx(
WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
100, 30, 300, 40,
hWnd, (HMENU)IDB_TEXT1, 0, NULL);
hTitle2 = CreateWindow(
"static", "Result:",
WS_VISIBLE | WS_CHILD,
20, 80, 60, 20,
hWnd, (HMENU)92, 0, NULL);
SendMessage(hTitle2, WM_SETFONT, (WPARAM)hBig, FALSE);
hOutput = CreateWindowEx(
WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
100, 80, 300, 40,
hWnd, (HMENU)IDB_TEXT2, 0, NULL);
hTitle3 = CreateWindow(
"static", "Select:",
WS_VISIBLE | WS_CHILD,
20, 130, 60, 20,
hWnd, (HMENU)93, 0, NULL);
SendMessage(hTitle3, WM_SETFONT, (WPARAM)hBig, FALSE);
hCombo1 = CreateWindowEx(
WS_EX_CLIENTEDGE, "combobox", 0,
WS_VISIBLE | WS_TABSTOP | WS_CHILD |
CBS_DROPDOWNLIST,
100, 130, 220, 260,
hWnd, (HMENU)IDC_COMBO1, 0, NULL);
FillListBox(hCombo1);
SetWindowText(hInput, "ipsum dolor sit amet, consectetur adipiscing");
ReleaseDC(hWnd, hdc);
return 0;
case WM_COMMAND:
switch (HIWORD(wParam))
{
case CBN_CLOSEUP:
switch (LOWORD(wParam))
{
case IDC_COMBO1:
index = SendMessage(hCombo1, CB_GETCURSEL, (WPARAM)0, 0L);
GetDlgItemText(hWnd, IDB_TEXT1, szValue, 1024);
if (strlen(szValue) < 1)
{
MessageBox(hWnd2, "Text not entered!", "Error!", MB_ICONEXCLAMATION | MB_OK);
}
else
{
ChoiceCheck(index);
}
break;
}
}
return 0;
case WM_KEYDOWN:
if (wParam == 'A' && (::GetKeyState(VK_CONTROL) & 0x8000) != 0) //(wParam == VK_CONTROL)
{
// WM_SETFOCUS needs for EM_SETSEL to work
SendMessage(hOutput, WM_SETFOCUS, 0, 0);
SendMessage(hOutput, EM_SETSEL, 0, -1);
cout << "[keydown]\n";
}
else if (wParam == 'C' && (::GetKeyState(VK_CONTROL) & 0x8000) != 0)
{
cout << "[copy]\n";
GetWindowText(hOutput, szValue, 512);
cout << "[" << szValue << "]\n";
}
return 0;
// remove box behind text
case WM_CTLCOLORSTATIC:
if (GetDlgItem(hWnd, 90) == (HWND)lParam)
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(HOLLOW_BRUSH);
}
else if (GetDlgItem(hWnd, 92) == (HWND)lParam)
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(HOLLOW_BRUSH);
}
else if (GetDlgItem(hWnd, 93) == (HWND)lParam)
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(HOLLOW_BRUSH);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
break;
} // message switch
return DefWindowProc(hWnd, message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wincl;
char szClassName[] = "Universal Converter 1.0";
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
BackG = wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
if (!RegisterClassEx(&wincl))
return 0;
hWnd = CreateWindowEx(
0,
szClassName,
szClassName,
WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT,
CW_USEDEFAULT,
450,
200,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
ShowWindow(hWnd, nFunsterStil);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}