Эксперт
- Статус
- Оффлайн
- Регистрация
- 12 Июн 2014
- Сообщения
- 994
- Реакции
- 1,209
Код:
#include <windows.h>
#include <string>
#include <stdexcept>
#define ID_CLIMBEXTRA 132
#define ID_SILHOUETTE 133
std::string szClassName = "MyWindow";
HWND hWnd;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
struct myFunction
{
int iClimbExtra;
int iSilhouettes;
myFunction()
{
iClimbExtra = 0;
iSilhouettes = 0;
}
}Fun;
int CreateForm()
{
MSG msg;
if (!RegClass(WndProc, szClassName.c_str(), COLOR_WINDOW))
MessageBox(0, "RegisterClassEx", "Error", MB_OK);/*return 0;*/
hWnd = CreateWindow(szClassName.c_str(), szClassName.c_str(),
WS_OVERLAPPED | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU,
10, 10, 10, 10, NULL, NULL, GetModuleHandle(NULL), NULL);
if (!hWnd)
MessageBox(0, "CreateWindow", "Error", MB_OK);/*return 0;*/
//создаем контролы
ShowWindow(hWnd, SW_SHOWNORMAL/*SW_HIDE*/);
UpdateWindow(hWnd);
while (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(szClassName.c_str(), GetModuleHandle(NULL));
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_NULL:
{
switch (wParam)
{
case ID_CLIMBEXTRA:
Fun.iClimbExtra = lParam;
break;
case ID_SILHOUETTE:
Fun.iSilhouettes = lParam;
break;
break;
}
break;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
WNDCLASSEX wc =
{
sizeof(WNDCLASSEX),
0,
Proc,
0,
0,
GetModuleHandle(NULL),
NULL,
NULL,
(HBRUSH)brBackground,
0,
szClassName.c_str(),
NULL
};
return (RegisterClassEx(&wc) != 0);
}
BOOL APIPRIVATE DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserv)
{
UNREFERENCED_PARAMETER(lpReserv);
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hModule);
CloseHandle(CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CreateForm, NULL, NULL, NULL));
return TRUE;
case DLL_PROCESS_DETACH:
exit(0);
return TRUE;
}
return FALSE;
}