|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#include <winpr/crt.h>
|
|
Packit |
1fb8d4 |
#include <winpr/wnd.h>
|
|
Packit |
1fb8d4 |
#include <winpr/tchar.h>
|
|
Packit |
1fb8d4 |
#include <winpr/library.h>
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
static LRESULT CALLBACK TestWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
PCOPYDATASTRUCT pCopyData;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
switch (uMsg)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
case WM_COPYDATA:
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
pCopyData = (PCOPYDATASTRUCT) lParam;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if (!pCopyData)
|
|
Packit |
1fb8d4 |
break;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
printf("WM_COPYDATA: cbData: %"PRIu32" dwData: %"PRIu32"\n",
|
|
Packit |
1fb8d4 |
(int) pCopyData->cbData, (int) pCopyData->dwData);
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
break;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
case WM_CLOSE:
|
|
Packit |
1fb8d4 |
printf("WM_CLOSE\n");
|
|
Packit |
1fb8d4 |
break;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
default:
|
|
Packit |
1fb8d4 |
printf("TestWndProc: uMsg: 0x%08"PRIX32"\n", uMsg);
|
|
Packit |
1fb8d4 |
return DefWindowProc(hwnd, uMsg, wParam, lParam);
|
|
Packit |
1fb8d4 |
break;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
return 0;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
int TestWndWmCopyData(int argc, char* argv[])
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
HWND hWnd;
|
|
Packit |
1fb8d4 |
HMODULE hModule;
|
|
Packit |
1fb8d4 |
HINSTANCE hInstance;
|
|
Packit |
1fb8d4 |
WNDCLASSEX wndClassEx;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
hModule = GetModuleHandle(NULL);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
ZeroMemory(&wndClassEx, sizeof(WNDCLASSEX));
|
|
Packit |
1fb8d4 |
wndClassEx.cbSize = sizeof(WNDCLASSEX);
|
|
Packit |
1fb8d4 |
wndClassEx.style = 0;
|
|
Packit |
1fb8d4 |
wndClassEx.lpfnWndProc = TestWndProc;
|
|
Packit |
1fb8d4 |
wndClassEx.cbClsExtra = 0;
|
|
Packit |
1fb8d4 |
wndClassEx.cbWndExtra = 0;
|
|
Packit |
1fb8d4 |
wndClassEx.hInstance = hModule;
|
|
Packit |
1fb8d4 |
wndClassEx.hIcon = NULL;
|
|
Packit |
1fb8d4 |
wndClassEx.hCursor = NULL;
|
|
Packit |
1fb8d4 |
wndClassEx.hbrBackground = NULL;
|
|
Packit |
1fb8d4 |
wndClassEx.lpszMenuName = _T("TestWndMenu");
|
|
Packit |
1fb8d4 |
wndClassEx.lpszClassName = _T("TestWndClass");
|
|
Packit |
1fb8d4 |
wndClassEx.hIconSm = NULL;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if (!RegisterClassEx(&wndClassEx))
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("RegisterClassEx failure\n");
|
|
Packit |
1fb8d4 |
return -1;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
hInstance = wndClassEx.hInstance;
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
hWnd = CreateWindowEx(0, wndClassEx.lpszClassName,
|
|
Packit |
1fb8d4 |
0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, hInstance, NULL);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
if (!hWnd)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("CreateWindowEx failure\n");
|
|
Packit |
1fb8d4 |
return -1;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
SendMessage(hWnd, WM_CLOSE, 0, 0);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
DestroyWindow(hWnd);
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
return 0;
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|