Processing events sent to the parent of the window
If the message is mapped to a PowerBuilder event, GetEventID returns the event's identifier, for example PB_BNCLICKED, and the event is fired automatically.
If the message is not mapped to an event, GetEventID returns the value PB_NULL and the message is discarded.
TCHAR CVisualExt::s_className[] = "PBVisualExt";
LPCTSTR CVisualExt::GetWindowClassName()
{
return s_className;
}
HWND CVisualExt::CreateControl
(
DWORD dwExStyle, // extended window style
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle of parent or owner window
HINSTANCE hInstance // handle of application instance
)
{
d_hwnd = CreateWindowEx(dwExStyle, s_className,
lpWindowName, dwStyle, x, y, nWidth, nHeight,
hWndParent, NULL, hInstance, NULL);
::SetWindowLong(d_hwnd, GWL_USERDATA, (LONG)this);
return d_hwnd;
}
int CVisualExt::GetEventID(
HWND hWnd, /* Handle of parent window */
UINT iMsg, /* Message sent to parent window*/
WPARAM wParam, /* Word parameter of message*/
LPARAM lParam /* Long parameter of message*/
)
{
if (iMsg == WM_COMMAND)
{
if ((HWND)lParam == d_hwnd)
{
switch(HIWORD(wParam))
{
case BN_CLICKED:
return PB_BNCLICKED;
break;
}
}
}
if (iMsg == WM_NOTIFY)
{
return PB_ENCHANGE;
}
return PB_NULL;
}