no message

This commit is contained in:
Bei Yang 2010-05-19 20:58:28 +00:00
parent 2630c3bd50
commit 6a514be7d7
3 changed files with 41 additions and 1 deletions

View File

@ -1259,6 +1259,11 @@ window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
WindowProperties properties;
int button = -1;
//first do custom messages processing if any has been set
for ( WinProcClasses::iterator it=_window_proc_classes.begin() ; it != _window_proc_classes.end(); it++ ){
(*it)->wnd_proc(hwnd, msg, wparam, lparam);
}
switch (msg) {
case WM_MOUSEMOVE:
if (!_tracking_mouse_leaving) {
@ -2793,3 +2798,26 @@ void get_client_rect_screen(HWND hwnd, RECT *view_rect) {
view_rect->right = lr.x;
view_rect->bottom = lr.y;
}
void WinGraphicsWindow::add_window_proc( const GraphicsWindowProc* wnd_proc ){
//check for type first
//nassertv(wnd_proc->get_type() == WinGraphicsWindowProc::get_class_type());
nassertv(wnd_proc != NULL);
_window_proc_classes.insert( (GraphicsWindowProc*)wnd_proc );
}
void WinGraphicsWindow::remove_window_proc( const GraphicsWindowProc* wnd_proc ){
//check to see if we have the right type of object
//nassertv(wnd_proc->get_type() == WinGraphicsWindowProc::get_class_type());
nassertv(wnd_proc != NULL);
_window_proc_classes.erase( (GraphicsWindowProc*)wnd_proc );
}
void WinGraphicsWindow::clear_window_procs(){
_window_proc_classes.clear();
}
bool WinGraphicsWindow::supports_window_procs() const{
return true;
}

View File

@ -17,6 +17,7 @@
#include "pandabase.h"
#include "graphicsWindow.h"
#include "graphicsWindowProc.h"
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
@ -178,6 +179,17 @@ private:
bool _lalt_down;
bool _ralt_down;
// following adds support platform specfic window processing
// functions.
typedef pset<GraphicsWindowProc*> WinProcClasses;
WinProcClasses _window_proc_classes;
PUBLISHED:
virtual void add_window_proc( const GraphicsWindowProc* wnd_proc_object );
virtual void remove_window_proc( const GraphicsWindowProc* wnd_proc_object );
virtual void clear_window_procs();
virtual bool supports_window_procs() const;
private:
// We need this map to support per-window calls to window_proc().
typedef map<HWND, WinGraphicsWindow *> WindowHandles;

View File

@ -1,3 +1,3 @@
#include "config_windisplay.cxx"
#include "winGraphicsWindow.cxx"
#include "winGraphicsPipe.cxx"
#include "winGraphicsPipe.cxx"