LRESULT CALLBACK winui_class_proc_handler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HashTable *callback_map; winui_callback_t **callback = {0}; char *callback_name; callback_map = (HashTable *)GetClassLongPtr(hwnd, 0); if(callback_map == 0) { winui_create_error(GetLastError()); } // check for callback in callback_map if(zend_hash_index_find(callback_map, msg, (winui_callback_t **) &callback) == SUCCESS) { // Now use *callback (which'll be a winui_callback_t*) php_printf("callback->callback is always zend_is_callable false!!"); } // each subclass should handle their own special messages by cracking them and sending them in useable format // call windowProc handler for class // finish with defWindowProc return DefWindowProc(hwnd, msg, wParam, lParam); }