- 生成 24 个 _cfl*.vp(10327 条 extern 声明)+ _types/_enums 常量 - __init__.vp 提供 Fl/Fl_Widget/Fl_Window/Fl_Button/Fl_Input/Fl_Text_Buffer/Fl_Group/Fl_Menu_Bar/Fl_Native_File_Chooser 等包装类 - 回调(Fl_Callback)按 bytes 不透明处理,菜单回调位传 t.CPtr(0) - 新增 examples/hello.vp、dialog.vp 冒烟样例,26 个 .vp 全部通过 vast parse - 内嵌 cfltk(C API 封装)与 FLTK 1.4 完整源码,构建目标 cfltk2
63 lines
2.3 KiB
Diff
63 lines
2.3 KiB
Diff
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
|
|
index e7539737f..e7d92a206 100644
|
|
--- a/src/Fl_win32.cxx
|
|
+++ b/src/Fl_win32.cxx
|
|
@@ -572,16 +572,16 @@ class Fl_Win32_At_Exit {
|
|
public:
|
|
Fl_Win32_At_Exit() {}
|
|
~Fl_Win32_At_Exit() {
|
|
- fl_free_fonts(); // do some Windows cleanup
|
|
- fl_cleanup_pens();
|
|
- OleUninitialize();
|
|
- if (fl_graphics_driver) fl_brush_action(1);
|
|
- fl_cleanup_dc_list();
|
|
- // This is actually too late in the cleanup process to remove the
|
|
- // clipboard notifications, but we have no earlier hook so we try
|
|
- // to work around it anyway.
|
|
- if (clipboard_wnd != NULL)
|
|
- fl_clipboard_notify_untarget(clipboard_wnd);
|
|
+ // fl_free_fonts(); // do some Windows cleanup
|
|
+ // fl_cleanup_pens();
|
|
+ // OleUninitialize();
|
|
+ // if (fl_graphics_driver) fl_brush_action(1);
|
|
+ // fl_cleanup_dc_list();
|
|
+ // // This is actually too late in the cleanup process to remove the
|
|
+ // // clipboard notifications, but we have no earlier hook so we try
|
|
+ // // to work around it anyway.
|
|
+ // if (clipboard_wnd != NULL)
|
|
+ // fl_clipboard_notify_untarget(clipboard_wnd);
|
|
#if USE_GDIPLUS
|
|
Fl_GDIplus_Graphics_Driver::shutdown();
|
|
#endif
|
|
@@ -1200,6 +1200,8 @@ static Fl_Window *resize_bug_fix;
|
|
extern void fl_save_pen(void);
|
|
extern void fl_restore_pen(void);
|
|
|
|
+static bool left_window = true;
|
|
+
|
|
static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
|
|
|
// Copy the message to fl_msg so add_handler code can see it.
|
|
@@ -1373,6 +1375,14 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|
}
|
|
|
|
case WM_MOUSEMOVE:
|
|
+ if (left_window) {
|
|
+ Fl_Window *tw = window;
|
|
+ while (tw->parent()) // find top level window
|
|
+ tw = tw->window();
|
|
+ Fl::handle(FL_ENTER, tw);
|
|
+ left_window = false;
|
|
+ return 0;
|
|
+ }
|
|
#ifdef USE_TRACK_MOUSE
|
|
if (track_mouse_win != window) {
|
|
TRACKMOUSEEVENT tme;
|
|
@@ -1392,6 +1402,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|
while (tw->parent()) // find top level window
|
|
tw = tw->window();
|
|
Fl::belowmouse(0);
|
|
+ left_window = true;
|
|
Fl::handle(FL_LEAVE, tw);
|
|
}
|
|
track_mouse_win = 0; // force TrackMouseEvent() restart
|