Mercurial > dwindows
comparison os2/dw.c @ 1407:2f10480d2c8a
More Watcom build fixes from abwillis and a change to allow VAC30 to work again.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 30 Nov 2011 06:00:29 +0000 |
parents | b7aaf06e9367 |
children | 93eb987c05cf |
comparison
equal
deleted
inserted
replaced
1406:1d07d7ff07b9 | 1407:2f10480d2c8a |
---|---|
46 | 46 |
47 #ifndef MAX_PATH | 47 #ifndef MAX_PATH |
48 #define MAX_PATH 260 | 48 #define MAX_PATH 260 |
49 #endif | 49 #endif |
50 | 50 |
51 #ifdef __IBMC__ | |
52 #define API_FUNC * API | |
53 #else | |
54 #define API_FUNC API * | |
55 #endif | |
56 | |
51 MRESULT EXPENTRY _run_event(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2); | 57 MRESULT EXPENTRY _run_event(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2); |
52 MRESULT EXPENTRY _wndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2); | 58 MRESULT EXPENTRY _wndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2); |
53 MRESULT EXPENTRY _scrollwndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2); | 59 MRESULT EXPENTRY _scrollwndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2); |
54 void _do_resize(Box *thisbox, int x, int y); | 60 void _do_resize(Box *thisbox, int x, int y); |
55 void _handle_splitbar_resize(HWND hwnd, float percent, int type, int x, int y); | 61 void _handle_splitbar_resize(HWND hwnd, float percent, int type, int x, int y); |
56 int _load_bitmap_file(char *file, HWND handle, HBITMAP *hbm, HDC *hdc, HPS *hps, unsigned long *width, unsigned long *height); | 62 int _load_bitmap_file(char *file, HWND handle, HBITMAP *hbm, HDC *hdc, HPS *hps, unsigned long *width, unsigned long *height); |
57 void _dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad, char *functionname); | 63 void _dw_box_pack_start(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad, char *functionname); |
58 void _dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad, char *functionname); | 64 void _dw_box_pack_end(HWND box, HWND item, int width, int height, int hsize, int vsize, int pad, char *functionname); |
59 void _free_menu_data(HWND menu); | 65 void _free_menu_data(HWND menu); |
60 ULONG (_System * _PmPrintfString)(char *String) = 0; | 66 ULONG (API_FUNC _PmPrintfString)(char *String) = 0; |
61 | 67 |
62 char ClassName[] = "dynamicwindows"; | 68 char ClassName[] = "dynamicwindows"; |
63 char SplitbarClassName[] = "dwsplitbar"; | 69 char SplitbarClassName[] = "dwsplitbar"; |
64 char ScrollClassName[] = "dwscroll"; | 70 char ScrollClassName[] = "dwscroll"; |
65 char *DefaultFont = "9.WarpSans"; | 71 char *DefaultFont = "9.WarpSans"; |
2246 /* Find any callbacks for this function */ | 2252 /* Find any callbacks for this function */ |
2247 while(tmp) | 2253 while(tmp) |
2248 { | 2254 { |
2249 if(tmp->message == WM_COMMAND) | 2255 if(tmp->message == WM_COMMAND) |
2250 { | 2256 { |
2251 int (API * clickfunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction; | 2257 int (API_FUNC clickfunc)(HWND, void *) = (int (API_FUNC)(HWND, void *))tmp->signalfunction; |
2252 | 2258 |
2253 /* Make sure it's the right window, and the right ID */ | 2259 /* Make sure it's the right window, and the right ID */ |
2254 if(tmp->window == handle) | 2260 if(tmp->window == handle) |
2255 { | 2261 { |
2256 clickfunc(tmp->window, tmp->data); | 2262 clickfunc(tmp->window, tmp->data); |
2785 { | 2791 { |
2786 case WM_SETFOCUS: | 2792 case WM_SETFOCUS: |
2787 { | 2793 { |
2788 if((mp2 && tmp->message == WM_SETFOCUS) || (!mp2 && tmp->message == WM_USER+1)) | 2794 if((mp2 && tmp->message == WM_SETFOCUS) || (!mp2 && tmp->message == WM_USER+1)) |
2789 { | 2795 { |
2790 int (API * setfocusfunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction; | 2796 int (API_FUNC setfocusfunc)(HWND, void *) = (int (API_FUNC)(HWND, void *))tmp->signalfunction; |
2791 | 2797 |
2792 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd) | 2798 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd) |
2793 { | 2799 { |
2794 result = setfocusfunc(tmp->window, tmp->data); | 2800 result = setfocusfunc(tmp->window, tmp->data); |
2795 tmp = NULL; | 2801 tmp = NULL; |
2797 } | 2803 } |
2798 } | 2804 } |
2799 break; | 2805 break; |
2800 case WM_TIMER: | 2806 case WM_TIMER: |
2801 { | 2807 { |
2802 int (API * timerfunc)(void *) = (int (API *)(void *))tmp->signalfunction; | 2808 int (API_FUNC timerfunc)(void *) = (int (API_FUNC)(void *))tmp->signalfunction; |
2803 if(tmp->id == (int)mp1) | 2809 if(tmp->id == (int)mp1) |
2804 { | 2810 { |
2805 if(!timerfunc(tmp->data)) | 2811 if(!timerfunc(tmp->data)) |
2806 dw_timer_disconnect(tmp->id); | 2812 dw_timer_disconnect(tmp->id); |
2807 tmp = NULL; | 2813 tmp = NULL; |
2809 result = 0; | 2815 result = 0; |
2810 } | 2816 } |
2811 break; | 2817 break; |
2812 case WM_SIZE: | 2818 case WM_SIZE: |
2813 { | 2819 { |
2814 int (API * sizefunc)(HWND, int, int, void *) = (int (API *)(HWND, int, int, void *))tmp->signalfunction; | 2820 int (API_FUNC sizefunc)(HWND, int, int, void *) = (int (API_FUNC)(HWND, int, int, void *))tmp->signalfunction; |
2815 | 2821 |
2816 if((hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd) && SHORT1FROMMP(mp2) && SHORT2FROMMP(mp2)) | 2822 if((hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd) && SHORT1FROMMP(mp2) && SHORT2FROMMP(mp2)) |
2817 { | 2823 { |
2818 result = sizefunc(tmp->window, SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), tmp->data); | 2824 result = sizefunc(tmp->window, SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), tmp->data); |
2819 tmp = NULL; | 2825 tmp = NULL; |
2821 } | 2827 } |
2822 break; | 2828 break; |
2823 case WM_BUTTON1DOWN: | 2829 case WM_BUTTON1DOWN: |
2824 { | 2830 { |
2825 POINTS pts = (*((POINTS*)&mp1)); | 2831 POINTS pts = (*((POINTS*)&mp1)); |
2826 int (API * buttonfunc)(HWND, int, int, int, void *) = (int (API *)(HWND, int, int, int, void *))tmp->signalfunction; | 2832 int (API_FUNC buttonfunc)(HWND, int, int, int, void *) = (int (API_FUNC)(HWND, int, int, int, void *))tmp->signalfunction; |
2827 | 2833 |
2828 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window) | 2834 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window) |
2829 { | 2835 { |
2830 int button = 0; | 2836 int button = 0; |
2831 | 2837 |
2848 } | 2854 } |
2849 break; | 2855 break; |
2850 case WM_BUTTON1UP: | 2856 case WM_BUTTON1UP: |
2851 { | 2857 { |
2852 POINTS pts = (*((POINTS*)&mp1)); | 2858 POINTS pts = (*((POINTS*)&mp1)); |
2853 int (API * buttonfunc)(HWND, int, int, int, void *) = (int (API *)(HWND, int, int, int, void *))tmp->signalfunction; | 2859 int (API_FUNC buttonfunc)(HWND, int, int, int, void *) = (int (API_FUNC)(HWND, int, int, int, void *))tmp->signalfunction; |
2854 | 2860 |
2855 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window) | 2861 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window) |
2856 { | 2862 { |
2857 int button = 0; | 2863 int button = 0; |
2858 | 2864 |
2874 } | 2880 } |
2875 } | 2881 } |
2876 break; | 2882 break; |
2877 case WM_MOUSEMOVE: | 2883 case WM_MOUSEMOVE: |
2878 { | 2884 { |
2879 int (API * motionfunc)(HWND, int, int, int, void *) = (int (API *)(HWND, int, int, int, void *))tmp->signalfunction; | 2885 int (API_FUNC motionfunc)(HWND, int, int, int, void *) = (int (API_FUNC)(HWND, int, int, int, void *))tmp->signalfunction; |
2880 | 2886 |
2881 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window) | 2887 if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window) |
2882 { | 2888 { |
2883 int keys = 0; | 2889 int keys = 0; |
2884 SHORT x = SHORT1FROMMP(mp1), y = SHORT2FROMMP(mp1); | 2890 SHORT x = SHORT1FROMMP(mp1), y = SHORT2FROMMP(mp1); |
2895 } | 2901 } |
2896 } | 2902 } |
2897 break; | 2903 break; |
2898 case WM_CHAR: | 2904 case WM_CHAR: |
2899 { | 2905 { |
2900 int (API * keypressfunc)(HWND, char, int, int, void *) = (int (API *)(HWND, char, int, int, void *))tmp->signalfunction; | 2906 int (API_FUNC keypressfunc)(HWND, char, int, int, void *) = (int (API_FUNC)(HWND, char, int, int, void *))tmp->signalfunction; |
2901 | 2907 |
2902 if((hWnd == tmp->window || _toplevel_window(hWnd) == tmp->window) && !(SHORT1FROMMP(mp1) & KC_KEYUP)) | 2908 if((hWnd == tmp->window || _toplevel_window(hWnd) == tmp->window) && !(SHORT1FROMMP(mp1) & KC_KEYUP)) |
2903 { | 2909 { |
2904 int vk; | 2910 int vk; |
2905 char ch = 0; | 2911 char ch = 0; |
2926 } | 2932 } |
2927 } | 2933 } |
2928 break; | 2934 break; |
2929 case WM_CLOSE: | 2935 case WM_CLOSE: |
2930 { | 2936 { |
2931 int (API * closefunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction; | 2937 int (API_FUNC closefunc)(HWND, void *) = (int (API_FUNC)(HWND, void *))tmp->signalfunction; |
2932 | 2938 |
2933 if(hWnd == tmp->window || hWnd == WinWindowFromID(tmp->window, FID_CLIENT)) | 2939 if(hWnd == tmp->window || hWnd == WinWindowFromID(tmp->window, FID_CLIENT)) |
2934 { | 2940 { |
2935 result = closefunc(tmp->window, tmp->data); | 2941 result = closefunc(tmp->window, tmp->data); |
2936 if(result) | 2942 if(result) |
2941 break; | 2947 break; |
2942 case WM_PAINT: | 2948 case WM_PAINT: |
2943 { | 2949 { |
2944 HPS hps; | 2950 HPS hps; |
2945 DWExpose exp; | 2951 DWExpose exp; |
2946 int (API * exposefunc)(HWND, DWExpose *, void *) = (int (API *)(HWND, DWExpose *, void *))tmp->signalfunction; | 2952 int (API_FUNC exposefunc)(HWND, DWExpose *, void *) = (int (API_FUNC)(HWND, DWExpose *, void *))tmp->signalfunction; |
2947 RECTL rc; | 2953 RECTL rc; |
2948 | 2954 |
2949 if(hWnd == tmp->window) | 2955 if(hWnd == tmp->window) |
2950 { | 2956 { |
2951 int height = _get_height(hWnd); | 2957 int height = _get_height(hWnd); |
2960 } | 2966 } |
2961 } | 2967 } |
2962 break; | 2968 break; |
2963 case WM_COMMAND: | 2969 case WM_COMMAND: |
2964 { | 2970 { |
2965 int (API * clickfunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction; | 2971 int (API_FUNC clickfunc)(HWND, void *) = (int (API_FUNC)(HWND, void *))tmp->signalfunction; |
2966 ULONG command = COMMANDMSG(&msg)->cmd; | 2972 ULONG command = COMMANDMSG(&msg)->cmd; |
2967 | 2973 |
2968 if(tmp->id && command == tmp->id) | 2974 if(tmp->id && command == tmp->id) |
2969 { | 2975 { |
2970 HWND menuowner = _menu_owner(tmp->window); | 2976 HWND menuowner = _menu_owner(tmp->window); |
2995 | 3001 |
2996 switch(svar) | 3002 switch(svar) |
2997 { | 3003 { |
2998 case CN_ENTER: | 3004 case CN_ENTER: |
2999 { | 3005 { |
3000 int (API * containerselectfunc)(HWND, char *, void *) = (int (API *)(HWND, char *, void *))tmp->signalfunction; | 3006 int (API_FUNC containerselectfunc)(HWND, char *, void *) = (int (API_FUNC)(HWND, char *, void *))tmp->signalfunction; |
3001 char *text = NULL; | 3007 char *text = NULL; |
3002 | 3008 |
3003 if(mp2) | 3009 if(mp2) |
3004 { | 3010 { |
3005 PRECORDCORE pre; | 3011 PRECORDCORE pre; |
3016 } | 3022 } |
3017 } | 3023 } |
3018 break; | 3024 break; |
3019 case CN_EXPANDTREE: | 3025 case CN_EXPANDTREE: |
3020 { | 3026 { |
3021 int (API * treeexpandfunc)(HWND, HTREEITEM, void *) = (int (API *)(HWND, HTREEITEM, void *))tmp->signalfunction; | 3027 int (API_FUNC treeexpandfunc)(HWND, HTREEITEM, void *) = (int (API_FUNC)(HWND, HTREEITEM, void *))tmp->signalfunction; |
3022 | 3028 |
3023 if(tmp->window == notifyhwnd) | 3029 if(tmp->window == notifyhwnd) |
3024 { | 3030 { |
3025 result = treeexpandfunc(tmp->window, (HTREEITEM)mp2, tmp->data); | 3031 result = treeexpandfunc(tmp->window, (HTREEITEM)mp2, tmp->data); |
3026 tmp = NULL; | 3032 tmp = NULL; |
3027 } | 3033 } |
3028 } | 3034 } |
3029 break; | 3035 break; |
3030 case CN_CONTEXTMENU: | 3036 case CN_CONTEXTMENU: |
3031 { | 3037 { |
3032 int (API * containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (API *)(HWND, char *, int, int, void *, void *))tmp->signalfunction; | 3038 int (API_FUNC containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (API_FUNC)(HWND, char *, int, int, void *, void *))tmp->signalfunction; |
3033 char *text = NULL; | 3039 char *text = NULL; |
3034 void *user = NULL; | 3040 void *user = NULL; |
3035 LONG x,y; | 3041 LONG x,y; |
3036 | 3042 |
3037 if(mp2) | 3043 if(mp2) |
3092 { | 3098 { |
3093 PCNRITEM pci = (PCNRITEM)pre->pRecord; | 3099 PCNRITEM pci = (PCNRITEM)pre->pRecord; |
3094 | 3100 |
3095 if(pci && pre->fEmphasisMask & CRA_CURSORED && (pci->rc.flRecordAttr & CRA_CURSORED)) | 3101 if(pci && pre->fEmphasisMask & CRA_CURSORED && (pci->rc.flRecordAttr & CRA_CURSORED)) |
3096 { | 3102 { |
3097 int (API * treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (API *)(HWND, HTREEITEM, char *, void *, void *))tmp->signalfunction; | 3103 int (API_FUNC treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (API_FUNC)(HWND, HTREEITEM, char *, void *, void *))tmp->signalfunction; |
3098 | 3104 |
3099 if(dw_window_get_data(tmp->window, "_dw_container")) | 3105 if(dw_window_get_data(tmp->window, "_dw_container")) |
3100 result = treeselectfunc(tmp->window, 0, (char *)pci->rc.pszIcon, tmp->data, 0); | 3106 result = treeselectfunc(tmp->window, 0, (char *)pci->rc.pszIcon, tmp->data, 0); |
3101 else | 3107 else |
3102 { | 3108 { |
3126 | 3132 |
3127 WinQueryClassName(tmp->window, 99, (PCH)classbuf); | 3133 WinQueryClassName(tmp->window, 99, (PCH)classbuf); |
3128 | 3134 |
3129 if(strncmp(classbuf, "#38", 4) == 0) | 3135 if(strncmp(classbuf, "#38", 4) == 0) |
3130 { | 3136 { |
3131 int (API * valuechangedfunc)(HWND, int, void *) = (int (API *)(HWND, int, void *))tmp->signalfunction; | 3137 int (API_FUNC valuechangedfunc)(HWND, int, void *) = (int (API_FUNC)(HWND, int, void *))tmp->signalfunction; |
3132 | 3138 |
3133 if(tmp->window == hWnd || tmp->window == notifyhwnd) | 3139 if(tmp->window == hWnd || tmp->window == notifyhwnd) |
3134 { | 3140 { |
3135 static int lastvalue = -1; | 3141 static int lastvalue = -1; |
3136 static HWND lasthwnd = NULLHANDLE; | 3142 static HWND lasthwnd = NULLHANDLE; |
3144 tmp = NULL; | 3150 tmp = NULL; |
3145 } | 3151 } |
3146 } | 3152 } |
3147 else | 3153 else |
3148 { | 3154 { |
3149 int (API * listboxselectfunc)(HWND, int, void *) = (int (API *)(HWND, int, void *))tmp->signalfunction; | 3155 int (API_FUNC listboxselectfunc)(HWND, int, void *) = (int (API_FUNC)(HWND, int, void *))tmp->signalfunction; |
3150 static int _recursing = 0; | 3156 static int _recursing = 0; |
3151 | 3157 |
3152 if(_recursing == 0 && (tmp->window == notifyhwnd || (!id && tmp->window == (HWND)mp2))) | 3158 if(_recursing == 0 && (tmp->window == notifyhwnd || (!id && tmp->window == (HWND)mp2))) |
3153 { | 3159 { |
3154 char buf1[500]; | 3160 char buf1[500]; |
3182 } | 3188 } |
3183 } | 3189 } |
3184 break; | 3190 break; |
3185 case SLN_SLIDERTRACK: | 3191 case SLN_SLIDERTRACK: |
3186 { | 3192 { |
3187 int (API * valuechangedfunc)(HWND, int, void *) = (int (API *)(HWND, int, void *))tmp->signalfunction; | 3193 int (API_FUNC valuechangedfunc)(HWND, int, void *) = (int (API_FUNC)(HWND, int, void *))tmp->signalfunction; |
3188 | 3194 |
3189 if(origmsg == WM_CONTROL) | 3195 if(origmsg == WM_CONTROL) |
3190 { | 3196 { |
3191 /* Handle Slider control */ | 3197 /* Handle Slider control */ |
3192 if(tmp->window == hWnd || tmp->window == notifyhwnd) | 3198 if(tmp->window == hWnd || tmp->window == notifyhwnd) |
3226 { | 3232 { |
3227 PAGESELECTNOTIFY *psn = (PAGESELECTNOTIFY *)mp2; | 3233 PAGESELECTNOTIFY *psn = (PAGESELECTNOTIFY *)mp2; |
3228 | 3234 |
3229 if(psn && tmp->window == psn->hwndBook) | 3235 if(psn && tmp->window == psn->hwndBook) |
3230 { | 3236 { |
3231 int (API * switchpagefunc)(HWND, unsigned long, void *) = (int (API *)(HWND, unsigned long, void *))tmp->signalfunction; | 3237 int (API_FUNC switchpagefunc)(HWND, unsigned long, void *) = (int (API_FUNC)(HWND, unsigned long, void *))tmp->signalfunction; |
3232 | 3238 |
3233 result = switchpagefunc(tmp->window, psn->ulPageIdNew, tmp->data); | 3239 result = switchpagefunc(tmp->window, psn->ulPageIdNew, tmp->data); |
3234 tmp = NULL; | 3240 tmp = NULL; |
3235 } | 3241 } |
3236 } | 3242 } |
3340 /* The main window procedure for Dynamic Windows, all the resizing code is done here. */ | 3346 /* The main window procedure for Dynamic Windows, all the resizing code is done here. */ |
3341 MRESULT EXPENTRY _wndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) | 3347 MRESULT EXPENTRY _wndproc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) |
3342 { | 3348 { |
3343 int result = -1; | 3349 int result = -1; |
3344 static int command_active = 0; | 3350 static int command_active = 0; |
3345 void (API * windowfunc)(PVOID) = 0L; | 3351 void (API_FUNC windowfunc)(PVOID) = 0L; |
3346 | 3352 |
3347 if(!command_active) | 3353 if(!command_active) |
3348 { | 3354 { |
3349 /* Make sure we don't end up in infinite recursion */ | 3355 /* Make sure we don't end up in infinite recursion */ |
3350 command_active = 1; | 3356 command_active = 1; |
3490 return MRFROMSHORT(TRUE); | 3496 return MRFROMSHORT(TRUE); |
3491 } | 3497 } |
3492 } | 3498 } |
3493 return MRFROMSHORT(FALSE); | 3499 return MRFROMSHORT(FALSE); |
3494 case WM_USER: | 3500 case WM_USER: |
3495 windowfunc = (void (API *)(void *))mp1; | 3501 windowfunc = (void (API_FUNC)(void *))mp1; |
3496 | 3502 |
3497 if(windowfunc) | 3503 if(windowfunc) |
3498 windowfunc((void *)mp2); | 3504 windowfunc((void *)mp2); |
3499 break; | 3505 break; |
3500 case WM_CHAR: | 3506 case WM_CHAR: |
3897 } | 3903 } |
3898 break; | 3904 break; |
3899 case WM_USER: | 3905 case WM_USER: |
3900 { | 3906 { |
3901 SignalHandler *tmp = (SignalHandler *)mp1; | 3907 SignalHandler *tmp = (SignalHandler *)mp1; |
3902 int (API * clickfunc)(HWND, void *) = NULL; | 3908 int (API_FUNC clickfunc)(HWND, void *) = NULL; |
3903 | 3909 |
3904 if(tmp) | 3910 if(tmp) |
3905 { | 3911 { |
3906 clickfunc = (int (API *)(HWND, void *))tmp->signalfunction; | 3912 clickfunc = (int (API_FUNC)(HWND, void *))tmp->signalfunction; |
3907 | 3913 |
3908 clickfunc(tmp->window, tmp->data); | 3914 clickfunc(tmp->window, tmp->data); |
3909 } | 3915 } |
3910 } | 3916 } |
3911 break; | 3917 break; |
10099 */ | 10105 */ |
10100 void _dwthreadstart(void *data) | 10106 void _dwthreadstart(void *data) |
10101 { | 10107 { |
10102 HAB thishab = WinInitialize(0); | 10108 HAB thishab = WinInitialize(0); |
10103 HMQ thishmq = WinCreateMsgQueue(dwhab, 0); | 10109 HMQ thishmq = WinCreateMsgQueue(dwhab, 0); |
10104 void (API * threadfunc)(void *) = NULL; | 10110 void (API_FUNC threadfunc)(void *) = NULL; |
10105 void **tmp = (void **)data; | 10111 void **tmp = (void **)data; |
10106 | 10112 |
10107 threadfunc = (void (API *)(void *))tmp[0]; | 10113 threadfunc = (void (API_FUNC)(void *))tmp[0]; |
10108 threadfunc(tmp[1]); | 10114 threadfunc(tmp[1]); |
10109 | 10115 |
10110 free(tmp); | 10116 free(tmp); |
10111 | 10117 |
10112 WinDestroyMsgQueue(thishmq); | 10118 WinDestroyMsgQueue(thishmq); |