Release 960324
Sun Mar 24 13:13:11 1996 Alexandre Julliard <julliard@lrc.epfl.ch> * [include/win.h] [windows/*.c] Replaced next, parent, child and owner handles by pointers in WND structure. This should improve performance, and should be reasonably safe since Microsoft did the same in Win95. * [include/wintypes.h] [*/*] Redefined HANDLE to be UINT instead of a pointer for Winelib. This allows removing a lot of unnecessary casts and NPFMTs. * [windows/caret.c] Create the caret brush upon CreateCaret(); use the bitmap dimensions for the caret. Fixed CARET_DisplayCaret() to use PatBlt(). Fri Mar 22 16:00:00 1996 Anand Kumria <akumria@ozemail.com.au> * [misc/winsocket.c] More sanity checks, fixup some erroneous return codes. * [documentation/winsock] Description of how compatible the winsock is currently. Fri Mar 22 13:05:34 1996 Ulrich Schmid <uschmid@mail.hh.provi.de> * [library/winmain.c] Set `lpszCmdParam' by concatenating arguments. * [loader/module.c] WinExec: accept Unix commands, use Wine emulator. Mon Mar 18 12:16:27 1996 Martin von Loewis <loewis@informatik.hu-berlin.de> * [if1632/kernel32.spec][win32/thread.c][include/kernel32.h] DeleteCriticalSection, EnterCriticalSection, InitializeCriticalSection, LeaveCriticalSection, TlsAlloc, TlsFree, TlsGetValue, TlsSetValue: new functions. CRITICAL_SECTION: new structure. * [if1632/kernel32.spec][win32/code_page.c] WideCharToMultiByte: new function. * [if1632/kernel32.spec][win32/file.c] GetFileAttributesA: new function. * [if1632/kernel32.spec][misc/main.c] GetEnvironmentStringsW, FreeEnvironmentStringsA, FreeEnvironmentStringsW: new functions. * [if1632/user.spec][win32/cursoricon32.c][win32/Makefile.in] cursoricon32.c: new file. LoadCursorA, LoadCursorW: modified implementation from LoadCursor to WIN32_*. LoadIconA, LoadIconW: modified implementation from LoadIconA32 to WIN32_*. * [include/struct32.h] pragma pack inserted. CURSORICON32 structures added. * [include/winnls.h] Constants CP_* and WC_* added. * [loader/pe_image.c] PE_LoadModule: call PE_InitDLL with hModule rather than wpnt. Sun Mar 17 16:59:12 1996 Albrecht Kleine <kleine@ak.sax.de> * [misc/commdlg.c] Introduced hook function handling in file dialog. Removed an unnecessary ShowWindow call in FILEDLG_WMCommand(). Thu Mar 14 10:50:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk> * [if1632/gdi32.spec] Added GetNearestColor. * [if1632/kernel32.spec] Added GlobalAddAtomA. * [win32/param32.c] Added stackframe.h to includes. WIN32_GlobalAddAtomA() - new function.
This commit is contained in:
parent
b817f4fbb5
commit
59730ae1c6
15
ANNOUNCE
15
ANNOUNCE
|
@ -1,13 +1,12 @@
|
|||
This is release 960314 of Wine the MS Windows emulator. This is still a
|
||||
This is release 960324 of Wine the MS Windows emulator. This is still a
|
||||
developer's only release. There are many bugs and many unimplemented API
|
||||
features. Most applications still do not work.
|
||||
|
||||
Patches should be submitted to "julliard@lrc.epfl.ch". Please don't
|
||||
forget to include a ChangeLog entry.
|
||||
|
||||
WHAT'S NEW with Wine-960314: (see ChangeLog for details)
|
||||
- Many combo and listbox fixes.
|
||||
- Win32 exception handling.
|
||||
WHAT'S NEW with Wine-960324: (see ChangeLog for details)
|
||||
- Many Win32 and Winelib improvements.
|
||||
- Lots of bug fixes.
|
||||
|
||||
See the README file in the distribution for installation instructions.
|
||||
|
@ -16,10 +15,10 @@ Because of lags created by using mirror, this message may reach you before
|
|||
the release is available at the ftp sites. The sources will be available
|
||||
from the following locations:
|
||||
|
||||
sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960314.tar.gz
|
||||
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960314.tar.gz
|
||||
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960314.tar.gz
|
||||
aris.com:/pub/linux/ALPHA/Wine/development/Wine-960314.tar.gz
|
||||
sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960324.tar.gz
|
||||
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960324.tar.gz
|
||||
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960324.tar.gz
|
||||
aris.com:/pub/linux/ALPHA/Wine/development/Wine-960324.tar.gz
|
||||
|
||||
It should also be available from any site that mirrors tsx-11 or sunsite.
|
||||
|
||||
|
|
86
ChangeLog
86
ChangeLog
|
@ -1,3 +1,89 @@
|
|||
----------------------------------------------------------------------
|
||||
Sun Mar 24 13:13:11 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
|
||||
|
||||
* [include/win.h] [windows/*.c]
|
||||
Replaced next, parent, child and owner handles by pointers in WND
|
||||
structure. This should improve performance, and should be
|
||||
reasonably safe since Microsoft did the same in Win95.
|
||||
|
||||
* [include/wintypes.h] [*/*]
|
||||
Redefined HANDLE to be UINT instead of a pointer for Winelib. This
|
||||
allows removing a lot of unnecessary casts and NPFMTs.
|
||||
|
||||
* [windows/caret.c]
|
||||
Create the caret brush upon CreateCaret(); use the bitmap
|
||||
dimensions for the caret.
|
||||
Fixed CARET_DisplayCaret() to use PatBlt().
|
||||
|
||||
Fri Mar 22 16:00:00 1996 Anand Kumria <akumria@ozemail.com.au>
|
||||
|
||||
* [misc/winsocket.c]
|
||||
More sanity checks, fixup some erroneous return codes.
|
||||
|
||||
* [documentation/winsock]
|
||||
Description of how compatible the winsock is currently.
|
||||
|
||||
Fri Mar 22 13:05:34 1996 Ulrich Schmid <uschmid@mail.hh.provi.de>
|
||||
|
||||
* [library/winmain.c]
|
||||
Set `lpszCmdParam' by concatenating arguments.
|
||||
|
||||
* [loader/module.c]
|
||||
WinExec: accept Unix commands, use Wine emulator.
|
||||
|
||||
Mon Mar 18 12:16:27 1996 Martin von Loewis <loewis@informatik.hu-berlin.de>
|
||||
|
||||
* [if1632/kernel32.spec][win32/thread.c][include/kernel32.h]
|
||||
DeleteCriticalSection, EnterCriticalSection,
|
||||
InitializeCriticalSection, LeaveCriticalSection, TlsAlloc,
|
||||
TlsFree, TlsGetValue, TlsSetValue: new functions.
|
||||
CRITICAL_SECTION: new structure.
|
||||
|
||||
* [if1632/kernel32.spec][win32/code_page.c]
|
||||
WideCharToMultiByte: new function.
|
||||
|
||||
* [if1632/kernel32.spec][win32/file.c]
|
||||
GetFileAttributesA: new function.
|
||||
|
||||
* [if1632/kernel32.spec][misc/main.c]
|
||||
GetEnvironmentStringsW, FreeEnvironmentStringsA,
|
||||
FreeEnvironmentStringsW: new functions.
|
||||
|
||||
* [if1632/user.spec][win32/cursoricon32.c][win32/Makefile.in]
|
||||
cursoricon32.c: new file.
|
||||
LoadCursorA, LoadCursorW: modified implementation from LoadCursor
|
||||
to WIN32_*.
|
||||
LoadIconA, LoadIconW: modified implementation from LoadIconA32
|
||||
to WIN32_*.
|
||||
|
||||
* [include/struct32.h]
|
||||
pragma pack inserted.
|
||||
CURSORICON32 structures added.
|
||||
|
||||
* [include/winnls.h]
|
||||
Constants CP_* and WC_* added.
|
||||
|
||||
* [loader/pe_image.c]
|
||||
PE_LoadModule: call PE_InitDLL with hModule rather than wpnt.
|
||||
|
||||
Sun Mar 17 16:59:12 1996 Albrecht Kleine <kleine@ak.sax.de>
|
||||
|
||||
* [misc/commdlg.c]
|
||||
Introduced hook function handling in file dialog.
|
||||
Removed an unnecessary ShowWindow call in FILEDLG_WMCommand().
|
||||
|
||||
Thu Mar 14 10:50:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>
|
||||
|
||||
* [if1632/gdi32.spec]
|
||||
Added GetNearestColor.
|
||||
|
||||
* [if1632/kernel32.spec]
|
||||
Added GlobalAddAtomA.
|
||||
|
||||
* [win32/param32.c]
|
||||
Added stackframe.h to includes.
|
||||
WIN32_GlobalAddAtomA() - new function.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Wed Mar 13 19:46:50 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
# From configure.in configure.in 1.00
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated automatically using autoconf version 2.8
|
||||
# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
|
||||
# Generated automatically using autoconf version 2.9
|
||||
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
|
||||
#
|
||||
# This configure script is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
|
@ -341,7 +341,7 @@ EOF
|
|||
verbose=yes ;;
|
||||
|
||||
-version | --version | --versio | --versi | --vers)
|
||||
echo "configure generated by autoconf version 2.8"
|
||||
echo "configure generated by autoconf version 2.9"
|
||||
exit 0 ;;
|
||||
|
||||
-with-* | --with-*)
|
||||
|
@ -1089,13 +1089,15 @@ LIBS="-lICE $LIBS"
|
|||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1091 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char IceConnectionNumber();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
IceConnectionNumber()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1131,15 +1133,17 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-ldnet $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1135 "configure"
|
||||
#line 1137 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char dnet_ntoa();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
dnet_ntoa()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1157,7 +1161,7 @@ else
|
|||
echo "$ac_t""no" 1>&6
|
||||
fi
|
||||
|
||||
if test $ac_cv_lib_dnet = no; then
|
||||
if test $ac_cv_lib_dnet_dnet_ntoa = no; then
|
||||
echo $ac_n "checking for -ldnet_stub""... $ac_c" 1>&6
|
||||
ac_lib_var=`echo dnet_stub_dnet_ntoa | tr '.-/+' '___p'`
|
||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||
|
@ -1166,15 +1170,17 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-ldnet_stub $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1170 "configure"
|
||||
#line 1174 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char dnet_ntoa();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
dnet_ntoa()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1206,15 +1212,17 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lnsl $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1210 "configure"
|
||||
#line 1216 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char t_accept();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
t_accept()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1245,15 +1253,17 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-lsocket $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1249 "configure"
|
||||
#line 1257 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char socket();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
socket()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1350,15 +1360,17 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-l$ac_lib $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1354 "configure"
|
||||
#line 1364 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char yywrap();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
yywrap()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1473,15 +1485,17 @@ else
|
|||
ac_save_LIBS="$LIBS"
|
||||
LIBS="-li386 $LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1477 "configure"
|
||||
#line 1489 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
char i386_set_ldt();
|
||||
|
||||
int main() { return 0; }
|
||||
int t() {
|
||||
i386_set_ldt()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||
else
|
||||
|
@ -1513,11 +1527,11 @@ else
|
|||
ac_cv_c_cross=yes
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1517 "configure"
|
||||
#line 1531 "configure"
|
||||
#include "confdefs.h"
|
||||
main(){return(0);}
|
||||
EOF
|
||||
{ (eval echo configure:1521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:1535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
ac_cv_c_cross=no
|
||||
else
|
||||
|
@ -1538,7 +1552,7 @@ else
|
|||
ac_cv_c_gcc_strength_bug="yes"
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1542 "configure"
|
||||
#line 1556 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main(void) {
|
||||
|
@ -1549,7 +1563,7 @@ int main(void) {
|
|||
exit( Array[1] != -2 );
|
||||
}
|
||||
EOF
|
||||
{ (eval echo configure:1553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:1567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
ac_cv_c_gcc_strength_bug="no"
|
||||
else
|
||||
|
@ -1574,7 +1588,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
|||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1578 "configure"
|
||||
#line 1592 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
|
@ -1596,7 +1610,7 @@ $ac_func();
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
if { (eval echo configure:1614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
|
@ -1626,12 +1640,12 @@ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
|
|||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1630 "configure"
|
||||
#line 1644 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$ac_hdr>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1649: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
|
@ -1660,7 +1674,7 @@ if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
|
|||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1664 "configure"
|
||||
#line 1678 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
@ -1715,7 +1729,7 @@ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
|
|||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1719 "configure"
|
||||
#line 1733 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() { return 0; }
|
||||
|
@ -1765,7 +1779,7 @@ ccp = (char const *const *) p;
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1769: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_const=yes
|
||||
else
|
||||
|
@ -1789,7 +1803,7 @@ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
|
|||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1793 "configure"
|
||||
#line 1807 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -1797,7 +1811,7 @@ else
|
|||
#include <float.h>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
|
@ -1812,7 +1826,7 @@ rm -f conftest*
|
|||
if test $ac_cv_header_stdc = yes; then
|
||||
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1816 "configure"
|
||||
#line 1830 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <string.h>
|
||||
EOF
|
||||
|
@ -1830,7 +1844,7 @@ fi
|
|||
if test $ac_cv_header_stdc = yes; then
|
||||
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1834 "configure"
|
||||
#line 1848 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
EOF
|
||||
|
@ -1851,7 +1865,7 @@ if test "$cross_compiling" = yes; then
|
|||
:
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1855 "configure"
|
||||
#line 1869 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <ctype.h>
|
||||
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
||||
|
@ -1862,7 +1876,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
|
|||
exit (0); }
|
||||
|
||||
EOF
|
||||
{ (eval echo configure:1866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
{ (eval echo configure:1880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
|
||||
if test -s conftest && (./conftest; exit) 2>/dev/null; then
|
||||
:
|
||||
else
|
||||
|
@ -1886,7 +1900,7 @@ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
|
|||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1890 "configure"
|
||||
#line 1904 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
|
@ -2005,7 +2019,7 @@ do
|
|||
echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
|
||||
exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
|
||||
-version | --version | --versio | --versi | --vers | --ver | --ve | --v)
|
||||
echo "$CONFIG_STATUS generated by autoconf version 2.8"
|
||||
echo "$CONFIG_STATUS generated by autoconf version 2.9"
|
||||
exit 0 ;;
|
||||
-help | --help | --hel | --he | --h)
|
||||
echo "\$ac_cs_usage"; exit 0 ;;
|
||||
|
|
|
@ -161,8 +161,7 @@ LRESULT ButtonWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
#ifdef WINELIB32
|
||||
SendMessage( GetParent(hWnd), WM_COMMAND,
|
||||
MAKEWPARAM(wndPtr->wIDmenu,BN_CLICKED),
|
||||
(LPARAM) hWnd );
|
||||
MAKEWPARAM(wndPtr->wIDmenu,BN_CLICKED), hWnd);
|
||||
#else
|
||||
SendMessage( GetParent(hWnd), WM_COMMAND,
|
||||
wndPtr->wIDmenu, MAKELPARAM(hWnd,BN_CLICKED));
|
||||
|
@ -199,7 +198,7 @@ LRESULT ButtonWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
|
||||
case WM_GETFONT:
|
||||
return (LONG) infoPtr->hFont;
|
||||
return infoPtr->hFont;
|
||||
|
||||
case WM_SETFOCUS:
|
||||
infoPtr->state |= BUTTON_HASFOCUS;
|
||||
|
@ -281,8 +280,7 @@ static void PB_Paint( HWND hButton, HDC hDC, WORD action )
|
|||
/* Send WM_CTLCOLOR to allow changing the font (the colors are fixed) */
|
||||
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
|
||||
#ifdef WINELIB32
|
||||
SendMessage( GetParent(hButton), WM_CTLCOLORBTN,
|
||||
(WPARAM)hDC, (LPARAM)hButton );
|
||||
SendMessage( GetParent(hButton), WM_CTLCOLORBTN, hDC, hButton );
|
||||
#else
|
||||
SendMessage( GetParent(hButton), WM_CTLCOLOR, (WORD)hDC,
|
||||
MAKELPARAM(hButton, CTLCOLOR_BTN) );
|
||||
|
@ -340,8 +338,8 @@ static void PB_Paint( HWND hButton, HDC hDC, WORD action )
|
|||
}
|
||||
}
|
||||
|
||||
SelectObject(hDC, (HANDLE)hOldPen);
|
||||
SelectObject(hDC, (HANDLE)hOldBrush);
|
||||
SelectObject( hDC, hOldPen );
|
||||
SelectObject( hDC, hOldBrush );
|
||||
}
|
||||
|
||||
|
||||
|
@ -364,10 +362,9 @@ static void CB_Paint( HWND hWnd, HDC hDC, WORD action )
|
|||
|
||||
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
|
||||
#ifdef WINELIB32 /* JBP: Different in Win32 */
|
||||
hBrush = (HBRUSH) SendMessage(GetParent(hWnd), WM_CTLCOLORBTN, (WPARAM)hDC,
|
||||
(LPARAM)hWnd);
|
||||
hBrush = SendMessage(GetParent(hWnd), WM_CTLCOLORBTN, hDC, hWnd);
|
||||
#else
|
||||
hBrush = SendMessage(GetParent(hWnd), WM_CTLCOLOR, (WORD)hDC,
|
||||
hBrush = SendMessage(GetParent(hWnd), WM_CTLCOLOR, hDC,
|
||||
MAKELPARAM(hWnd, CTLCOLOR_BTN));
|
||||
#endif
|
||||
if (action == ODA_DRAWENTIRE) FillRect(hDC, &rc, hBrush);
|
||||
|
@ -444,9 +441,9 @@ static void GB_Paint( HWND hWnd, HDC hDC, WORD action )
|
|||
|
||||
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
|
||||
#ifdef WINELIB32
|
||||
SendMessage( GetParent(hWnd), WM_CTLCOLORBTN, (WPARAM)hDC, (LPARAM)hWnd );
|
||||
SendMessage( GetParent(hWnd), WM_CTLCOLORBTN, hDC, hWnd );
|
||||
#else
|
||||
SendMessage( GetParent(hWnd), WM_CTLCOLOR, (WORD)hDC,
|
||||
SendMessage( GetParent(hWnd), WM_CTLCOLOR, hDC,
|
||||
MAKELPARAM(hWnd, CTLCOLOR_BTN));
|
||||
#endif
|
||||
SelectObject( hDC, sysColorObjects.hpenWindowFrame );
|
||||
|
@ -487,8 +484,7 @@ static void UB_Paint( HWND hWnd, HDC hDC, WORD action )
|
|||
|
||||
if (infoPtr->hFont) SelectObject( hDC, infoPtr->hFont );
|
||||
#ifdef WINELIB32
|
||||
hBrush = (HBRUSH) SendMessage(GetParent(hWnd), WM_CTLCOLORBTN, (WPARAM)hDC,
|
||||
(LPARAM)hWnd);
|
||||
hBrush = SendMessage( GetParent(hWnd), WM_CTLCOLORBTN, hDC, hWnd );
|
||||
#else
|
||||
hBrush = SendMessage(GetParent(hWnd), WM_CTLCOLOR, (WORD)hDC,
|
||||
MAKELPARAM(hWnd, CTLCOLOR_BTN));
|
||||
|
|
|
@ -175,7 +175,7 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
0, 0, WIN_GetWindowInstance(hwnd),
|
||||
(SEGPTR)hwnd );
|
||||
ShowWindow(lphc->hWndLBox, SW_HIDE);
|
||||
dprintf_combo(stddeb,"Combo Creation LBox="NPFMT"!\n", lphc->hWndLBox);
|
||||
dprintf_combo(stddeb,"Combo Creation LBox=%04x\n", lphc->hWndLBox);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -226,8 +226,7 @@ static LRESULT CBPaint(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
hOldFont = SelectObject(hdc, lphl->hFont);
|
||||
|
||||
#ifdef WINELIB32
|
||||
hBrush = (HBRUSH) SendMessage(lphl->hParent, WM_CTLCOLORLISTBOX, (WPARAM)hdc,
|
||||
(LPARAM)hwnd);
|
||||
hBrush = SendMessage(lphl->hParent, WM_CTLCOLORLISTBOX, hdc, hwnd);
|
||||
#else
|
||||
hBrush = SendMessage(lphl->hParent, WM_CTLCOLOR, hdc,
|
||||
MAKELONG(hwnd, CTLCOLOR_LISTBOX));
|
||||
|
@ -473,7 +472,7 @@ static LRESULT CBSetCurSel(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
wRet = ListBoxSetCurSel(lphl, wParam);
|
||||
|
||||
dprintf_combo(stddeb,"CBSetCurSel: hwnd "NPFMT" wp %x lp %lx wRet %d\n",
|
||||
dprintf_combo(stddeb,"CBSetCurSel: hwnd %04x wp %x lp %lx wRet %d\n",
|
||||
hwnd,wParam,lParam,wRet);
|
||||
/* SetScrollPos(hwnd, SB_VERT, lphl->FirstVisible, TRUE);*/
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
@ -756,8 +755,7 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM wParam, LPARAM lParam )
|
|||
|
||||
hOldFont = SelectObject(hdc, lphl->hFont);
|
||||
#ifdef WINELIB32
|
||||
hBrush = (HBRUSH) SendMessage(lphl->hParent, WM_CTLCOLORLISTBOX, (WPARAM)hdc,
|
||||
(LPARAM)hwnd);
|
||||
hBrush = SendMessage(lphl->hParent, WM_CTLCOLORLISTBOX, hdc, hwnd);
|
||||
#else
|
||||
hBrush = SendMessage(lphl->hParent, WM_CTLCOLOR, hdc,
|
||||
MAKELONG(hwnd, CTLCOLOR_LISTBOX));
|
||||
|
@ -783,7 +781,8 @@ static LRESULT CBLPaint( HWND hwnd, WPARAM wParam, LPARAM lParam )
|
|||
lpls->itemRect.left = rect.left;
|
||||
lpls->itemRect.right = rect.right;
|
||||
|
||||
dprintf_listbox(stddeb,"drawing item: %ld %d %ld %d %d\n",(LONG)rect.left,top,(LONG)rect.right,top+height,lpls->itemState);
|
||||
dprintf_listbox(stddeb,"drawing item: %d %d %d %d %d\n",
|
||||
rect.left,top,rect.right,top+height,lpls->itemState);
|
||||
if (lphl->OwnerDrawn) {
|
||||
ListBoxDrawItem (combohwnd, lphl, hdc, lpls, &lpls->itemRect, ODA_DRAWENTIRE, 0);
|
||||
if (lpls->itemState)
|
||||
|
@ -891,7 +890,7 @@ static LRESULT CBLMouseMove( HWND hwnd, WPARAM wParam, LPARAM lParam )
|
|||
ListBoxGetItemRect(lphl, wRet, &rectsel);
|
||||
GetClientRect(hwnd, &rect);
|
||||
|
||||
dprintf_combo(stddeb,"CBLMouseMove: hwnd "NPFMT" wp %x lp %lx y %d if %d wret %d %d,%d-%d,%d\n",
|
||||
dprintf_combo(stddeb,"CBLMouseMove: hwnd %04x wp %x lp %lx y %d if %d wret %d %d,%d-%d,%d\n",
|
||||
hwnd,wParam,lParam,y,lphl->ItemFocused,wRet,rectsel.left,rectsel.top,rectsel.right,rectsel.bottom);
|
||||
|
||||
if ((wParam & MK_LBUTTON) != 0) {
|
||||
|
@ -997,7 +996,7 @@ LRESULT ComboLBoxWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
*/
|
||||
BOOL DlgDirSelectComboBox(HWND hDlg, LPSTR lpStr, INT nIDLBox)
|
||||
{
|
||||
fprintf(stdnimp,"DlgDirSelectComboBox("NPFMT", '%s', %d) \n",
|
||||
fprintf(stdnimp,"DlgDirSelectComboBox(%04x, '%s', %d) \n",
|
||||
hDlg, lpStr, nIDLBox);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1011,7 +1010,7 @@ INT DlgDirListComboBox( HWND hDlg, SEGPTR path, INT idCBox,
|
|||
{
|
||||
INT ret = 0;
|
||||
|
||||
dprintf_combo( stddeb,"DlgDirListComboBox("NPFMT",%08lx,%d,%d,%04X) \n",
|
||||
dprintf_combo( stddeb,"DlgDirListComboBox(%04x,%08lx,%d,%d,%04X) \n",
|
||||
hDlg, (DWORD)path, idCBox, idStatic, wType );
|
||||
|
||||
if (idCBox)
|
||||
|
|
|
@ -743,14 +743,14 @@ static void EDIT_WriteTextLine(HWND hwnd, RECT *rect, int y)
|
|||
/* make sure rectangle is within window */
|
||||
if (rc.left >= es->ClientWidth - 1)
|
||||
{
|
||||
dprintf_edit(stddeb,"EDIT_WriteTextLine: rc.left (%ld) is greater than right edge\n",
|
||||
(LONG)rc.left);
|
||||
dprintf_edit(stddeb,"EDIT_WriteTextLine: rc.left (%d) is greater than right edge\n",
|
||||
rc.left);
|
||||
return;
|
||||
}
|
||||
if (rc.right <= 0)
|
||||
{
|
||||
dprintf_edit(stddeb,"EDIT_WriteTextLine: rc.right (%ld) is less than left edge\n",
|
||||
(LONG)rc.right);
|
||||
dprintf_edit(stddeb,"EDIT_WriteTextLine: rc.right (%d) is less than left edge\n",
|
||||
rc.right);
|
||||
return;
|
||||
}
|
||||
if (y - es->wtop < (rc.top / es->txtht) ||
|
||||
|
@ -2008,8 +2008,8 @@ static void EDIT_SetHandleMsg(HWND hwnd, WPARAM wParam)
|
|||
es->textwidth = 0;
|
||||
es->SelBegLine = es->SelBegCol = 0;
|
||||
es->SelEndLine = es->SelEndCol = 0;
|
||||
dprintf_edit(stddeb, "EDIT_SetHandleMsg: handle %04lx, textlen=%d\n",
|
||||
(DWORD)wParam, es->textlen);
|
||||
dprintf_edit(stddeb, "EDIT_SetHandleMsg: handle %04x, textlen=%d\n",
|
||||
wParam, es->textlen);
|
||||
|
||||
EDIT_BuildTextPointers(hwnd);
|
||||
es->PaintBkgd = TRUE;
|
||||
|
@ -2353,8 +2353,8 @@ static void EDIT_WM_Paint(HWND hwnd)
|
|||
GetClientRect(hwnd, &rc);
|
||||
IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom);
|
||||
|
||||
dprintf_edit(stddeb,"WM_PAINT: rc=(%ld,%ld), (%ld,%ld)\n", (LONG)rc.left,
|
||||
(LONG)rc.top, (LONG)rc.right, (LONG)rc.bottom);
|
||||
dprintf_edit(stddeb,"WM_PAINT: rc=(%d,%d), (%d,%d)\n",
|
||||
rc.left, rc.top, rc.right, rc.bottom);
|
||||
|
||||
if (es->PaintBkgd)
|
||||
FillWindow(GetParent(hwnd), hwnd, hdc, (HBRUSH)CTLCOLOR_EDIT);
|
||||
|
|
|
@ -1253,7 +1253,7 @@ static LONG LBSetRedraw(HWND hwnd, WORD wParam, LONG lParam)
|
|||
{
|
||||
LPHEADLIST lphl = ListBoxGetStorageHeader(hwnd);
|
||||
|
||||
dprintf_listbox(stddeb,"ListBox WM_SETREDRAW hWnd="NPFMT" w=%04X !\n",
|
||||
dprintf_listbox(stddeb,"ListBox WM_SETREDRAW hWnd=%04x w=%04x !\n",
|
||||
hwnd, wParam);
|
||||
lphl->bRedrawFlag = wParam;
|
||||
|
||||
|
@ -1365,8 +1365,8 @@ static LONG LBPaint(HWND hwnd, WORD wParam, LONG lParam)
|
|||
|
||||
if( IntersectRect(&scratchRect,&paintRect,&lpls->itemRect) )
|
||||
{
|
||||
dprintf_listbox(stddeb,"LBPaint: drawing item: %ld %d %ld %d %d\n",(LONG)rect.left,top,
|
||||
(LONG)rect.right,top+height,lpls->itemState);
|
||||
dprintf_listbox(stddeb,"LBPaint: drawing item: %d %d %d %d %d\n",
|
||||
rect.left,top,rect.right,top+height,lpls->itemState);
|
||||
|
||||
if (lphl->OwnerDrawn && (lphl->ItemFocused == i) && GetFocus() == hwnd)
|
||||
{
|
||||
|
@ -1401,7 +1401,7 @@ static LONG LBSetFocus(HWND hwnd, WORD wParam, LONG lParam)
|
|||
{
|
||||
LPHEADLIST lphl = ListBoxGetStorageHeader(hwnd);
|
||||
|
||||
dprintf_listbox(stddeb,"ListBox WM_SETFOCUS for "NPFMT"\n",hwnd);
|
||||
dprintf_listbox(stddeb,"ListBox WM_SETFOCUS for %04x\n",hwnd);
|
||||
if(!(lphl->dwStyle & LBS_MULTIPLESEL) )
|
||||
if( lphl->ItemsCount && lphl->ItemFocused != -1)
|
||||
{
|
||||
|
@ -1429,7 +1429,7 @@ static LONG LBKillFocus(HWND hwnd, WORD wParam, LONG lParam)
|
|||
{
|
||||
LPHEADLIST lphl = ListBoxGetStorageHeader(hwnd);
|
||||
|
||||
dprintf_listbox(stddeb,"ListBox WM_KILLFOCUS for "NPFMT"\n",hwnd);
|
||||
dprintf_listbox(stddeb,"ListBox WM_KILLFOCUS for %04x\n",hwnd);
|
||||
if (!(lphl->dwStyle & LBS_MULTIPLESEL))
|
||||
{
|
||||
if( lphl->ItemsCount )
|
||||
|
@ -1780,7 +1780,7 @@ static LONG LBSetCaretIndex(HWND hwnd, WORD wParam, LONG lParam)
|
|||
|
||||
if (!(lphl->dwStyle & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL) )) return 0;
|
||||
|
||||
dprintf_listbox(stddeb,"LBSetCaretIndex: hwnd "NPFMT" n=%i\n",hwnd,wParam);
|
||||
dprintf_listbox(stddeb,"LBSetCaretIndex: hwnd %04x n=%i\n",hwnd,wParam);
|
||||
|
||||
if (wParam >= lphl->ItemsCount) return LB_ERR;
|
||||
|
||||
|
@ -1946,9 +1946,9 @@ static LRESULT LBPassToParent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||
WND* ptrWnd = WIN_FindWndPtr(hwnd);
|
||||
|
||||
if( ptrWnd )
|
||||
if( /* !(ptrWnd->dwExStyle & WS_EX_NOPARENTNOTIFY) && */
|
||||
ptrWnd->hwndParent )
|
||||
return SendMessage(ptrWnd->hwndParent,message,wParam,lParam);
|
||||
if( /* !(ptrWnd->dwExStyle & WS_EX_NOPARENTNOTIFY) && */
|
||||
ptrWnd->parent )
|
||||
return SendMessage(ptrWnd->parent->hwndSelf,message,wParam,lParam);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2044,8 +2044,7 @@ BOOL DlgDirSelect( HWND hDlg, LPSTR lpStr, INT id )
|
|||
char buffer[20];
|
||||
INT i;
|
||||
|
||||
dprintf_listbox( stddeb, "DlgDirSelect: "NPFMT" '%s' %d\n",
|
||||
hDlg, lpStr, id );
|
||||
dprintf_listbox( stddeb, "DlgDirSelect: %04x '%s' %d\n", hDlg, lpStr, id );
|
||||
if ((i = SendDlgItemMessage( hDlg, id, LB_GETCURSEL, 0, 0 )) == LB_ERR)
|
||||
return FALSE;
|
||||
SendDlgItemMessage( hDlg, id, LB_GETTEXT, i, MAKE_SEGPTR(buffer) );
|
||||
|
@ -2083,7 +2082,7 @@ INT DlgDirList( HWND hDlg, SEGPTR spec, INT idLBox, INT idStatic, UINT attrib )
|
|||
((attrib & DDL_POSTMSGS) ? PostMessage( hwnd, msg, wparam, lparam ) \
|
||||
: SendMessage( hwnd, msg, wparam, lparam ))
|
||||
|
||||
dprintf_listbox( stddeb, "DlgDirList: "NPFMT" '%s' %d %d %04x\n",
|
||||
dprintf_listbox( stddeb, "DlgDirList: %04x '%s' %d %d %04x\n",
|
||||
hDlg, filespec ? filespec : "NULL",
|
||||
idLBox, idStatic, attrib );
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ static HMENU MENU_CopySysMenu(void)
|
|||
}
|
||||
menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(hMenu);
|
||||
menu->wFlags |= MF_SYSMENU | MF_POPUP;
|
||||
dprintf_menu(stddeb,"CopySysMenu hMenu="NPFMT" !\n", hMenu);
|
||||
dprintf_menu(stddeb,"CopySysMenu hMenu=%04x !\n", hMenu);
|
||||
return hMenu;
|
||||
}
|
||||
|
||||
|
@ -252,7 +252,7 @@ static UINT MENU_FindItemByKey( HWND hwndOwner, HMENU hmenu, UINT key )
|
|||
}
|
||||
#ifdef WINELIB32
|
||||
menuchar = SendMessage( hwndOwner, WM_MENUCHAR,
|
||||
MAKEWPARAM(key,menu->wFlags), (LPARAM)hmenu );
|
||||
MAKEWPARAM(key,menu->wFlags), hmenu );
|
||||
#else
|
||||
menuchar = SendMessage( hwndOwner, WM_MENUCHAR, key,
|
||||
MAKELONG( menu->wFlags, hmenu ) );
|
||||
|
@ -413,8 +413,8 @@ static void MENU_MenuBarCalcSize( HDC hdc, LPRECT lprect, LPPOPUPMENU lppop,
|
|||
|
||||
if ((lprect == NULL) || (lppop == NULL)) return;
|
||||
if (lppop->nItems == 0) return;
|
||||
dprintf_menu(stddeb,"MENU_MenuBarCalcSize left=%ld top=%ld right=%ld bottom=%ld !\n",
|
||||
(LONG)lprect->left, (LONG)lprect->top, (LONG)lprect->right, (LONG)lprect->bottom);
|
||||
dprintf_menu(stddeb,"MENU_MenuBarCalcSize left=%d top=%d right=%d bottom=%d\n",
|
||||
lprect->left, lprect->top, lprect->right, lprect->bottom);
|
||||
items = (MENUITEM *)USER_HEAP_LIN_ADDR( lppop->hItems );
|
||||
lppop->Width = lprect->right - lprect->left;
|
||||
lppop->Height = 0;
|
||||
|
@ -495,7 +495,7 @@ static void MENU_DrawMenuItem( HWND hwnd, HDC hdc, LPMENUITEM lpitem,
|
|||
dis.hwndItem = hwnd;
|
||||
dis.hDC = hdc;
|
||||
dis.rcItem = lpitem->rect;
|
||||
SendMessage( hwnd, WM_DRAWITEM, 0, MAKE_SEGPTR(&dis) );
|
||||
SendMessage( hwnd, WM_DRAWITEM, 0, (LPARAM)MAKE_SEGPTR(&dis) );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -655,7 +655,7 @@ UINT MENU_DrawMenuBar(HDC hDC, LPRECT lprect, HWND hwnd, BOOL suppress_draw)
|
|||
|
||||
lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR( (HMENU)wndPtr->wIDmenu );
|
||||
if (lppop == NULL || lprect == NULL) return SYSMETRICS_CYMENU;
|
||||
dprintf_menu(stddeb,"MENU_DrawMenuBar("NPFMT", %p, %p); !\n",
|
||||
dprintf_menu(stddeb,"MENU_DrawMenuBar(%04x, %p, %p); !\n",
|
||||
hDC, lprect, lppop);
|
||||
if (lppop->Height == 0) MENU_MenuBarCalcSize(hDC, lprect, lppop, hwnd);
|
||||
lprect->bottom = lprect->top + lppop->Height;
|
||||
|
@ -794,7 +794,7 @@ static void MENU_SelectItem( HWND hwndOwner, HMENU hmenu, UINT wIndex )
|
|||
/* FIX: Lost Info */
|
||||
else SendMessage( hwndOwner, WM_MENUSELECT,
|
||||
MAKEWPARAM( (DWORD)hmenu, lppop->wFlags | MF_MOUSESELECT),
|
||||
(LPARAM)hmenu );
|
||||
hmenu );
|
||||
#else
|
||||
else SendMessage( hwndOwner, WM_MENUSELECT, hmenu,
|
||||
MAKELONG( lppop->wFlags | MF_MOUSESELECT, hmenu ) );
|
||||
|
@ -920,7 +920,7 @@ static BOOL MENU_SetItemData( MENUITEM *item, UINT flags, UINT id, SEGPTR data)
|
|||
strcpy( (char *)USER_HEAP_LIN_ADDR( hText ), str );
|
||||
}
|
||||
}
|
||||
else if (flags & MF_BITMAP) item->hText = (HANDLE)(DWORD)data;
|
||||
else if (flags & MF_BITMAP) item->hText = (HANDLE)data;
|
||||
else if (flags & MF_OWNERDRAW) SET_OWNERDRAW_DATA( item, data );
|
||||
else item->hText = 0;
|
||||
|
||||
|
@ -945,7 +945,7 @@ static MENUITEM *MENU_InsertItem( HMENU hMenu, UINT pos, UINT flags )
|
|||
|
||||
if (!(menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu)))
|
||||
{
|
||||
dprintf_menu( stddeb, "MENU_InsertItem: "NPFMT" not a menu handle\n",
|
||||
dprintf_menu( stddeb, "MENU_InsertItem: %04x not a menu handle\n",
|
||||
hMenu );
|
||||
return NULL;
|
||||
}
|
||||
|
@ -969,7 +969,7 @@ static MENUITEM *MENU_InsertItem( HMENU hMenu, UINT pos, UINT flags )
|
|||
}
|
||||
if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu)))
|
||||
{
|
||||
dprintf_menu(stddeb,"MENU_InsertItem: "NPFMT" not a menu handle\n",
|
||||
dprintf_menu(stddeb,"MENU_InsertItem: %04x not a menu handle\n",
|
||||
hMenu);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1670,7 +1670,7 @@ LRESULT PopupMenuWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
|
|||
CREATESTRUCT *createStruct = (CREATESTRUCT*)PTR_SEG_TO_LIN(lParam);
|
||||
#ifdef WINELIB32
|
||||
HMENU hmenu = (HMENU) (createStruct->lpCreateParams);
|
||||
SetWindowLong( hwnd, 0, (LONG)hmenu );
|
||||
SetWindowLong( hwnd, 0, hmenu );
|
||||
#else
|
||||
HMENU hmenu = (HMENU) ((int)createStruct->lpCreateParams & 0xffff);
|
||||
SetWindowWord( hwnd, 0, hmenu );
|
||||
|
@ -1731,8 +1731,8 @@ UINT MENU_GetMenuBarHeight( HWND hwnd, UINT menubarWidth, int orgX, int orgY )
|
|||
*/
|
||||
BOOL ChangeMenu( HMENU hMenu, UINT pos, SEGPTR data, UINT id, UINT flags )
|
||||
{
|
||||
dprintf_menu( stddeb,"ChangeMenu: menu="NPFMT" pos=%d data=%08lx id=%04x flags=%04x\n",
|
||||
hMenu, pos, data, id, flags );
|
||||
dprintf_menu( stddeb,"ChangeMenu: menu=%04x pos=%d data=%08lx id=%04x flags=%04x\n",
|
||||
hMenu, pos, (DWORD)data, id, flags );
|
||||
if (flags & MF_APPEND)
|
||||
{
|
||||
return AppendMenu( hMenu, flags & ~MF_APPEND, id, data );
|
||||
|
@ -1766,8 +1766,7 @@ INT CheckMenuItem( HMENU hMenu, UINT id, UINT flags )
|
|||
MENUITEM *item;
|
||||
INT ret;
|
||||
|
||||
dprintf_menu( stddeb,"CheckMenuItem: "NPFMT" %04x %04x\n",
|
||||
hMenu, id, flags );
|
||||
dprintf_menu( stddeb,"CheckMenuItem: %04x %04x %04x\n", hMenu, id, flags );
|
||||
if (!(item = MENU_FindItem( &hMenu, &id, flags ))) return -1;
|
||||
ret = item->item_flags & MF_CHECKED;
|
||||
if (flags & MF_CHECKED) item->item_flags |= MF_CHECKED;
|
||||
|
@ -1782,7 +1781,7 @@ INT CheckMenuItem( HMENU hMenu, UINT id, UINT flags )
|
|||
BOOL EnableMenuItem(HMENU hMenu, UINT wItemID, UINT wFlags)
|
||||
{
|
||||
LPMENUITEM lpitem;
|
||||
dprintf_menu(stddeb,"EnableMenuItem ("NPFMT", %04X, %04X) !\n",
|
||||
dprintf_menu(stddeb,"EnableMenuItem (%04x, %04X, %04X) !\n",
|
||||
hMenu, wItemID, wFlags);
|
||||
if (!(lpitem = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return FALSE;
|
||||
|
||||
|
@ -1811,7 +1810,7 @@ int GetMenuString( HMENU hMenu, UINT wItemID,
|
|||
{
|
||||
LPMENUITEM lpitem;
|
||||
|
||||
dprintf_menu( stddeb, "GetMenuString: menu="NPFMT" item=%04x ptr=%p len=%d flags=%04x\n",
|
||||
dprintf_menu( stddeb, "GetMenuString: menu=%04x item=%04x ptr=%p len=%d flags=%04x\n",
|
||||
hMenu, wItemID, str, nMaxSiz, wFlags );
|
||||
if (!str || !nMaxSiz) return 0;
|
||||
str[0] = '\0';
|
||||
|
@ -1830,8 +1829,8 @@ BOOL HiliteMenuItem(HWND hWnd, HMENU hMenu, UINT wItemID, UINT wHilite)
|
|||
{
|
||||
LPPOPUPMENU menu;
|
||||
LPMENUITEM lpitem;
|
||||
dprintf_menu(stddeb,"HiliteMenuItem("NPFMT", "NPFMT", %04X, %04X);\n",
|
||||
hWnd, hMenu, wItemID, wHilite);
|
||||
dprintf_menu(stddeb,"HiliteMenuItem(%04x, %04x, %04x, %04x);\n",
|
||||
hWnd, hMenu, wItemID, wHilite);
|
||||
if (!(lpitem = MENU_FindItem( &hMenu, &wItemID, wHilite ))) return FALSE;
|
||||
if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return FALSE;
|
||||
if (menu->FocusedItem == wItemID) return TRUE;
|
||||
|
@ -1847,7 +1846,7 @@ BOOL HiliteMenuItem(HWND hWnd, HMENU hMenu, UINT wItemID, UINT wHilite)
|
|||
UINT GetMenuState(HMENU hMenu, UINT wItemID, UINT wFlags)
|
||||
{
|
||||
LPMENUITEM lpitem;
|
||||
dprintf_menu(stddeb,"GetMenuState("NPFMT", %04X, %04X);\n",
|
||||
dprintf_menu(stddeb,"GetMenuState(%04x, %04x, %04x);\n",
|
||||
hMenu, wItemID, wFlags);
|
||||
if (!(lpitem = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return -1;
|
||||
if (lpitem->item_flags & MF_POPUP)
|
||||
|
@ -1866,10 +1865,10 @@ UINT GetMenuState(HMENU hMenu, UINT wItemID, UINT wFlags)
|
|||
INT GetMenuItemCount(HMENU hMenu)
|
||||
{
|
||||
LPPOPUPMENU menu;
|
||||
dprintf_menu(stddeb,"GetMenuItemCount("NPFMT");\n", hMenu);
|
||||
dprintf_menu(stddeb,"GetMenuItemCount(%04x);\n", hMenu);
|
||||
menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
|
||||
if (menu == NULL) return (UINT)-1;
|
||||
dprintf_menu(stddeb,"GetMenuItemCount("NPFMT") return %d \n",
|
||||
dprintf_menu(stddeb,"GetMenuItemCount(%04x) return %d \n",
|
||||
hMenu, menu->nItems);
|
||||
return menu->nItems;
|
||||
}
|
||||
|
@ -1883,7 +1882,7 @@ UINT GetMenuItemID(HMENU hMenu, int nPos)
|
|||
LPPOPUPMENU menu;
|
||||
MENUITEM *item;
|
||||
|
||||
dprintf_menu(stddeb,"GetMenuItemID("NPFMT", %d);\n", hMenu, nPos);
|
||||
dprintf_menu(stddeb,"GetMenuItemID(%04x, %d);\n", hMenu, nPos);
|
||||
if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return -1;
|
||||
if ((nPos < 0) || (nPos >= menu->nItems)) return -1;
|
||||
item = (MENUITEM *) USER_HEAP_LIN_ADDR( menu->hItems );
|
||||
|
@ -1900,9 +1899,9 @@ BOOL InsertMenu( HMENU hMenu, UINT pos, UINT flags, UINT id, SEGPTR data )
|
|||
MENUITEM *item;
|
||||
|
||||
if (IS_STRING_ITEM(flags) && data)
|
||||
dprintf_menu( stddeb, "InsertMenu: "NPFMT" %d %04x %04x '%s'\n",
|
||||
dprintf_menu( stddeb, "InsertMenu: %04x %d %04x %04x '%s'\n",
|
||||
hMenu, pos, flags, id, (char *)PTR_SEG_TO_LIN(data) );
|
||||
else dprintf_menu( stddeb, "InsertMenu: "NPFMT" %d %04x %04x %08lx\n",
|
||||
else dprintf_menu( stddeb, "InsertMenu: %04x %d %04x %04x %08lx\n",
|
||||
hMenu, pos, flags, id, (DWORD)data );
|
||||
|
||||
if (!(item = MENU_InsertItem( hMenu, pos, flags ))) return FALSE;
|
||||
|
@ -1938,7 +1937,7 @@ BOOL RemoveMenu(HMENU hMenu, UINT nPos, UINT wFlags)
|
|||
{
|
||||
LPPOPUPMENU menu;
|
||||
LPMENUITEM lpitem;
|
||||
dprintf_menu(stddeb,"RemoveMenu ("NPFMT", %04X, %04X) !\n",
|
||||
dprintf_menu(stddeb,"RemoveMenu (%04x, %04x, %04x) !\n",
|
||||
hMenu, nPos, wFlags);
|
||||
if (!(lpitem = MENU_FindItem( &hMenu, &nPos, wFlags ))) return FALSE;
|
||||
if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return FALSE;
|
||||
|
@ -1990,13 +1989,13 @@ BOOL ModifyMenu( HMENU hMenu, UINT pos, UINT flags, UINT id, SEGPTR data )
|
|||
|
||||
if (IS_STRING_ITEM(flags))
|
||||
{
|
||||
dprintf_menu( stddeb, "ModifyMenu: "NPFMT" %d %04x %04x '%s'\n",
|
||||
dprintf_menu( stddeb, "ModifyMenu: %04x %d %04x %04x '%s'\n",
|
||||
hMenu, pos, flags, id,
|
||||
data ? (char *)PTR_SEG_TO_LIN(data) : "#NULL#");
|
||||
if (!data) return FALSE;
|
||||
}
|
||||
else
|
||||
dprintf_menu( stddeb, "ModifyMenu: "NPFMT" %d %04x %04x %08lx\n",
|
||||
dprintf_menu( stddeb, "ModifyMenu: %04x %d %04x %04x %08lx\n",
|
||||
hMenu, pos, flags, id, (DWORD)data );
|
||||
if (!(item = MENU_FindItem( &hMenu, &pos, flags ))) return FALSE;
|
||||
|
||||
|
@ -2032,11 +2031,11 @@ DWORD GetMenuCheckMarkDimensions()
|
|||
* SetMenuItemBitmaps [USER.418]
|
||||
*/
|
||||
BOOL SetMenuItemBitmaps(HMENU hMenu, UINT nPos, UINT wFlags,
|
||||
HBITMAP hNewUnCheck, HBITMAP hNewCheck)
|
||||
HBITMAP hNewUnCheck, HBITMAP hNewCheck)
|
||||
{
|
||||
LPMENUITEM lpitem;
|
||||
dprintf_menu(stddeb,"SetMenuItemBitmaps ("NPFMT", %04X, %04X, "NPFMT", %08lX) !\n",
|
||||
hMenu, nPos, wFlags, hNewCheck, (DWORD)hNewUnCheck);
|
||||
dprintf_menu(stddeb,"SetMenuItemBitmaps(%04x, %04x, %04x, %04x, %04x)\n",
|
||||
hMenu, nPos, wFlags, hNewCheck, hNewUnCheck);
|
||||
if (!(lpitem = MENU_FindItem( &hMenu, &nPos, wFlags ))) return FALSE;
|
||||
|
||||
if (!hNewCheck && !hNewUnCheck)
|
||||
|
@ -2077,7 +2076,7 @@ HMENU CreateMenu()
|
|||
menu->hWnd = 0;
|
||||
menu->hItems = 0;
|
||||
menu->FocusedItem = NO_SELECTED_ITEM;
|
||||
dprintf_menu(stddeb,"CreateMenu // return "NPFMT"\n", hMenu);
|
||||
dprintf_menu(stddeb,"CreateMenu // return %04x\n", hMenu);
|
||||
return hMenu;
|
||||
}
|
||||
|
||||
|
@ -2088,7 +2087,7 @@ HMENU CreateMenu()
|
|||
BOOL DestroyMenu(HMENU hMenu)
|
||||
{
|
||||
LPPOPUPMENU lppop;
|
||||
dprintf_menu(stddeb,"DestroyMenu ("NPFMT") !\n", hMenu);
|
||||
dprintf_menu(stddeb,"DestroyMenu (%04x) !\n", hMenu);
|
||||
if (hMenu == 0) return FALSE;
|
||||
lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
|
||||
if (!lppop || (lppop->wMagic != MENU_MAGIC)) return FALSE;
|
||||
|
@ -2110,7 +2109,7 @@ BOOL DestroyMenu(HMENU hMenu)
|
|||
USER_HEAP_FREE( lppop->hItems );
|
||||
}
|
||||
USER_HEAP_FREE( hMenu );
|
||||
dprintf_menu(stddeb,"DestroyMenu ("NPFMT") // End !\n", hMenu);
|
||||
dprintf_menu(stddeb,"DestroyMenu (%04x) // End !\n", hMenu);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -2162,18 +2161,18 @@ BOOL SetMenu(HWND hWnd, HMENU hMenu)
|
|||
LPPOPUPMENU lpmenu;
|
||||
WND * wndPtr = WIN_FindWndPtr(hWnd);
|
||||
if (wndPtr == NULL) {
|
||||
fprintf(stderr,"SetMenu("NPFMT", "NPFMT") // Bad window handle !\n",
|
||||
fprintf(stderr,"SetMenu(%04x, %04x) // Bad window handle !\n",
|
||||
hWnd, hMenu);
|
||||
return FALSE;
|
||||
}
|
||||
dprintf_menu(stddeb,"SetMenu("NPFMT", "NPFMT");\n", hWnd, hMenu);
|
||||
dprintf_menu(stddeb,"SetMenu(%04x, %04x);\n", hWnd, hMenu);
|
||||
if (GetCapture() == hWnd) ReleaseCapture();
|
||||
wndPtr->wIDmenu = (UINT)hMenu;
|
||||
if (hMenu != 0)
|
||||
{
|
||||
lpmenu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
|
||||
if (lpmenu == NULL) {
|
||||
fprintf(stderr,"SetMenu("NPFMT", "NPFMT") // Bad menu handle !\n",
|
||||
fprintf(stderr,"SetMenu(%04x, %04x) // Bad menu handle !\n",
|
||||
hWnd, hMenu);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -2195,7 +2194,7 @@ HMENU GetSubMenu(HMENU hMenu, short nPos)
|
|||
{
|
||||
LPPOPUPMENU lppop;
|
||||
LPMENUITEM lpitem;
|
||||
dprintf_menu(stddeb,"GetSubMenu ("NPFMT", %04X) !\n", hMenu, nPos);
|
||||
dprintf_menu(stddeb,"GetSubMenu (%04x, %04X) !\n", hMenu, nPos);
|
||||
if (!(lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return 0;
|
||||
if ((UINT)nPos >= lppop->nItems) return 0;
|
||||
lpitem = (MENUITEM *) USER_HEAP_LIN_ADDR( lppop->hItems );
|
||||
|
@ -2211,7 +2210,7 @@ void DrawMenuBar(HWND hWnd)
|
|||
{
|
||||
WND *wndPtr;
|
||||
LPPOPUPMENU lppop;
|
||||
dprintf_menu(stddeb,"DrawMenuBar ("NPFMT")\n", hWnd);
|
||||
dprintf_menu(stddeb,"DrawMenuBar (%04x)\n", hWnd);
|
||||
wndPtr = WIN_FindWndPtr(hWnd);
|
||||
if (wndPtr != NULL && (wndPtr->dwStyle & WS_CHILD) == 0 &&
|
||||
wndPtr->wIDmenu != 0) {
|
||||
|
@ -2259,11 +2258,11 @@ HMENU LoadMenu( HINSTANCE instance, SEGPTR name )
|
|||
if (HIWORD(name))
|
||||
{
|
||||
char *str = (char *)PTR_SEG_TO_LIN( name );
|
||||
dprintf_menu( stddeb, "LoadMenu("NPFMT",'%s')\n", instance, str );
|
||||
dprintf_menu( stddeb, "LoadMenu(%04x,'%s')\n", instance, str );
|
||||
if (str[0] == '#') name = (SEGPTR)atoi( str + 1 );
|
||||
}
|
||||
else
|
||||
dprintf_resource(stddeb,"LoadMenu("NPFMT",%04x)\n",instance,LOWORD(name));
|
||||
dprintf_resource(stddeb,"LoadMenu(%04x,%04x)\n",instance,LOWORD(name));
|
||||
|
||||
if (!name) return 0;
|
||||
|
||||
|
|
|
@ -358,9 +358,8 @@ static void SCROLL_DrawInterior( HWND hwnd, HDC hdc, int nBar, RECT *rect,
|
|||
if (nBar == SB_CTL) /* Only scrollbar controls send WM_CTLCOLOR */
|
||||
{
|
||||
#ifdef WINELIB32
|
||||
HBRUSH hbrush = (HBRUSH)SendMessage( GetParent(hwnd),
|
||||
WM_CTLCOLORSCROLLBAR,
|
||||
(WPARAM)hdc, (LPARAM)hwnd );
|
||||
HBRUSH hbrush = SendMessage( GetParent(hwnd), WM_CTLCOLORSCROLLBAR,
|
||||
hdc, hwnd );
|
||||
#else
|
||||
HBRUSH hbrush = SendMessage( GetParent(hwnd), WM_CTLCOLOR, hdc,
|
||||
MAKELONG(hwnd, CTLCOLOR_SCROLLBAR) );
|
||||
|
@ -505,7 +504,7 @@ static void SCROLL_RefreshScrollBar( HWND hwnd, int nBar )
|
|||
static void SCROLL_HandleKbdEvent( HWND hwnd, WORD wParam )
|
||||
{
|
||||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
WORD msg;
|
||||
WPARAM msg;
|
||||
|
||||
switch(wParam)
|
||||
{
|
||||
|
@ -521,7 +520,7 @@ static void SCROLL_HandleKbdEvent( HWND hwnd, WORD wParam )
|
|||
#ifdef WINELIB32
|
||||
SendMessage( GetParent(hwnd),
|
||||
(wndPtr->dwStyle & SBS_VERT) ? WM_VSCROLL : WM_HSCROLL,
|
||||
(WPARAM)msg, (LPARAM)hwnd );
|
||||
msg, hwnd );
|
||||
#else
|
||||
SendMessage( GetParent(hwnd),
|
||||
(wndPtr->dwStyle & SBS_VERT) ? WM_VSCROLL : WM_HSCROLL,
|
||||
|
@ -598,8 +597,8 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
return; /* Should never happen */
|
||||
}
|
||||
|
||||
dprintf_scroll( stddeb, "ScrollBar Event: hwnd="NPFMT" bar=%d msg=%x pt=%ld,%ld hit=%d\n",
|
||||
hwnd, nBar, msg, (LONG)pt.x, (LONG)pt.y, hittest );
|
||||
dprintf_scroll( stddeb, "ScrollBar Event: hwnd=%04x bar=%d msg=%x pt=%d,%d hit=%d\n",
|
||||
hwnd, nBar, msg, pt.x, pt.y, hittest );
|
||||
|
||||
switch(trackHitTest)
|
||||
{
|
||||
|
@ -615,7 +614,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
{
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
(WPARAM)SB_LINEUP, (LPARAM)hwndCtl );
|
||||
SB_LINEUP, hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_LINEUP, MAKELONG( 0, hwndCtl ));
|
||||
|
@ -638,7 +637,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
{
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
(WPARAM)SB_PAGEUP, (LPARAM)hwndCtl );
|
||||
SB_PAGEUP, hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_PAGEUP, MAKELONG( 0, hwndCtl ));
|
||||
|
@ -682,7 +681,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
uTrackingPos = trackThumbPos + pos - lastClickPos;
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
MAKEWPARAM(SB_THUMBTRACK,val), (LPARAM)hwndCtl );
|
||||
MAKEWPARAM(SB_THUMBTRACK,val), hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_THUMBTRACK, MAKELONG( val, hwndCtl ));
|
||||
|
@ -703,7 +702,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
{
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
(WPARAM)SB_PAGEDOWN, (LPARAM)hwndCtl );
|
||||
SB_PAGEDOWN, hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_PAGEDOWN, MAKELONG( 0, hwndCtl ));
|
||||
|
@ -725,7 +724,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
{
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
(WPARAM)SB_LINEDOWN, (LPARAM)hwndCtl );
|
||||
SB_LINEDOWN, hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_LINEDOWN, MAKELONG( 0, hwndCtl ));
|
||||
|
@ -747,7 +746,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
trackThumbPos + lastMousePos - lastClickPos );
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
MAKEWPARAM(SB_THUMBPOSITION,val), (LPARAM)hwndCtl );
|
||||
MAKEWPARAM(SB_THUMBPOSITION,val), hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_THUMBPOSITION, MAKELONG( val, hwndCtl ) );
|
||||
|
@ -756,7 +755,7 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
|
|||
else
|
||||
#ifdef WINELIB32
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
(WPARAM)SB_ENDSCROLL, (LPARAM)hwndCtl );
|
||||
SB_ENDSCROLL, hwndCtl );
|
||||
#else
|
||||
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
|
||||
SB_ENDSCROLL, MAKELONG( 0, hwndCtl ) );
|
||||
|
@ -812,7 +811,7 @@ LONG ScrollBarWndProc( HWND hwnd, WORD message, WORD wParam, LONG lParam )
|
|||
}
|
||||
}
|
||||
if (!hUpArrow) SCROLL_LoadBitmaps();
|
||||
dprintf_scroll( stddeb, "ScrollBar creation, hwnd="NPFMT"\n", hwnd );
|
||||
dprintf_scroll( stddeb, "ScrollBar creation, hwnd=%04x\n", hwnd );
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
|
@ -898,7 +897,7 @@ void SetScrollRange(HWND hwnd, int nBar, int MinVal, int MaxVal, BOOL bRedraw)
|
|||
|
||||
if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) return;
|
||||
|
||||
dprintf_scroll( stddeb,"SetScrollRange hwnd="NPFMT" bar=%d min=%d max=%d\n",
|
||||
dprintf_scroll( stddeb,"SetScrollRange hwnd=%04x bar=%d min=%d max=%d\n",
|
||||
hwnd, nBar, MinVal, MaxVal );
|
||||
|
||||
/* Invalid range -> range is set to (0,0) */
|
||||
|
@ -936,7 +935,7 @@ void ShowScrollBar( HWND hwnd, WORD wBar, BOOL fShow )
|
|||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
|
||||
if (!wndPtr) return;
|
||||
dprintf_scroll( stddeb, "ShowScrollBar: hwnd="NPFMT" bar=%d on=%d\n", hwnd, wBar, fShow );
|
||||
dprintf_scroll( stddeb, "ShowScrollBar: hwnd=%04x bar=%d on=%d\n", hwnd, wBar, fShow );
|
||||
|
||||
switch(wBar)
|
||||
{
|
||||
|
@ -1002,7 +1001,7 @@ BOOL EnableScrollBar( HWND hwnd, UINT nBar, UINT flags )
|
|||
HDC hdc;
|
||||
|
||||
if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) return FALSE;
|
||||
dprintf_scroll( stddeb, "EnableScrollBar: "NPFMT" %d %d\n", hwnd, nBar, flags );
|
||||
dprintf_scroll( stddeb, "EnableScrollBar: %04x %d %d\n", hwnd, nBar, flags );
|
||||
flags &= ESB_DISABLE_BOTH;
|
||||
if (infoPtr->flags == flags) return FALSE;
|
||||
infoPtr->flags = flags;
|
||||
|
|
|
@ -91,9 +91,9 @@ LONG StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
if (createStruct->lpszName)
|
||||
{
|
||||
HICON hicon = LoadIcon( createStruct->hInstance,
|
||||
(SEGPTR)createStruct->lpszName );
|
||||
createStruct->lpszName );
|
||||
if (!hicon) /* Try OEM icon (FIXME: is this right?) */
|
||||
hicon = LoadIcon( 0, (SEGPTR)createStruct->lpszName );
|
||||
hicon = LoadIcon( 0, createStruct->lpszName );
|
||||
STATIC_SetIcon( hWnd, hicon );
|
||||
}
|
||||
return 1;
|
||||
|
@ -159,7 +159,7 @@ LONG StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
|
||||
case WM_GETFONT:
|
||||
return (LONG)infoPtr->hFont;
|
||||
return infoPtr->hFont;
|
||||
|
||||
case WM_NCHITTEST:
|
||||
return HTTRANSPARENT;
|
||||
|
@ -168,10 +168,10 @@ LONG StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return DLGC_STATIC;
|
||||
|
||||
case STM_GETICON:
|
||||
return (LONG)infoPtr->hIcon;
|
||||
return infoPtr->hIcon;
|
||||
|
||||
case STM_SETICON:
|
||||
lResult = (LONG)STATIC_SetIcon( hWnd, (HICON)wParam );
|
||||
lResult = STATIC_SetIcon( hWnd, (HICON)wParam );
|
||||
InvalidateRect( hWnd, NULL, FALSE );
|
||||
UpdateWindow( hWnd );
|
||||
break;
|
||||
|
@ -230,16 +230,14 @@ static void PaintTextfn( HWND hwnd, HDC hdc )
|
|||
|
||||
if (infoPtr->hFont) SelectObject( hdc, infoPtr->hFont );
|
||||
#ifdef WINELIB32
|
||||
hBrush = (HBRUSH)SendMessage( wndPtr->hwndParent, WM_CTLCOLORSTATIC,
|
||||
(WPARAM)hdc, (LPARAM)hwnd );
|
||||
hBrush = SendMessage( GetParent(hwnd), WM_CTLCOLORSTATIC, hdc, hwnd );
|
||||
#else
|
||||
hBrush = SendMessage( wndPtr->hwndParent, WM_CTLCOLOR, (WORD)hdc,
|
||||
hBrush = SendMessage( GetParent(hwnd), WM_CTLCOLOR, (WORD)hdc,
|
||||
MAKELONG(hwnd, CTLCOLOR_STATIC));
|
||||
#endif
|
||||
if (hBrush == (HBRUSH)NULL) hBrush = GetStockObject(WHITE_BRUSH);
|
||||
if (!hBrush) hBrush = GetStockObject(WHITE_BRUSH);
|
||||
FillRect(hdc, &rc, hBrush);
|
||||
if (text)
|
||||
DrawText(hdc, text, -1, &rc, wFormat);
|
||||
if (text) DrawText( hdc, text, -1, &rc, wFormat );
|
||||
}
|
||||
|
||||
static void PaintRectfn( HWND hwnd, HDC hdc )
|
||||
|
@ -293,10 +291,9 @@ static void PaintIconfn( HWND hwnd, HDC hdc )
|
|||
|
||||
GetClientRect(hwnd, &rc);
|
||||
#ifdef WINELIB32
|
||||
hbrush = (HBRUSH)SendMessage( wndPtr->hwndParent, WM_CTLCOLORSTATIC,
|
||||
(WPARAM)hdc, (LPARAM)hwnd );
|
||||
hbrush = SendMessage( GetParent(hwnd), WM_CTLCOLORSTATIC, hdc, hwnd );
|
||||
#else
|
||||
hbrush = SendMessage( wndPtr->hwndParent, WM_CTLCOLOR, hdc,
|
||||
hbrush = SendMessage( GetParent(hwnd), WM_CTLCOLOR, hdc,
|
||||
MAKELONG(hwnd, CTLCOLOR_STATIC));
|
||||
#endif
|
||||
FillRect( hdc, &rc, hbrush );
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
Winsock
|
||||
|
||||
Platform 1.
|
||||
Windows NT 3.51, build 1057, Service Pack 2
|
||||
|
||||
Platform 2.
|
||||
Windows 3.1 with Trumpet Sockets (2.1f)
|
||||
|
||||
Testing
|
||||
-------
|
||||
Testing was done using the Windows Sockets API Tester (WSAT), available
|
||||
from rhino.microsoft.com/wsat/wsat594.exe. I found a number of tests that
|
||||
would not run under Wine, some that failed under Trumpet, and others under
|
||||
NT. So, I decided to use tests that at least succeeded IN FULL on all the
|
||||
test platforms.
|
||||
|
||||
These are only the local tests.
|
||||
|
||||
Any program which makes use of the WSAAsync* calls, pretty much won't
|
||||
work. Other program which work correctly will work ... mostly. Programs
|
||||
which are incorrect, will probably crash and burn fairly quickly.
|
||||
|
||||
I have tried to make WINESockets as close as possible to Trumpet's.
|
||||
|
||||
The numbers in brackets next to each platform indicate how many tests failed,
|
||||
the numbers listed on the variations line are the test that failed.
|
||||
|
||||
Investigated
|
||||
============
|
||||
|
||||
BINDT.TST NT (00) Trumpet (10) Wine (10)
|
||||
BINDU.TST NT (00) Trumpet (10) Wine (10)
|
||||
HOST.TST NT (01) Trumpet (06) Wine (38)*3
|
||||
HOSTHOST.TST NT (01)*1 Trumpet (01)*1 Wine (00)
|
||||
HOSTNAME.TST NT (01) Trumpet (00) Wine (00)*2
|
||||
INET.TST NT (01) Trumpet (24)*1 Wine (01)
|
||||
IOCTLT.TST NT (00) Trumpet (00) Wine (06)
|
||||
IOCTLU.TST NT (00) Trumpet (00) Wine (04)
|
||||
PROTO.TST NT (00) Trumpet (00) Wine (41)*3
|
||||
SERV.TST NT (00) Trumpet (00) Wine (50)*3
|
||||
SOCKETT.TST NT (01) Trumpet (00) Wine (00)
|
||||
SOCKETU.TST NT (03) Trumpet (00) Wine (00)
|
||||
START.TST NT (00) Trumpet (00) Wine (08)*3
|
||||
STARTL.TST NT (00)*4 Trumpet (00) Wine (00)
|
||||
|
||||
STARTH.TST Wine crashed with two messages (from the program, methinks)
|
||||
indicating "FREE - HEAPBADNODE - bad node in head."
|
||||
|
||||
Unchecked
|
||||
=========
|
||||
ENOBUFST.TST ENOBUFSU.TST
|
||||
GETOPTT.TST GETOPTU.TST
|
||||
SETOPTT.TST SETOPTU.TST
|
||||
All the client/server tests
|
||||
|
||||
*1 errors in the NT and/or Trumpet were caused
|
||||
by a mistake I made while configuring this test.
|
||||
|
||||
*2 Wine passes these tests, because they aren't done
|
||||
correctly not because it does everything correctly.
|
||||
|
||||
*3 Wine crashed part way through the testing process,
|
||||
hence the large value of tests failed.
|
||||
|
||||
*4 NT actually supports Winsock 1.0 as well.
|
|
@ -1048,8 +1048,8 @@ WORD SetHandleCount( WORD count )
|
|||
{
|
||||
memcpy( pdb->fileHandles, files, 20 );
|
||||
#ifdef WINELIB
|
||||
GlobalFree( pdb->fileHandlesPtr );
|
||||
pdb->fileHandlesPtr = pdb->fileHandles;
|
||||
GlobalFree( (HGLOBAL)pdb->fileHandlesPtr );
|
||||
pdb->fileHandlesPtr = (SEGPTR)pdb->fileHandles;
|
||||
#else
|
||||
GlobalFree( GlobalHandle( SELECTOROF(pdb->fileHandlesPtr) ));
|
||||
pdb->fileHandlesPtr = (SEGPTR)MAKELONG( 0x18,
|
||||
|
@ -1075,7 +1075,7 @@ WORD SetHandleCount( WORD count )
|
|||
}
|
||||
else memcpy( newfiles, files, count );
|
||||
#ifdef WINELIB
|
||||
if (pdb->nbFiles > 20) GlobalFree( pdb->fileHandlesPtr );
|
||||
if (pdb->nbFiles > 20) GlobalFree( (HGLOBAL)pdb->fileHandlesPtr );
|
||||
#else
|
||||
if (pdb->nbFiles > 20)
|
||||
GlobalFree( GlobalHandle( SELECTOROF(pdb->fileHandlesPtr) ));
|
||||
|
|
|
@ -203,7 +203,7 @@ base 1
|
|||
0199 stub GetMetaFileW
|
||||
0200 stub GetMetaRgn
|
||||
0201 stub GetMiterLimit
|
||||
0202 stub GetNearestColor
|
||||
0202 stdcall GetNearestColor(long long) GetNearestColor
|
||||
0203 stub GetNearestPaletteIndex
|
||||
0204 stdcall GetObjectA(long long ptr) WIN32_GetObject
|
||||
0205 stub GetObjectType
|
||||
|
|
|
@ -71,7 +71,7 @@ base 1
|
|||
0067 stub DefineDosDeviceA
|
||||
0068 stub DefineDosDeviceW
|
||||
0069 stub DeleteAtom
|
||||
0070 stub DeleteCriticalSection
|
||||
0070 stdcall DeleteCriticalSection(ptr) DeleteCriticalSection
|
||||
0071 stub DeleteFileA
|
||||
0072 stub DeleteFileW
|
||||
0073 stub DeviceIoControl
|
||||
|
@ -82,7 +82,7 @@ base 1
|
|||
0078 stdcall DuplicateHandle(long long long ptr long long long) DuplicateHandle
|
||||
0079 stub EndUpdateResourceA
|
||||
0080 stub EndUpdateResourceW
|
||||
0081 stub EnterCriticalSection
|
||||
0081 stdcall EnterCriticalSection(ptr) EnterCriticalSection
|
||||
0082 stub EnumCalendarInfoA
|
||||
0083 stub EnumCalendarInfoW
|
||||
0084 stub EnumDateFormatsA
|
||||
|
@ -142,8 +142,8 @@ base 1
|
|||
0138 stub FormatMessageA
|
||||
0139 stub FormatMessageW
|
||||
0140 stub FreeConsole
|
||||
0141 stub FreeEnvironmentStringsA
|
||||
0142 stub FreeEnvironmentStringsW
|
||||
0141 stdcall FreeEnvironmentStringsA(ptr) FreeEnvironmentStringsA
|
||||
0142 stdcall FreeEnvironmentStringsW(ptr) FreeEnvironmentStringsW
|
||||
0143 stub FreeLibrary
|
||||
0144 stub FreeLibraryAndExitThread
|
||||
0145 stdcall FreeResource(long) FreeResource32
|
||||
|
@ -213,12 +213,12 @@ base 1
|
|||
0209 stub GetDriveTypeW
|
||||
0210 stdcall GetEnvironmentStrings() GetEnvironmentStrings
|
||||
0211 stub GetEnvironmentStringsA
|
||||
0212 stub GetEnvironmentStringsW
|
||||
0212 stdcall GetEnvironmentStringsW() GetEnvironmentStringsW
|
||||
0213 stdcall GetEnvironmentVariableA(ptr ptr long) GetEnvironmentVariableA
|
||||
0214 stub GetEnvironmentVariableW
|
||||
0215 stub GetExitCodeProcess
|
||||
0216 stub GetExitCodeThread
|
||||
0217 stub GetFileAttributesA
|
||||
0217 stdcall GetFileAttributesA(ptr) GetFileAttributesA
|
||||
0218 stub GetFileAttributesW
|
||||
0219 stdcall GetFileInformationByHandle(long ptr) GetFileInformationByHandle
|
||||
0220 stub GetFileSize
|
||||
|
@ -315,7 +315,7 @@ base 1
|
|||
0310 stub GetVolumeInformationW
|
||||
0311 stub GetWindowsDirectoryA
|
||||
0312 stub GetWindowsDirectoryW
|
||||
0313 stub GlobalAddAtomA
|
||||
0313 stdcall GlobalAddAtomA(long) WIN32_GlobalAddAtomA
|
||||
0314 stub GlobalAddAtomW
|
||||
0315 stdcall GlobalAlloc(long long) GlobalAlloc32
|
||||
0316 stub GlobalCompact
|
||||
|
@ -348,7 +348,7 @@ base 1
|
|||
0343 stub HeapValidate
|
||||
0344 stub HeapWalk
|
||||
0345 stub InitAtomTable
|
||||
0346 stub InitializeCriticalSection
|
||||
0346 stdcall InitializeCriticalSection(ptr) InitializeCriticalSection
|
||||
0347 stub InterlockedDecrement
|
||||
0348 stub InterlockedExchange
|
||||
0349 stub InterlockedIncrement
|
||||
|
@ -366,7 +366,7 @@ base 1
|
|||
0361 stub IsValidLocale
|
||||
0362 stub LCMapStringA
|
||||
0363 stub LCMapStringW
|
||||
0364 stub LeaveCriticalSection
|
||||
0364 stdcall LeaveCriticalSection(ptr) LeaveCriticalSection
|
||||
0365 stdcall LoadLibraryA(long) LoadLibraryA
|
||||
0366 stub LoadLibraryExA
|
||||
0367 stub LoadLibraryExW
|
||||
|
@ -532,10 +532,10 @@ base 1
|
|||
0527 stub SystemTimeToTzSpecificLocalTime
|
||||
0528 stub TerminateProcess
|
||||
0529 stub TerminateThread
|
||||
0530 stub TlsAlloc
|
||||
0531 stub TlsFree
|
||||
0532 stub TlsGetValue
|
||||
0533 stub TlsSetValue
|
||||
0530 stdcall TlsAlloc() TlsAlloc
|
||||
0531 stdcall TlsFree(long) TlsFree
|
||||
0532 stdcall TlsGetValue(long) TlsGetValue
|
||||
0533 stdcall TlsSetValue(long ptr) TlsSetValue
|
||||
0534 stub TransactNamedPipe
|
||||
0535 stub TransmitCommChar
|
||||
0536 stub TrimVirtualBuffer
|
||||
|
@ -567,7 +567,7 @@ base 1
|
|||
0562 stub WaitForSingleObjectEx
|
||||
0563 stub WaitNamedPipeA
|
||||
0564 stub WaitNamedPipeW
|
||||
0565 stub WideCharToMultiByte
|
||||
0565 stdcall WideCharToMultiByte(long long ptr long ptr long ptr ptr) WideCharToMultiByte
|
||||
0566 stub WinExec
|
||||
0567 stub WriteConsoleA
|
||||
0568 stub WriteConsoleInputA
|
||||
|
|
|
@ -366,13 +366,12 @@ base 1
|
|||
0355 stdcall LoadAcceleratorsW(long ptr) WIN32_LoadAcceleratorsW
|
||||
0356 stdcall LoadBitmapA(long ptr) WIN32_LoadBitmapA
|
||||
0357 stdcall LoadBitmapW(long ptr) WIN32_LoadBitmapW
|
||||
0357 stub LoadBitmapW
|
||||
0358 stdcall LoadCursorA(long ptr) LoadCursor
|
||||
0358 stdcall LoadCursorA(long ptr) WIN32_LoadCursorA
|
||||
0359 stub LoadCursorFromFileA
|
||||
0360 stub LoadCursorFromFileW
|
||||
0361 stub LoadCursorW
|
||||
0362 stdcall LoadIconA(long ptr) LoadIconA32
|
||||
0363 stdcall LoadIconW(long ptr) LoadIconW32
|
||||
0361 stdcall LoadCursorW(long ptr) WIN32_LoadCursorW
|
||||
0362 stdcall LoadIconA(long ptr) WIN32_LoadIconA
|
||||
0363 stdcall LoadIconW(long ptr) WIN32_LoadIconW
|
||||
0364 stub LoadImageA
|
||||
0365 stub LoadImageW
|
||||
0366 stub LoadKeyboardLayoutA
|
||||
|
|
|
@ -81,7 +81,7 @@ extern WORD CallTo16_regs_( FARPROC func, WORD ds, WORD es, WORD bp, WORD ax,
|
|||
#define CallEnumObjectsProc( func, lpobj, lParam ) \
|
||||
(*func)( lpobj, lParam )
|
||||
#define CallEnumPropProc( func, hwnd, lpstr, data ) \
|
||||
(*func)( hwnd, lpstr, data )
|
||||
(*func)( hwnd, (LPCTSTR)(lpstr), data )
|
||||
#define CallEnumTaskWndProc( func, hwnd, lParam ) \
|
||||
(*func)( hwnd, lParam )
|
||||
#define CallEnumWindowsProc( func, hwnd, lParam ) \
|
||||
|
|
|
@ -133,4 +133,14 @@ typedef struct
|
|||
#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x0200
|
||||
#define FILE_ATTRIBUTE_XACTION_WRITE 0x0400
|
||||
|
||||
/* Could this type be considered opaque? */
|
||||
typedef struct {
|
||||
LPVOID DebugInfo;
|
||||
LONG LockCount;
|
||||
LONG RecursionCount;
|
||||
HANDLE OwningThread;
|
||||
HANDLE LockSemaphore;
|
||||
DWORD Reserved;
|
||||
}CRITICAL_SECTION;
|
||||
|
||||
#endif /* __WINE_KERNEL32_H */
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
#define _STRUCT32_H
|
||||
#include "handle32.h"
|
||||
|
||||
#ifndef WINELIB
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
|
||||
typedef struct tagRECT32
|
||||
{
|
||||
LONG left;
|
||||
|
@ -45,21 +49,21 @@ void STRUCT32_MINMAXINFO16to32(const MINMAXINFO*,MINMAXINFO32*);
|
|||
typedef struct {
|
||||
DWORD style;
|
||||
DWORD dwExtendedStyle;
|
||||
WORD noOfItems;
|
||||
short x;
|
||||
short y;
|
||||
WORD cx;
|
||||
WORD cy;
|
||||
WORD noOfItems WINE_PACKED;
|
||||
short x WINE_PACKED;
|
||||
short y WINE_PACKED;
|
||||
WORD cx WINE_PACKED;
|
||||
WORD cy WINE_PACKED;
|
||||
} DLGTEMPLATE32;
|
||||
|
||||
typedef struct {
|
||||
DWORD style;
|
||||
DWORD dwExtendedStyle;
|
||||
short x;
|
||||
short y;
|
||||
short cx;
|
||||
short cy;
|
||||
WORD id;
|
||||
short x WINE_PACKED;
|
||||
short y WINE_PACKED;
|
||||
short cx WINE_PACKED;
|
||||
short cy WINE_PACKED;
|
||||
WORD id WINE_PACKED;
|
||||
} DLGITEMTEMPLATE32;
|
||||
|
||||
#define CW_USEDEFAULT32 0x80000000
|
||||
|
@ -132,4 +136,45 @@ typedef CREATESTRUCT32 CREATESTRUCTA;
|
|||
void STRUCT32_CREATESTRUCT32to16(const CREATESTRUCT32*,CREATESTRUCT*);
|
||||
void STRUCT32_CREATESTRUCT16to32(const CREATESTRUCT*,CREATESTRUCT32*);
|
||||
|
||||
typedef struct {
|
||||
BYTE bWidth;
|
||||
BYTE bHeight;
|
||||
BYTE bColorCount;
|
||||
BYTE bReserved;
|
||||
WORD wPlanes;
|
||||
WORD wBitCount;
|
||||
DWORD dwBytesInRes;
|
||||
WORD wResId WINE_PACKED;
|
||||
/*WORD padding; Spec is wrong, no padding here*/
|
||||
} ICONDIRENTRY32;
|
||||
|
||||
typedef struct {
|
||||
WORD wWidth;
|
||||
WORD wHeight;
|
||||
WORD wPlanes;
|
||||
WORD wBitCount;
|
||||
DWORD dwBytesInRes;
|
||||
WORD wResId WINE_PACKED;
|
||||
/*WORD padding;*/
|
||||
} CURSORDIRENTRY32;
|
||||
|
||||
typedef union{
|
||||
ICONDIRENTRY32 icon;
|
||||
CURSORDIRENTRY32 cursor;
|
||||
} CURSORICONDIRENTRY32;
|
||||
|
||||
typedef struct {
|
||||
WORD idReserved;
|
||||
WORD idType;
|
||||
WORD idCount;
|
||||
/*WORD padding;*/
|
||||
CURSORICONDIRENTRY32 idEntries[1];
|
||||
} CURSORICONDIR32;
|
||||
|
||||
|
||||
|
||||
#ifndef WINELIB
|
||||
#pragma pack(4)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,7 +20,8 @@ extern BOOL USER_HeapInit(void);
|
|||
#define USER_HEAP_LIN_ADDR(handle) LocalLock (handle)
|
||||
#define USER_HEAP_SEG_ADDR(handle) LocalLock (handle)
|
||||
#define USER_HEAP_FREE(handle) LocalFree (handle)
|
||||
#else
|
||||
|
||||
#else /* WINELIB */
|
||||
|
||||
extern LPSTR USER_Heap;
|
||||
extern WORD USER_HeapSel;
|
||||
|
|
|
@ -29,11 +29,12 @@
|
|||
|
||||
typedef struct tagWND
|
||||
{
|
||||
HWND hwndNext; /* Next sibling */
|
||||
HWND hwndChild; /* First child */
|
||||
struct tagWND *next; /* Next sibling */
|
||||
struct tagWND *child; /* First child */
|
||||
struct tagWND *parent; /* Window parent (from CreateWindow) */
|
||||
struct tagWND *owner; /* Window owner */
|
||||
DWORD dwMagic; /* Magic number (must be WND_MAGIC) */
|
||||
HWND hwndParent; /* Window parent (from CreateWindow) */
|
||||
HWND hwndOwner; /* Window owner */
|
||||
HWND hwndSelf; /* Handle of this window */
|
||||
HCLASS hClass; /* Window class */
|
||||
HANDLE hInstance; /* Window hInstance (from CreateWindow) */
|
||||
RECT rectClient; /* Client area rel. to parent client area */
|
||||
|
@ -75,6 +76,7 @@ typedef struct tagWND
|
|||
|
||||
/* Window functions */
|
||||
extern WND *WIN_FindWndPtr( HWND hwnd );
|
||||
extern WND *WIN_GetDesktop(void);
|
||||
extern void WIN_DumpWindow( HWND hwnd );
|
||||
extern void WIN_WalkWindows( HWND hwnd, int indent );
|
||||
extern Window WIN_GetXWindow( HWND hwnd );
|
||||
|
|
|
@ -9,10 +9,7 @@
|
|||
#pragma pack(1)
|
||||
#endif
|
||||
|
||||
#ifdef WINELIB32
|
||||
typedef struct { SHORT x,y; } POINTS;
|
||||
#define MAKEPOINTS(l) (*((POINTS *)&(l)))
|
||||
#else
|
||||
#ifndef WINELIB32
|
||||
#define MAKEPOINT(l) (*((POINT *)&(l)))
|
||||
#endif
|
||||
typedef struct { INT cx,cy; } SIZE, *LPSIZE;
|
||||
|
@ -541,11 +538,7 @@ typedef struct tagLOGBRUSH
|
|||
{
|
||||
WORD lbStyle;
|
||||
COLORREF lbColor WINE_PACKED;
|
||||
#ifdef WINELIB32
|
||||
LONG lbHatch;
|
||||
#else
|
||||
INT lbHatch;
|
||||
#endif
|
||||
INT lbHatch;
|
||||
} LOGBRUSH, *PLOGBRUSH, *NPLOGBRUSH, *LPLOGBRUSH;
|
||||
|
||||
/* Brush styles */
|
||||
|
@ -2801,7 +2794,7 @@ BOOL ExtFloodFill(HDC,INT,INT,COLORREF,WORD);
|
|||
BOOL ExtTextOut(HDC,short,short,WORD,LPRECT,LPSTR,WORD,LPINT);
|
||||
HICON ExtractIcon(HINSTANCE,LPCSTR,UINT);
|
||||
WORD FarGetOwner(HANDLE);
|
||||
void FarSetOwner(HANDLE,WORD);
|
||||
void FarSetOwner(HANDLE,HANDLE);
|
||||
void FatalAppExit(UINT,LPCSTR);
|
||||
void FatalExit(int);
|
||||
int FillRect(HDC,LPRECT,HBRUSH);
|
||||
|
|
|
@ -106,4 +106,13 @@
|
|||
#define NORM_IGNORESYMBOLS 4
|
||||
#define NORM_STRINGSORT 0x1000
|
||||
|
||||
#define CP_ACP 0
|
||||
#define CP_OEMCP 1
|
||||
|
||||
#define WC_DEFAULTCHECK 0x00000100
|
||||
#define WC_COMPOSITECHECK 0x00000200
|
||||
#define WC_DISCARDNS 0x00000010
|
||||
#define WC_SEPCHARS 0x00000020
|
||||
#define WC_DEFAULTCHAR 0x00000040
|
||||
|
||||
#endif /* __WINE_WINNLS_H */
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
* Copyright 1994 Alexandre Julliard
|
||||
*/
|
||||
|
||||
#ifndef WINPOS_H
|
||||
#define WINPOS_H
|
||||
#ifndef __WINE_WINPOS_H
|
||||
#define __WINE_WINPOS_H
|
||||
|
||||
#include "win.h"
|
||||
|
||||
#define DWP_MAGIC 0x5057 /* 'WP' */
|
||||
|
||||
|
@ -34,6 +36,6 @@ extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect,
|
|||
RECT *oldClientRect, WINDOWPOS *winpos,
|
||||
RECT *newClientRect );
|
||||
extern LONG WINPOS_HandleWindowPosChanging( WINDOWPOS *winpos );
|
||||
extern INT WINPOS_WindowFromPoint( POINT pt, HWND *phwnd );
|
||||
extern INT WINPOS_WindowFromPoint( POINT pt, WND **ppWnd );
|
||||
|
||||
#endif /* WINPOS_H */
|
||||
#endif /* __WINE_WINPOS_H */
|
||||
|
|
|
@ -31,31 +31,19 @@ typedef unsigned short WCHAR;
|
|||
#ifdef WINELIB32
|
||||
typedef int INT;
|
||||
typedef unsigned int UINT;
|
||||
typedef short SHORT;
|
||||
typedef LONG WPARAM;
|
||||
typedef void* HANDLE;
|
||||
typedef char TCHAR; /* Should probably eventually be unsigned short */
|
||||
typedef void* NPVOID;
|
||||
typedef void* SEGPTR;
|
||||
#define UIFMT "%u"
|
||||
#define NPFMT "%p"
|
||||
#define SPFMT "%p"
|
||||
|
||||
/* Should probably eventually be unsigned short, but not now */
|
||||
typedef char TCHAR;
|
||||
#else
|
||||
#else /* WINELIB32 */
|
||||
typedef short INT;
|
||||
typedef unsigned short UINT;
|
||||
typedef UINT WPARAM;
|
||||
typedef WORD HANDLE;
|
||||
typedef char TCHAR; /* TCHAR is just char in Win16 */
|
||||
typedef WORD NPVOID;
|
||||
typedef DWORD SEGPTR;
|
||||
#define UIFMT "%hu"
|
||||
#define NPFMT "%04x"
|
||||
#define SPFMT "%08lx"
|
||||
#endif /* WINELIB32 */
|
||||
|
||||
/* TCHAR is just char in Win16 */
|
||||
typedef char TCHAR;
|
||||
#endif
|
||||
typedef UINT HANDLE;
|
||||
typedef UINT WPARAM;
|
||||
typedef LONG LPARAM;
|
||||
typedef LONG LRESULT;
|
||||
typedef INT HFILE;
|
||||
|
|
|
@ -386,8 +386,7 @@ int DDE_GetRemoteMessage()
|
|||
struct msg_dat msg_dat;
|
||||
BOOL was_sent; /* sent/received */
|
||||
BOOL passed;
|
||||
HWND hwnd;
|
||||
WND *window;
|
||||
WND *wndPtr;
|
||||
|
||||
if (curr_proc_idx==-1) /* do we have DDE initialized ? */
|
||||
return 0;
|
||||
|
@ -476,16 +475,17 @@ int DDE_GetRemoteMessage()
|
|||
}
|
||||
|
||||
/* iterate through all the windows */
|
||||
for (hwnd = GetTopWindow(GetDesktopWindow());
|
||||
hwnd && (window = WIN_FindWndPtr(hwnd))!=NULL ;
|
||||
hwnd = window->hwndNext) {
|
||||
if (window->dwStyle & WS_POPUP || window->dwStyle & WS_CAPTION) {
|
||||
for (wndPtr = WIN_FindWndPtr(GetTopWindow(GetDesktopWindow()));
|
||||
wndPtr != NULL;
|
||||
wndPtr = wndPtr->next)
|
||||
{
|
||||
if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION) {
|
||||
if (was_sent)
|
||||
SendMessage( hwnd, remote_message->message,
|
||||
SendMessage( wndPtr->hwndSelf, remote_message->message,
|
||||
remote_message->wParam, remote_message->lParam );
|
||||
else
|
||||
PostMessage( hwnd, remote_message->message,
|
||||
remote_message->wParam, remote_message->lParam );
|
||||
PostMessage( wndPtr->hwndSelf, remote_message->message,
|
||||
remote_message->wParam, remote_message->lParam );
|
||||
} /* if */
|
||||
} /* for */
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ WND *WIN_FindWndPtr(HWND hwnd)
|
|||
printf("WIN_FindWndPtr(%d)\n",hwnd);
|
||||
if (hwnd==0)
|
||||
return NULL;
|
||||
win.hwndNext=0;
|
||||
win.next=NULL;
|
||||
win.dwStyle=WS_POPUP;
|
||||
|
||||
return &win;
|
||||
|
|
|
@ -222,7 +222,7 @@ HANDLE HEAP_Alloc (WORD flags, DWORD bytes)
|
|||
if (flags & LMEM_ZEROINIT) memset( m, 0, bytes );
|
||||
}
|
||||
m->Size=bytes-sizeof(HeapData);
|
||||
return m+1;
|
||||
return (HANDLE)(m+1);
|
||||
}
|
||||
|
||||
HANDLE HEAP_Free (HANDLE hMem)
|
||||
|
@ -253,7 +253,7 @@ HANDLE HEAP_ReAlloc(HANDLE hMem,DWORD bytes,UINT flags)
|
|||
if(flags & LMEM_ZEROINIT && bytes > m->Size)
|
||||
memset( (char*)m+sizeof(HeapData)+m->Size, 0, bytes-m->Size );
|
||||
m->Size=bytes;
|
||||
return m+1;
|
||||
return (HANDLE)(m+1);
|
||||
}
|
||||
|
||||
HANDLE LocalAlloc (WORD flags, WORD bytes)
|
||||
|
@ -278,7 +278,7 @@ BOOL LocalInit (HANDLE segment, WORD start, WORD end)
|
|||
|
||||
LPVOID LocalLock (HANDLE hMem)
|
||||
{
|
||||
return hMem;
|
||||
return (LPVOID)hMem;
|
||||
}
|
||||
|
||||
HANDLE LocalReAlloc (HANDLE hMem, WORD new_size, WORD flags)
|
||||
|
@ -311,7 +311,7 @@ HANDLE GlobalFree (HANDLE hMem)
|
|||
|
||||
LPVOID GlobalLock (HGLOBAL hMem)
|
||||
{
|
||||
return hMem;
|
||||
return (LPVOID)hMem;
|
||||
}
|
||||
|
||||
BOOL GlobalUnlock (HANDLE hMem)
|
||||
|
|
|
@ -92,7 +92,7 @@ HGLOBAL LIBRES_LoadResource( HINSTANCE hModule, HRSRC hRsrc )
|
|||
*/
|
||||
LPVOID LIBRES_LockResource( HGLOBAL handle )
|
||||
{
|
||||
return handle;
|
||||
return (LPVOID)handle;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ BOOL LOCAL_Unlock( WORD ds, HLOCAL handle )
|
|||
WORD LOCAL_Size( WORD ds, HLOCAL handle )
|
||||
{ return LocalSize(handle); }
|
||||
|
||||
void FarSetOwner(HANDLE a, WORD b)
|
||||
void FarSetOwner(HANDLE a, HANDLE b)
|
||||
{
|
||||
WINELIB_UNIMP("FarSetOwner()");
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <malloc.h>
|
||||
#include "windows.h"
|
||||
#include "wine.h"
|
||||
#include "xmalloc.h"
|
||||
|
||||
extern int MAIN_Init(void);
|
||||
extern BOOL WIDGETS_Init(void);
|
||||
|
@ -15,6 +16,16 @@ extern int USER_InitApp(HINSTANCE);
|
|||
int _WinMain (int argc, char *argv [])
|
||||
{
|
||||
HINSTANCE hInstance;
|
||||
LPSTR lpszCmdParam;
|
||||
int i, len = 0;
|
||||
|
||||
/* Alloc szCmdParam */
|
||||
for (i = 1; i < argc; i++) len += strlen(argv[i]) + 1;
|
||||
lpszCmdParam = (LPSTR) xmalloc(len + 1);
|
||||
/* Concatenate arguments */
|
||||
if (argc > 1) strcpy(lpszCmdParam, argv[1]);
|
||||
else lpszCmdParam[0] = '\0';
|
||||
for (i = 2; i < argc; i++) strcat(strcat(lpszCmdParam, " "), argv[i]);
|
||||
|
||||
if(!MAIN_Init()) return 0; /* JBP: Needed for DosDrives[] structure, etc. */
|
||||
hInstance = WinExec( *argv, SW_SHOWNORMAL );
|
||||
|
@ -29,7 +40,7 @@ int _WinMain (int argc, char *argv [])
|
|||
#else
|
||||
return WinMain (hInstance, /* hInstance */
|
||||
0, /* hPrevInstance */
|
||||
"", /* lpszCmdParam */
|
||||
lpszCmdParam, /* lpszCmdParam */
|
||||
SW_NORMAL); /* nCmdShow */
|
||||
#endif
|
||||
}
|
||||
|
|
136
loader/module.c
136
loader/module.c
|
@ -134,7 +134,7 @@ void MODULE_PrintModule( HMODULE hmodule )
|
|||
|
||||
/* Dump the module info */
|
||||
|
||||
printf( "Module "NPFMT":\n", hmodule );
|
||||
printf( "Module %04x:\n", hmodule );
|
||||
printf( "count=%d flags=%04x heap=%d stack=%d\n",
|
||||
pModule->count, pModule->flags,
|
||||
pModule->heap_size, pModule->stack_size );
|
||||
|
@ -154,7 +154,7 @@ void MODULE_PrintModule( HMODULE hmodule )
|
|||
printf( "\nSegment table:\n" );
|
||||
pSeg = NE_SEG_TABLE( pModule );
|
||||
for (i = 0; i < pModule->seg_count; i++, pSeg++)
|
||||
printf( "%02x: pos=%d size=%d flags=%04x minsize=%d sel="NPFMT"\n",
|
||||
printf( "%02x: pos=%d size=%d flags=%04x minsize=%d sel=%04x\n",
|
||||
i + 1, pSeg->filepos, pSeg->size, pSeg->flags,
|
||||
pSeg->minsize, pSeg->selector );
|
||||
|
||||
|
@ -264,7 +264,7 @@ int MODULE_OpenFile( HMODULE hModule )
|
|||
static int cachedfd = -1;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_module( stddeb, "MODULE_OpenFile("NPFMT") cache: mod="NPFMT" fd=%d\n",
|
||||
dprintf_module( stddeb, "MODULE_OpenFile(%04x) cache: mod=%04x fd=%d\n",
|
||||
hModule, hCachedModule, cachedfd );
|
||||
if (!(pModule = (NE_MODULE *)GlobalLock( hModule ))) return -1;
|
||||
if (hCachedModule == hModule) return cachedfd;
|
||||
|
@ -273,7 +273,7 @@ int MODULE_OpenFile( HMODULE hModule )
|
|||
name = NE_MODULE_NAME( pModule );
|
||||
if (!(unixName = DOSFS_GetUnixFileName( name, TRUE )) ||
|
||||
(cachedfd = open( unixName, O_RDONLY )) == -1)
|
||||
fprintf( stderr, "MODULE_OpenFile: can't open file '%s' for module "NPFMT"\n",
|
||||
fprintf( stderr, "MODULE_OpenFile: can't open file '%s' for module %04x\n",
|
||||
name, hModule );
|
||||
dprintf_module( stddeb, "MODULE_OpenFile: opened '%s' -> %d\n",
|
||||
name, cachedfd );
|
||||
|
@ -461,7 +461,7 @@ HMODULE MODULE_LoadExeHeader( HFILE hFile, OFSTRUCT *ofs )
|
|||
|
||||
hModule = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, size );
|
||||
if (!hModule) return (HMODULE)11; /* invalid exe */
|
||||
FarSetOwner( hModule, (WORD)(DWORD)hModule );
|
||||
FarSetOwner( hModule, hModule );
|
||||
pModule = (NE_MODULE *)GlobalLock( hModule );
|
||||
memcpy( pModule, &ne_header, sizeof(NE_MODULE) );
|
||||
pModule->count = 0;
|
||||
|
@ -609,7 +609,7 @@ WORD MODULE_GetOrdinal( HMODULE hModule, char *name )
|
|||
|
||||
if (!(pModule = (NE_MODULE *)GlobalLock( hModule ))) return 0;
|
||||
|
||||
dprintf_module( stddeb, "MODULE_GetOrdinal("NPFMT",'%s')\n",
|
||||
dprintf_module( stddeb, "MODULE_GetOrdinal(%04x,'%s')\n",
|
||||
hModule, name );
|
||||
|
||||
/* First handle names of the form '#xxxx' */
|
||||
|
@ -1162,11 +1162,7 @@ BOOL FreeModule( HANDLE hModule )
|
|||
*/
|
||||
HMODULE WIN16_GetModuleHandle( SEGPTR name )
|
||||
{
|
||||
#ifdef WINELIB32
|
||||
if (HIWORD(name) == 0) return GetExePtr( name );
|
||||
#else
|
||||
if (HIWORD(name) == 0) return GetExePtr( LOWORD(name) );
|
||||
#endif
|
||||
if (HIWORD(name) == 0) return GetExePtr( (HANDLE)name );
|
||||
return MODULE_FindModule( PTR_SEG_TO_LIN(name) );
|
||||
}
|
||||
|
||||
|
@ -1185,7 +1181,7 @@ int GetModuleUsage( HANDLE hModule )
|
|||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
if (!(pModule = (NE_MODULE *)GlobalLock( hModule ))) return 0;
|
||||
dprintf_module( stddeb, "GetModuleUsage("NPFMT"): returning %d\n",
|
||||
dprintf_module( stddeb, "GetModuleUsage(%04x): returning %d\n",
|
||||
hModule, pModule->count );
|
||||
return pModule->count;
|
||||
}
|
||||
|
@ -1243,7 +1239,7 @@ HANDLE LoadLibrary( LPCSTR libname )
|
|||
*/
|
||||
void FreeLibrary( HANDLE handle )
|
||||
{
|
||||
dprintf_module( stddeb,"FreeLibrary: "NPFMT"\n", handle );
|
||||
dprintf_module( stddeb,"FreeLibrary: %04x\n", handle );
|
||||
FreeModule( handle );
|
||||
}
|
||||
|
||||
|
@ -1258,6 +1254,7 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow )
|
|||
HANDLE handle;
|
||||
WORD *cmdShowPtr;
|
||||
char *p, *cmdline, filename[256];
|
||||
static int use_load_module = 1;
|
||||
|
||||
if (!(cmdShowHandle = GlobalAlloc( 0, 2 * sizeof(WORD) ))) return 0;
|
||||
if (!(cmdLineHandle = GlobalAlloc( 0, 256 ))) return 0;
|
||||
|
@ -1271,36 +1268,97 @@ HANDLE WinExec( LPSTR lpCmdLine, WORD nCmdShow )
|
|||
/* Build the filename and command-line */
|
||||
|
||||
cmdline = (char *)GlobalLock( cmdLineHandle );
|
||||
strncpy( filename, lpCmdLine, 256 );
|
||||
filename[255] = '\0';
|
||||
lstrcpyn( filename, lpCmdLine, sizeof(filename) - 4 /* for extension */ );
|
||||
for (p = filename; *p && (*p != ' ') && (*p != '\t'); p++);
|
||||
if (*p)
|
||||
{
|
||||
strncpy( cmdline, p + 1, 128 );
|
||||
cmdline[127] = '\0';
|
||||
}
|
||||
if (*p) lstrcpyn( cmdline, p + 1, 128 );
|
||||
else cmdline[0] = '\0';
|
||||
*p = '\0';
|
||||
|
||||
/* Now load the executable file */
|
||||
|
||||
#ifdef WINELIB32
|
||||
params.hEnvironment = (HANDLE)GetDOSEnvironment();
|
||||
#else
|
||||
params.hEnvironment = (HANDLE)SELECTOROF( GetDOSEnvironment() );
|
||||
#endif
|
||||
params.cmdLine = (SEGPTR)WIN16_GlobalLock( cmdLineHandle );
|
||||
params.showCmd = (SEGPTR)WIN16_GlobalLock( cmdShowHandle );
|
||||
params.reserved = 0;
|
||||
handle = LoadModule( filename, ¶ms );
|
||||
if (handle == (HANDLE)2) /* file not found */
|
||||
if (use_load_module)
|
||||
{
|
||||
/* Check that the original file name did not have a suffix */
|
||||
p = strrchr(filename, '.');
|
||||
if (p && !(strchr(p, '/') || strchr(p, '\\')))
|
||||
return handle; /* filename already includes a suffix! */
|
||||
strcat( filename, ".exe" );
|
||||
handle = LoadModule( filename, ¶ms );
|
||||
#ifdef WINELIB
|
||||
/* WINELIB: Use LoadModule() only for the program itself */
|
||||
use_load_module = 0;
|
||||
params.hEnvironment = (HANDLE)GetDOSEnvironment();
|
||||
#else
|
||||
params.hEnvironment = (HANDLE)SELECTOROF( GetDOSEnvironment() );
|
||||
#endif /* WINELIB */
|
||||
params.cmdLine = (SEGPTR)WIN16_GlobalLock( cmdLineHandle );
|
||||
params.showCmd = (SEGPTR)WIN16_GlobalLock( cmdShowHandle );
|
||||
params.reserved = 0;
|
||||
handle = LoadModule( filename, ¶ms );
|
||||
if (handle == 2) /* file not found */
|
||||
{
|
||||
/* Check that the original file name did not have a suffix */
|
||||
p = strrchr(filename, '.');
|
||||
if (!p || (strchr(p, '/') && strchr(p, '\\')))
|
||||
{
|
||||
p = filename + strlen(filename);
|
||||
strcpy( p, ".exe" );
|
||||
handle = LoadModule( filename, ¶ms );
|
||||
*p = '\0'; /* Remove extension */
|
||||
}
|
||||
}
|
||||
}
|
||||
else handle = 2;
|
||||
|
||||
if (handle < 32)
|
||||
{
|
||||
/* Try to start it as a unix program */
|
||||
if (!fork())
|
||||
{
|
||||
/* Child process */
|
||||
const char *unixfilename;
|
||||
const char *argv[256], **argptr;
|
||||
int iconic = (nCmdShow == SW_SHOWMINIMIZED ||
|
||||
nCmdShow == SW_SHOWMINNOACTIVE);
|
||||
|
||||
/* get unixfilename */
|
||||
if (strchr(filename, '/') ||
|
||||
strchr(filename, ':') ||
|
||||
strchr(filename, '\\'))
|
||||
unixfilename = DOSFS_GetUnixFileName(filename, 1);
|
||||
else unixfilename = filename;
|
||||
|
||||
if (unixfilename)
|
||||
{
|
||||
/* build argv */
|
||||
argptr = argv;
|
||||
if (iconic) *argptr++ = "-iconic";
|
||||
*argptr++ = unixfilename;
|
||||
p = cmdline;
|
||||
while (1)
|
||||
{
|
||||
while (*p && (*p == ' ' || *p == '\t')) *p++ = '\0';
|
||||
if (!*p) break;
|
||||
*argptr++ = p;
|
||||
while (*p && *p != ' ' && *p != '\t') p++;
|
||||
}
|
||||
*argptr++ = 0;
|
||||
|
||||
/* Execute */
|
||||
execvp(argv[0], (char**)argv);
|
||||
}
|
||||
|
||||
/* Failed ! */
|
||||
#ifdef WINELIB
|
||||
/* build argv */
|
||||
argptr = argv;
|
||||
*argptr++ = "wine";
|
||||
if (iconic) *argptr++ = "-iconic";
|
||||
*argptr++ = lpCmdLine;
|
||||
*argptr++ = 0;
|
||||
|
||||
/* Execute */
|
||||
execvp(argv[0] , (char**)argv);
|
||||
|
||||
/* Failed ! */
|
||||
fprintf(stderr, "WinExec: can't exec 'wine %s'\n", lpCmdLine);
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
GlobalFree( cmdShowHandle );
|
||||
|
@ -1335,20 +1393,20 @@ FARPROC GetProcAddress( HANDLE hModule, SEGPTR name )
|
|||
if (HIWORD(name) != 0)
|
||||
{
|
||||
ordinal = MODULE_GetOrdinal( hModule, (LPSTR)PTR_SEG_TO_LIN(name) );
|
||||
dprintf_module( stddeb, "GetProcAddress: "NPFMT" '%s'\n",
|
||||
dprintf_module( stddeb, "GetProcAddress: %04x '%s'\n",
|
||||
hModule, (LPSTR)PTR_SEG_TO_LIN(name) );
|
||||
}
|
||||
else
|
||||
{
|
||||
ordinal = LOWORD(name);
|
||||
dprintf_module( stddeb, "GetProcAddress: "NPFMT" %04x\n",
|
||||
dprintf_module( stddeb, "GetProcAddress: %04x %04x\n",
|
||||
hModule, ordinal );
|
||||
}
|
||||
if (!ordinal) return (FARPROC)0;
|
||||
|
||||
ret = MODULE_GetEntryPoint( hModule, ordinal );
|
||||
|
||||
dprintf_module( stddeb, "GetProcAddress: returning "SPFMT"\n", ret );
|
||||
dprintf_module( stddeb, "GetProcAddress: returning %08lx\n", (DWORD)ret );
|
||||
return (FARPROC)ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
if (!pSeg->filepos) return TRUE; /* No file image, just return */
|
||||
|
||||
fd = MODULE_OpenFile( hModule );
|
||||
dprintf_module( stddeb, "Loading segment %d, selector="NPFMT"\n",
|
||||
dprintf_module( stddeb, "Loading segment %d, selector=%04x\n",
|
||||
segnum, pSeg->selector );
|
||||
lseek( fd, pSeg->filepos << pModule->alignment, SEEK_SET );
|
||||
size = pSeg->size ? pSeg->size : 0x10000;
|
||||
|
@ -134,7 +134,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
read( fd, &count, sizeof(count) );
|
||||
if (!count) return TRUE;
|
||||
|
||||
dprintf_fixup( stddeb, "Fixups for %*.*s, segment %d, selector "NPFMT"\n",
|
||||
dprintf_fixup( stddeb, "Fixups for %*.*s, segment %d, selector %04x\n",
|
||||
*((BYTE *)pModule + pModule->name_table),
|
||||
*((BYTE *)pModule + pModule->name_table),
|
||||
(char *)pModule + pModule->name_table + 1,
|
||||
|
@ -173,7 +173,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
{
|
||||
NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
|
||||
if (!pTarget)
|
||||
fprintf( stderr, "Module not found: "NPFMT", reference %d of module %*.*s\n",
|
||||
fprintf( stderr, "Module not found: %04x, reference %d of module %*.*s\n",
|
||||
module, rep->target1,
|
||||
*((BYTE *)pModule + pModule->name_table),
|
||||
*((BYTE *)pModule + pModule->name_table),
|
||||
|
@ -274,7 +274,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
case NE_RADDR_LOWBYTE:
|
||||
do {
|
||||
sp = PTR_SEG_OFF_TO_LIN( pSeg->selector, offset );
|
||||
dprintf_fixup(stddeb," "NPFMT":%04x:%04x BYTE%s\n",
|
||||
dprintf_fixup(stddeb," %04x:%04x:%04x BYTE%s\n",
|
||||
pSeg->selector, offset, *sp, additive ? " additive":"");
|
||||
offset = *sp;
|
||||
if(additive)
|
||||
|
@ -288,7 +288,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
case NE_RADDR_OFFSET16:
|
||||
do {
|
||||
sp = PTR_SEG_OFF_TO_LIN( pSeg->selector, offset );
|
||||
dprintf_fixup(stddeb," "NPFMT":%04x:%04x OFFSET16%s\n",
|
||||
dprintf_fixup(stddeb," %04x:%04x:%04x OFFSET16%s\n",
|
||||
pSeg->selector, offset, *sp, additive ? " additive" : "" );
|
||||
offset = *sp;
|
||||
*sp = LOWORD(address);
|
||||
|
@ -300,7 +300,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
case NE_RADDR_POINTER32:
|
||||
do {
|
||||
sp = PTR_SEG_OFF_TO_LIN( pSeg->selector, offset );
|
||||
dprintf_fixup(stddeb," "NPFMT":%04x:%04x POINTER32%s\n",
|
||||
dprintf_fixup(stddeb," %04x:%04x:%04x POINTER32%s\n",
|
||||
pSeg->selector, offset, *sp, additive ? " additive" : "" );
|
||||
offset = *sp;
|
||||
*sp = LOWORD(address);
|
||||
|
@ -313,7 +313,7 @@ BOOL NE_LoadSegment( HMODULE hModule, WORD segnum )
|
|||
case NE_RADDR_SELECTOR:
|
||||
do {
|
||||
sp = PTR_SEG_OFF_TO_LIN( pSeg->selector, offset );
|
||||
dprintf_fixup(stddeb," "NPFMT":%04x:%04x SELECTOR%s\n",
|
||||
dprintf_fixup(stddeb," %04x:%04x:%04x SELECTOR%s\n",
|
||||
pSeg->selector, offset, *sp, additive ? " additive" : "" );
|
||||
offset = *sp;
|
||||
*sp = HIWORD(address);
|
||||
|
|
|
@ -355,7 +355,7 @@ BOOL NE_FreeResource( HMODULE hModule, HGLOBAL handle )
|
|||
}
|
||||
pTypeInfo = (NE_TYPEINFO *)pNameInfo;
|
||||
}
|
||||
fprintf( stderr, "FreeResource: "NPFMT" "NPFMT" not found!\n", hModule, handle );
|
||||
fprintf( stderr, "FreeResource: %04x %04x not found!\n", hModule, handle );
|
||||
return FALSE;
|
||||
}
|
||||
#endif /* WINELIB */
|
||||
|
|
|
@ -207,7 +207,7 @@ void fixup_imports(struct w_files* wpnt)
|
|||
|
||||
while(*import_list)
|
||||
{
|
||||
pe_name = (struct pe_import_name *) ((int) load_addr + *import_list);
|
||||
pe_name = (struct pe_import_name *) ((int) load_addr + ((unsigned)*import_list & ~0x80000000));
|
||||
if((unsigned)*import_list & 0x80000000)
|
||||
{
|
||||
int ordinal=*import_list & (0x80000000-1);
|
||||
|
@ -652,7 +652,7 @@ HINSTANCE PE_LoadModule( int fd, OFSTRUCT *ofs, LOADPARAMS* params )
|
|||
|
||||
/* FIXME: Is this really the correct place to initialise the DLL? */
|
||||
if ((wpnt->pe->pe_header->coff.Characteristics & IMAGE_FILE_DLL)) {
|
||||
PE_InitDLL(wpnt);
|
||||
PE_InitDLL(hModule);
|
||||
} else {
|
||||
TASK_CreateTask(hModule,hInstance,0,
|
||||
params->hEnvironment,(LPSTR)PTR_SEG_TO_LIN(params->cmdLine),
|
||||
|
|
|
@ -40,7 +40,7 @@ HRSRC FindResource( HMODULE hModule, SEGPTR name, SEGPTR type )
|
|||
WORD *pModule;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "FindResource: module="NPFMT" type=", hModule );
|
||||
dprintf_resource(stddeb, "FindResource: module=%04x type=", hModule );
|
||||
PrintId( type );
|
||||
if (HIWORD(name)) /* Check for '#xxx' name */
|
||||
{
|
||||
|
@ -77,7 +77,7 @@ HGLOBAL LoadResource( HMODULE hModule, HRSRC hRsrc )
|
|||
WORD *pModule;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "LoadResource: module="NPFMT" res="NPFMT"\n",
|
||||
dprintf_resource(stddeb, "LoadResource: module=%04x res=%04x\n",
|
||||
hModule, hRsrc );
|
||||
if (!hRsrc) return 0;
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
|
@ -107,7 +107,7 @@ SEGPTR WIN16_LockResource( HGLOBAL handle )
|
|||
HMODULE hModule;
|
||||
WORD *pModule;
|
||||
|
||||
dprintf_resource(stddeb, "LockResource: handle="NPFMT"\n", handle );
|
||||
dprintf_resource(stddeb, "LockResource: handle=%04x\n", handle );
|
||||
if (!handle) return (SEGPTR)0;
|
||||
hModule = GetExePtr( handle );
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
|
@ -132,7 +132,7 @@ LPVOID LockResource( HGLOBAL handle )
|
|||
HMODULE hModule;
|
||||
WORD *pModule;
|
||||
|
||||
dprintf_resource(stddeb, "LockResource: handle="NPFMT"\n", handle );
|
||||
dprintf_resource(stddeb, "LockResource: handle=%04x\n", handle );
|
||||
if (!handle) return NULL;
|
||||
hModule = GetExePtr( handle );
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
|
@ -160,7 +160,7 @@ BOOL FreeResource( HGLOBAL handle )
|
|||
HMODULE hModule;
|
||||
WORD *pModule;
|
||||
|
||||
dprintf_resource(stddeb, "FreeResource: handle="NPFMT"\n", handle );
|
||||
dprintf_resource(stddeb, "FreeResource: handle=%04x\n", handle );
|
||||
if (!handle) return FALSE;
|
||||
hModule = GetExePtr( handle );
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
|
@ -187,7 +187,7 @@ INT AccessResource( HINSTANCE hModule, HRSRC hRsrc )
|
|||
WORD *pModule;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "AccessResource: module="NPFMT" res="NPFMT"\n",
|
||||
dprintf_resource(stddeb, "AccessResource: module=%04x res=%04x\n",
|
||||
hModule, hRsrc );
|
||||
if (!hRsrc) return 0;
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
|
@ -215,7 +215,7 @@ DWORD SizeofResource( HMODULE hModule, HRSRC hRsrc )
|
|||
WORD *pModule;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "SizeofResource: module="NPFMT" res="NPFMT"\n",
|
||||
dprintf_resource(stddeb, "SizeofResource: module=%04x res=%04x\n",
|
||||
hModule, hRsrc );
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
#ifndef WINELIB
|
||||
|
@ -242,7 +242,7 @@ HGLOBAL AllocResource( HMODULE hModule, HRSRC hRsrc, DWORD size )
|
|||
WORD *pModule;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "AllocResource: module="NPFMT" res="NPFMT" size=%ld\n",
|
||||
dprintf_resource(stddeb, "AllocResource: module=%04x res=%04x size=%ld\n",
|
||||
hModule, hRsrc, size );
|
||||
if (!hRsrc) return 0;
|
||||
if (!(pModule = (WORD *)GlobalLock( hModule ))) return 0;
|
||||
|
@ -268,7 +268,8 @@ HGLOBAL AllocResource( HMODULE hModule, HRSRC hRsrc, DWORD size )
|
|||
*/
|
||||
HANDLE DirectResAlloc(HANDLE hInstance, WORD wType, WORD wSize)
|
||||
{
|
||||
dprintf_resource(stddeb,"DirectResAlloc("NPFMT",%x,%x)\n",hInstance,wType,wSize);
|
||||
dprintf_resource(stddeb,"DirectResAlloc(%04x,%04x,%04x)\n",
|
||||
hInstance, wType, wSize );
|
||||
hInstance = GetExePtr(hInstance);
|
||||
if(!hInstance)return 0;
|
||||
if(wType != 0x10) /* 0x10 is the only observed value, passed from
|
||||
|
@ -291,10 +292,10 @@ HANDLE LoadAccelerators(HANDLE instance, SEGPTR lpTableName)
|
|||
int i, n;
|
||||
|
||||
if (HIWORD(lpTableName))
|
||||
dprintf_accel( stddeb, "LoadAccelerators: "NPFMT" '%s'\n",
|
||||
dprintf_accel( stddeb, "LoadAccelerators: %04x '%s'\n",
|
||||
instance, (char *)PTR_SEG_TO_LIN( lpTableName ) );
|
||||
else
|
||||
dprintf_accel( stddeb, "LoadAccelerators: "NPFMT" %04x\n",
|
||||
dprintf_accel( stddeb, "LoadAccelerators: %04x %04x\n",
|
||||
instance, LOWORD(lpTableName) );
|
||||
|
||||
if (!(hRsrc = FindResource( instance, lpTableName, RT_ACCELERATOR )))
|
||||
|
@ -340,7 +341,7 @@ int TranslateAccelerator(HWND hWnd, HANDLE hAccel, LPMSG msg)
|
|||
msg->message != WM_SYSKEYUP &&
|
||||
msg->message != WM_CHAR) return 0;
|
||||
|
||||
dprintf_accel(stddeb, "TranslateAccelerators hAccel="NPFMT" !\n", hAccel);
|
||||
dprintf_accel(stddeb, "TranslateAccelerators hAccel=%04x !\n", hAccel);
|
||||
|
||||
lpAccelTbl = (LPACCELHEADER)GlobalLock(hAccel);
|
||||
for (i = 0; i < lpAccelTbl->wCount; i++) {
|
||||
|
@ -387,8 +388,8 @@ LoadString(HANDLE instance, WORD resource_id, LPSTR buffer, int buflen)
|
|||
int string_num;
|
||||
int i;
|
||||
|
||||
dprintf_resource(stddeb, "LoadString: instance = "NPFMT", id = %04x, buffer = %08x, "
|
||||
"length = %d\n", instance, resource_id, (int) buffer, buflen);
|
||||
dprintf_resource(stddeb,"LoadString: inst=%04x id=%04x buff=%08x len=%d\n",
|
||||
instance, resource_id, (int) buffer, buflen);
|
||||
|
||||
hrsrc = FindResource( instance, (SEGPTR)((resource_id>>4)+1), RT_STRING );
|
||||
if (!hrsrc) return 0;
|
||||
|
|
|
@ -107,6 +107,8 @@ static void SIGNAL_SetHandler( int sig, void (*func)() )
|
|||
#endif /* linux */
|
||||
|
||||
#if defined(__NetBSD__) || defined(__FreeBSD__)
|
||||
sigset_t sig_mask;
|
||||
sigemptyset(&sig_mask);
|
||||
sig_act.sa_handler = func;
|
||||
sig_act.sa_flags = SA_ONSTACK;
|
||||
sig_act.sa_mask = sig_mask;
|
||||
|
@ -114,6 +116,8 @@ static void SIGNAL_SetHandler( int sig, void (*func)() )
|
|||
#endif /* __FreeBSD__ || __NetBSD__ */
|
||||
|
||||
#if defined (__svr4__)
|
||||
sigset_t sig_mask;
|
||||
sigemptyset(&sig_mask);
|
||||
sig_act.sa_handler = func;
|
||||
sig_act.sa_flags = SA_ONSTACK | SA_SIGINFO;
|
||||
sig_act.sa_mask = sig_mask;
|
||||
|
@ -136,7 +140,6 @@ void init_wine_signals(void)
|
|||
extern void stop_wait(int a);
|
||||
|
||||
#if defined(__NetBSD__) || defined(__FreeBSD__)
|
||||
sigset_t sig_mask;
|
||||
struct sigaltstack ss;
|
||||
|
||||
#if !defined (__FreeBSD__)
|
||||
|
@ -154,11 +157,9 @@ void init_wine_signals(void)
|
|||
perror("sigstack");
|
||||
exit(1);
|
||||
}
|
||||
sigemptyset(&sig_mask);
|
||||
#endif /* __FreeBSD__ || __NetBSD__ */
|
||||
|
||||
#if defined (__svr4__)
|
||||
sigset_t sig_mask;
|
||||
struct sigaltstack ss;
|
||||
|
||||
if ((ss.ss_sp = malloc(SIGSTKSZ) ) == NULL) {
|
||||
|
@ -172,7 +173,6 @@ void init_wine_signals(void)
|
|||
perror("sigstack");
|
||||
exit(1);
|
||||
}
|
||||
sigemptyset(&sig_mask);
|
||||
#endif /* __svr4__ */
|
||||
|
||||
SIGNAL_SetHandler( SIGSEGV, (void (*)())win_fault );
|
||||
|
|
|
@ -555,7 +555,7 @@ HTASK TASK_CreateTask( HMODULE hModule, HANDLE hInstance, HANDLE hPrevInstance,
|
|||
|
||||
TASK_LinkTask( hTask );
|
||||
|
||||
dprintf_task( stddeb, "CreateTask: module='%s' cmdline='%s' task="NPFMT"\n",
|
||||
dprintf_task( stddeb, "CreateTask: module='%s' cmdline='%s' task=%04x\n",
|
||||
name, cmdLine, hTask );
|
||||
|
||||
return hTask;
|
||||
|
@ -699,7 +699,7 @@ void TASK_Reschedule(void)
|
|||
if (!hTask) return; /* Do nothing */
|
||||
|
||||
pNewTask = (TDB *)GlobalLock( hTask );
|
||||
dprintf_task( stddeb, "Switching to task "NPFMT" (%.8s)\n",
|
||||
dprintf_task( stddeb, "Switching to task %04x (%.8s)\n",
|
||||
hTask, pNewTask->module_name );
|
||||
|
||||
/* Save the stacks of the previous task (if any) */
|
||||
|
@ -939,8 +939,8 @@ FARPROC MakeProcInstance( FARPROC func, HANDLE hInstance )
|
|||
if (!thunkaddr) return (FARPROC)0;
|
||||
thunk = PTR_SEG_TO_LIN( thunkaddr );
|
||||
|
||||
dprintf_task( stddeb, "MakeProcInstance("SPFMT","NPFMT"): got thunk "SPFMT"\n",
|
||||
(SEGPTR)func, hInstance, (SEGPTR)thunkaddr );
|
||||
dprintf_task( stddeb, "MakeProcInstance(%08lx,%04x): got thunk %08lx\n",
|
||||
(DWORD)func, hInstance, (DWORD)thunkaddr );
|
||||
|
||||
*thunk++ = 0xb8; /* movw instance, %ax */
|
||||
*thunk++ = (BYTE)(hInstance & 0xff);
|
||||
|
@ -958,7 +958,7 @@ FARPROC MakeProcInstance( FARPROC func, HANDLE hInstance )
|
|||
void FreeProcInstance( FARPROC func )
|
||||
{
|
||||
#ifndef WINELIB32
|
||||
dprintf_task( stddeb, "FreeProcInstance("SPFMT")\n", (SEGPTR)func );
|
||||
dprintf_task( stddeb, "FreeProcInstance(%08lx)\n", (DWORD)func );
|
||||
TASK_FreeThunk( hCurrentTask, (SEGPTR)func );
|
||||
#endif
|
||||
}
|
||||
|
@ -969,6 +969,7 @@ void FreeProcInstance( FARPROC func )
|
|||
*/
|
||||
HANDLE GetCodeHandle( FARPROC proc )
|
||||
{
|
||||
#ifndef WINELIB32
|
||||
HANDLE handle;
|
||||
BYTE *thunk = (BYTE *)PTR_SEG_TO_LIN( proc );
|
||||
|
||||
|
@ -982,6 +983,9 @@ HANDLE GetCodeHandle( FARPROC proc )
|
|||
handle = GlobalHandle( HIWORD(proc) );
|
||||
|
||||
return handle;
|
||||
#else
|
||||
return (HANDLE)proc;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -1201,7 +1205,7 @@ BOOL TaskNext( TASKENTRY *lpte )
|
|||
TDB *pTask;
|
||||
INSTANCEDATA *pInstData;
|
||||
|
||||
dprintf_toolhelp( stddeb, "TaskNext(%p): task="NPFMT"\n", lpte, lpte->hNext );
|
||||
dprintf_toolhelp( stddeb, "TaskNext(%p): task=%04x\n", lpte, lpte->hNext );
|
||||
if (!lpte->hNext) return FALSE;
|
||||
pTask = (TDB *)GlobalLock( lpte->hNext );
|
||||
if (!pTask || pTask->magic != TDB_MAGIC) return FALSE;
|
||||
|
|
|
@ -649,7 +649,7 @@ void GlobalUnfix( HGLOBAL handle )
|
|||
/***********************************************************************
|
||||
* FarSetOwner (KERNEL.403)
|
||||
*/
|
||||
void FarSetOwner( HANDLE handle, WORD hOwner )
|
||||
void FarSetOwner( HANDLE handle, HANDLE hOwner )
|
||||
{
|
||||
GET_ARENA_PTR(handle)->hOwner = hOwner;
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ BOOL OpenClipboard(HWND hWnd)
|
|||
{
|
||||
if (hWndClipboardOwner != 0) return FALSE;
|
||||
hWndClipboardOwner = hWnd;
|
||||
dprintf_clipboard(stddeb,"OpenClipboard("NPFMT"); !\n", hWnd);
|
||||
dprintf_clipboard(stddeb,"OpenClipboard(%04x); !\n", hWnd);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ BOOL EmptyClipboard()
|
|||
HWND GetClipboardOwner()
|
||||
{
|
||||
dprintf_clipboard(stddeb,
|
||||
"GetClipboardOwner() = "NPFMT" !\n", hWndClipboardOwner);
|
||||
"GetClipboardOwner() = %04x !\n", hWndClipboardOwner);
|
||||
return hWndClipboardOwner;
|
||||
}
|
||||
|
||||
|
@ -119,7 +119,7 @@ HANDLE SetClipboardData(WORD wFormat, HANDLE hData)
|
|||
{
|
||||
LPCLIPFORMAT lpFormat = ClipFormats;
|
||||
dprintf_clipboard(stddeb,
|
||||
"SetClipboardDate(%04X, "NPFMT") !\n", wFormat, hData);
|
||||
"SetClipboardDate(%04X, %04x) !\n", wFormat, hData);
|
||||
while(TRUE) {
|
||||
if (lpFormat == NULL) return 0;
|
||||
if (lpFormat->wFormatID == wFormat) break;
|
||||
|
@ -173,7 +173,7 @@ INT CountClipboardFormats()
|
|||
if (lpFormat == NULL) break;
|
||||
if (lpFormat->hData != 0) {
|
||||
dprintf_clipboard(stddeb,
|
||||
"CountClipboardFormats // Find Not Empty ("NPFMT") !\n",
|
||||
"CountClipboardFormats // Find Not Empty (%04x) !\n",
|
||||
lpFormat->hData);
|
||||
FormatCount++;
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ UINT EnumClipboardFormats(UINT wFormat)
|
|||
lpFormat = lpFormat->NextFormat;
|
||||
}
|
||||
dprintf_clipboard(stddeb,
|
||||
"EnumClipboardFormats // Find Not Empty Id=%04X hData="NPFMT" !\n",
|
||||
"EnumClipboardFormats // Find Not Empty Id=%04X hData=%04x !\n",
|
||||
lpFormat->wFormatID, lpFormat->hData);
|
||||
return lpFormat->wFormatID;
|
||||
}
|
||||
|
@ -279,7 +279,7 @@ int GetClipboardFormatName(WORD wFormat, LPSTR retStr, short maxlen)
|
|||
HWND SetClipboardViewer(HWND hWnd)
|
||||
{
|
||||
HWND hwndPrev = hWndViewer;
|
||||
dprintf_clipboard(stddeb,"SetClipboardViewer("NPFMT") !\n", hWnd);
|
||||
dprintf_clipboard(stddeb,"SetClipboardViewer(%04x) !\n", hWnd);
|
||||
hWndViewer = hWnd;
|
||||
return hwndPrev;
|
||||
}
|
||||
|
@ -290,7 +290,7 @@ HWND SetClipboardViewer(HWND hWnd)
|
|||
*/
|
||||
HWND GetClipboardViewer()
|
||||
{
|
||||
dprintf_clipboard(stddeb,"GetClipboardFormat() = "NPFMT" !\n", hWndViewer);
|
||||
dprintf_clipboard(stddeb,"GetClipboardFormat() = %04x !\n", hWndViewer);
|
||||
return hWndViewer;
|
||||
}
|
||||
|
||||
|
@ -301,7 +301,7 @@ HWND GetClipboardViewer()
|
|||
BOOL ChangeClipboardChain(HWND hWnd, HWND hWndNext)
|
||||
{
|
||||
dprintf_clipboard(stdnimp,
|
||||
"ChangeClipboardChain("NPFMT", "NPFMT") !\n", hWnd, hWndNext);
|
||||
"ChangeClipboardChain(%04x, %04x) !\n", hWnd, hWndNext);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ BOOL IsClipboardFormatAvailable(WORD wFormat)
|
|||
HWND GetOpenClipboardWindow()
|
||||
{
|
||||
dprintf_clipboard(stddeb,
|
||||
"GetOpenClipboardWindow() = "NPFMT" !\n", hWndClipboardOwner);
|
||||
"GetOpenClipboardWindow() = %04x !\n", hWndClipboardOwner);
|
||||
return hWndClipboardOwner;
|
||||
}
|
||||
|
||||
|
@ -377,7 +377,7 @@ void CLIPBOARD_ReadSelection(Window w,Atom prop)
|
|||
hText=0;
|
||||
} else {
|
||||
dprintf_clipboard(stddeb,"Selection is %s\n",val);
|
||||
hText=GlobalAlloc(GMEM_MOVEABLE, nitems);
|
||||
hText=GlobalAlloc(GMEM_MOVEABLE, nitems+1);
|
||||
memcpy(GlobalLock(hText),val,nitems+1);
|
||||
GlobalUnlock(hText);
|
||||
}
|
||||
|
|
|
@ -294,6 +294,18 @@ static LONG FILEDLG_WMMeasureItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FILEDLG_HookCallChk [internal]
|
||||
*/
|
||||
static int FILEDLG_HookCallChk(LPOPENFILENAME lpofn)
|
||||
{
|
||||
if (lpofn)
|
||||
if (lpofn->Flags & OFN_ENABLEHOOK)
|
||||
if (lpofn->lpfnHook)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FILEDLG_WMInitDialog [internal]
|
||||
*/
|
||||
|
@ -372,7 +384,11 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
ShowWindow(GetDlgItem(hWnd, pshHelp), SW_HIDE);
|
||||
if (lpofn->Flags & OFN_HIDEREADONLY)
|
||||
ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
|
||||
return TRUE;
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
return (BOOL)CallWindowProc(lpofn->lpfnHook,
|
||||
hWnd, WM_INITDIALOG, wParam,(LPARAM)MAKE_SEGPTR(lpofn));
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -382,6 +398,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
LONG lRet;
|
||||
LPOPENFILENAME lpofn;
|
||||
OPENFILENAME ofn2;
|
||||
char tmpstr[512], tmpstr2[512];
|
||||
LPSTR pstr, pstr2;
|
||||
UINT control,notification;
|
||||
|
@ -407,6 +424,12 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
SendDlgItemMessage(hWnd, lst1, LB_GETTEXT, lRet,
|
||||
(LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
CallWindowProc (lpofn->lpfnHook, hWnd,
|
||||
RegisterWindowMessage(MAKE_SEGPTR(LBSELCHSTRING)),
|
||||
control, MAKELONG(lRet,CD_LBSELCHANGE));
|
||||
/* FIXME: for OFN_ALLOWMULTISELECT we need CD_LBSELSUB, CD_SELADD, CD_LBSELNOITEMS */
|
||||
return TRUE;
|
||||
case lst2: /* directory list */
|
||||
FILEDLG_StripEditControl(hWnd);
|
||||
|
@ -454,6 +477,7 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
return TRUE;
|
||||
case IDOK:
|
||||
almost_ok:
|
||||
ofn2=*lpofn; /* for later restoring */
|
||||
SendDlgItemMessage(hWnd, edt1, WM_GETTEXT, 511, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
pstr = strrchr(tmpstr, '\\');
|
||||
if (pstr == NULL)
|
||||
|
@ -507,7 +531,9 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
else
|
||||
SendDlgItemMessage(hWnd, edt1, WM_SETTEXT, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
#if 0
|
||||
ShowWindow(hWnd, SW_HIDE); /* this should not be necessary ?! (%%%) */
|
||||
#endif
|
||||
{
|
||||
int drive = DRIVE_GetCurrentDrive();
|
||||
tmpstr2[0] = 'A'+ drive;
|
||||
|
@ -535,6 +561,20 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
dprintf_commdlg(stddeb,"strcpy'ing '%s'\n",tmpstr); fflush(stdout);
|
||||
strcpy(PTR_SEG_TO_LIN(lpofn->lpstrFileTitle), tmpstr);
|
||||
}
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
{
|
||||
lRet= (BOOL)CallWindowProc (lpofn->lpfnHook,
|
||||
hWnd, RegisterWindowMessage(MAKE_SEGPTR(FILEOKSTRING)),
|
||||
0, (LPARAM)MAKE_SEGPTR(lpofn));
|
||||
if (lRet)
|
||||
{
|
||||
*lpofn=ofn2; /* restore old state */
|
||||
#if 0
|
||||
ShowWindow(hWnd, SW_SHOW); /* only if above (%%%) SW_HIDE used */
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
EndDialog(hWnd, TRUE);
|
||||
return TRUE;
|
||||
case IDCANCEL:
|
||||
|
@ -550,6 +590,15 @@ static LRESULT FILEDLG_WMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
*/
|
||||
LRESULT FileOpenDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPOPENFILENAME lpofn = (LPOPENFILENAME)GetWindowLong(hWnd, DWL_USER);
|
||||
|
||||
if (wMsg!=WM_INITDIALOG)
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
{
|
||||
LRESULT lRet=(BOOL)CallWindowProc(lpofn->lpfnHook, hWnd, wMsg, wParam, lParam);
|
||||
if (lRet)
|
||||
return lRet; /* else continue message processing */
|
||||
}
|
||||
switch (wMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
|
@ -584,6 +633,15 @@ LRESULT FileOpenDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
|
|||
*/
|
||||
LRESULT FileSaveDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPOPENFILENAME lpofn = (LPOPENFILENAME)GetWindowLong(hWnd, DWL_USER);
|
||||
|
||||
if (wMsg!=WM_INITDIALOG)
|
||||
if (FILEDLG_HookCallChk(lpofn))
|
||||
{
|
||||
LRESULT lRet=(BOOL)CallWindowProc(lpofn->lpfnHook, hWnd, wMsg, wParam, lParam);
|
||||
if (lRet)
|
||||
return lRet; /* else continue message processing */
|
||||
}
|
||||
switch (wMsg) {
|
||||
case WM_INITDIALOG:
|
||||
return FILEDLG_WMInitDialog(hWnd, wParam, lParam);
|
||||
|
|
|
@ -33,7 +33,7 @@ void LoadStartupDrivers(void)
|
|||
dprintf_driver(stddeb,"LoadStartupDrivers // str='%s'\n", ptr);
|
||||
hDrv = OpenDriver(ptr, "drivers", 0L);
|
||||
dprintf_driver(stddeb,
|
||||
"LoadStartupDrivers // hDrv="NPFMT"\n", hDrv);
|
||||
"LoadStartupDrivers // hDrv=%04x\n", hDrv);
|
||||
ptr += strlen(ptr) + 1;
|
||||
}
|
||||
dprintf_driver(stddeb,"LoadStartupDrivers // end of list !\n");
|
||||
|
@ -44,7 +44,7 @@ void LoadStartupDrivers(void)
|
|||
*/
|
||||
LRESULT WINAPI SendDriverMessage(HDRVR hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2)
|
||||
{
|
||||
dprintf_driver(stdnimp,"SendDriverMessage("NPFMT", %04X, %08lX, %08lX);\n",
|
||||
dprintf_driver(stdnimp,"SendDriverMessage(%04x, %04X, %08lX, %08lX);\n",
|
||||
hDriver, msg, lParam1, lParam2);
|
||||
return 0;
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ HDRVR OpenDriver(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam)
|
|||
lpnewdrv->lpPrevItem = lpdrv;
|
||||
}
|
||||
lpnewdrv->lpDrvProc = NULL;
|
||||
dprintf_driver(stddeb,"OpenDriver // hDrvr="NPFMT" loaded !\n", hDrvr);
|
||||
dprintf_driver(stddeb,"OpenDriver // hDrvr=%04x loaded !\n", hDrvr);
|
||||
return hDrvr;
|
||||
}
|
||||
|
||||
|
@ -104,7 +104,7 @@ LRESULT CloseDriver(HDRVR hDrvr, LPARAM lParam1, LPARAM lParam2)
|
|||
{
|
||||
LPDRIVERITEM lpdrv;
|
||||
dprintf_driver(stddeb,
|
||||
"CloseDriver("NPFMT", %08lX, %08lX);\n", hDrvr, lParam1, lParam2);
|
||||
"CloseDriver(%04x, %08lX, %08lX);\n", hDrvr, lParam1, lParam2);
|
||||
lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr);
|
||||
if (lpdrv != NULL && lpdrv->dis.hDriver == hDrvr) {
|
||||
if (lpdrv->lpPrevItem)
|
||||
|
@ -113,7 +113,7 @@ LRESULT CloseDriver(HDRVR hDrvr, LPARAM lParam1, LPARAM lParam2)
|
|||
((LPDRIVERITEM)lpdrv->lpNextItem)->lpPrevItem = lpdrv->lpPrevItem;
|
||||
GlobalUnlock(hDrvr);
|
||||
GlobalFree(hDrvr);
|
||||
dprintf_driver(stddeb,"CloseDriver // hDrvr="NPFMT" closed !\n", hDrvr);
|
||||
dprintf_driver(stddeb,"CloseDriver // hDrvr=%04x closed !\n", hDrvr);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -126,7 +126,7 @@ HANDLE GetDriverModuleHandle(HDRVR hDrvr)
|
|||
{
|
||||
LPDRIVERITEM lpdrv;
|
||||
HANDLE hModule = 0;
|
||||
dprintf_driver(stddeb,"GetDriverModuleHandle("NPFMT");\n", hDrvr);
|
||||
dprintf_driver(stddeb,"GetDriverModuleHandle(%04x);\n", hDrvr);
|
||||
lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr);
|
||||
if (lpdrv != NULL) {
|
||||
hModule = lpdrv->dis.hModule;
|
||||
|
@ -175,7 +175,7 @@ LRESULT DefDriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
|
|||
BOOL GetDriverInfo(HDRVR hDrvr, LPDRIVERINFOSTRUCT lpDrvInfo)
|
||||
{
|
||||
LPDRIVERITEM lpdrv;
|
||||
dprintf_driver(stddeb,"GetDriverInfo("NPFMT", %p);\n", hDrvr, lpDrvInfo);
|
||||
dprintf_driver(stddeb,"GetDriverInfo(%04x, %p);\n", hDrvr, lpDrvInfo);
|
||||
if (lpDrvInfo == NULL) return FALSE;
|
||||
lpdrv = (LPDRIVERITEM) GlobalLock(hDrvr);
|
||||
if (lpdrv == NULL) return FALSE;
|
||||
|
@ -191,7 +191,7 @@ HDRVR GetNextDriver(HDRVR hDrvr, DWORD dwFlags)
|
|||
{
|
||||
LPDRIVERITEM lpdrv;
|
||||
HDRVR hRetDrv = 0;
|
||||
dprintf_driver(stddeb,"GetNextDriver("NPFMT", %08lX);\n", hDrvr, dwFlags);
|
||||
dprintf_driver(stddeb,"GetNextDriver(%04x, %08lX);\n", hDrvr, dwFlags);
|
||||
if (hDrvr == 0) {
|
||||
if (lpDrvItemList == NULL) {
|
||||
dprintf_driver(stddeb,
|
||||
|
@ -199,7 +199,7 @@ HDRVR GetNextDriver(HDRVR hDrvr, DWORD dwFlags)
|
|||
LoadStartupDrivers();
|
||||
if (lpDrvItemList == NULL) return 0;
|
||||
}
|
||||
dprintf_driver(stddeb,"GetNextDriver // return first "NPFMT" !\n",
|
||||
dprintf_driver(stddeb,"GetNextDriver // return first %04x !\n",
|
||||
lpDrvItemList->dis.hDriver);
|
||||
return lpDrvItemList->dis.hDriver;
|
||||
}
|
||||
|
@ -215,7 +215,7 @@ HDRVR GetNextDriver(HDRVR hDrvr, DWORD dwFlags)
|
|||
}
|
||||
GlobalUnlock(hDrvr);
|
||||
}
|
||||
dprintf_driver(stddeb,"GetNextDriver // return "NPFMT" !\n", hRetDrv);
|
||||
dprintf_driver(stddeb,"GetNextDriver // return %04x !\n", hRetDrv);
|
||||
return hRetDrv;
|
||||
}
|
||||
|
||||
|
|
16
misc/exec.c
16
misc/exec.c
|
@ -55,7 +55,7 @@ void EXEC_ExitWindows( int retCode )
|
|||
*/
|
||||
BOOL ExitWindows( DWORD dwReturnCode, WORD wReserved )
|
||||
{
|
||||
HWND hwnd, hwndDesktop;
|
||||
HWND hwndDesktop;
|
||||
WND *wndPtr;
|
||||
HWND *list, *pWnd;
|
||||
int count, i;
|
||||
|
@ -70,22 +70,16 @@ BOOL ExitWindows( DWORD dwReturnCode, WORD wReserved )
|
|||
|
||||
hwndDesktop = GetDesktopWindow();
|
||||
count = 0;
|
||||
for (hwnd = GetTopWindow(hwndDesktop); hwnd != 0; hwnd = wndPtr->hwndNext)
|
||||
{
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return FALSE;
|
||||
for (wndPtr = WIN_GetDesktop()->child; wndPtr; wndPtr = wndPtr->next)
|
||||
count++;
|
||||
}
|
||||
if (!count) /* No windows, we can exit at once */
|
||||
EXEC_ExitWindows( LOWORD(dwReturnCode) );
|
||||
|
||||
/* Now build the list of all windows */
|
||||
|
||||
if (!(list = (HWND *)malloc( sizeof(HWND) * count ))) return FALSE;
|
||||
for (hwnd = GetTopWindow(hwndDesktop), pWnd = list; hwnd != 0; hwnd = wndPtr->hwndNext)
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
*pWnd++ = hwnd;
|
||||
}
|
||||
if (!(pWnd = list = (HWND *)malloc( sizeof(HWND) * count ))) return FALSE;
|
||||
for (wndPtr = WIN_GetDesktop()->child; wndPtr; wndPtr = wndPtr->next)
|
||||
*pWnd++ = wndPtr->hwndSelf;
|
||||
|
||||
/* Now send a WM_QUERYENDSESSION message to every window */
|
||||
|
||||
|
|
|
@ -263,7 +263,7 @@ LZRead(HFILE fd,SEGPTR segbuf,WORD toread) {
|
|||
BYTE *buf;
|
||||
struct lzstate *lzs;
|
||||
|
||||
dprintf_file(stddeb,"LZRead(%d,%08lx,%d)\n",fd,segbuf,toread);
|
||||
dprintf_file(stddeb,"LZRead(%d,%08lx,%d)\n",fd,(DWORD)segbuf,toread);
|
||||
howmuch=toread;
|
||||
for (i=0;i<nroflzstates;i++)
|
||||
if (lzstates[i].lzfd==fd)
|
||||
|
|
60
misc/main.c
60
misc/main.c
|
@ -831,6 +831,66 @@ LPVOID GetEnvironmentStrings(void)
|
|||
return envtable;
|
||||
}
|
||||
|
||||
|
||||
LPVOID GetEnvironmentStringsW(void)
|
||||
{
|
||||
int count,len;
|
||||
LPENVENTRY lpEnv;
|
||||
char *envtable, *envptr;
|
||||
WCHAR *wenvtable;
|
||||
|
||||
/* Count the total number of bytes we'll need for the string
|
||||
* table. Include the trailing nuls and the final double nul.
|
||||
*/
|
||||
count = 1;
|
||||
lpEnv = lpEnvList;
|
||||
while(lpEnv != NULL)
|
||||
{
|
||||
if(lpEnv->Name != NULL)
|
||||
{
|
||||
count += strlen(lpEnv->Name) + 1;
|
||||
count += strlen(lpEnv->Value) + 1;
|
||||
}
|
||||
lpEnv = lpEnv->Next;
|
||||
}
|
||||
|
||||
len=count;
|
||||
envtable = malloc(count);
|
||||
if(envtable)
|
||||
{
|
||||
lpEnv = lpEnvList;
|
||||
envptr = envtable;
|
||||
|
||||
while(lpEnv != NULL)
|
||||
{
|
||||
if(lpEnv->Name != NULL)
|
||||
{
|
||||
count = sprintf(envptr, "%s=%s", lpEnv->Name, lpEnv->Value);
|
||||
envptr += count + 1;
|
||||
}
|
||||
lpEnv = lpEnv->Next;
|
||||
}
|
||||
*envptr = '\0';
|
||||
}
|
||||
|
||||
wenvtable = malloc(2*len);
|
||||
for(count=0;count<len;count++)
|
||||
wenvtable[count]=(WCHAR)envtable[count];
|
||||
free(envtable);
|
||||
|
||||
return envtable;
|
||||
}
|
||||
|
||||
void FreeEnvironmentStringsA(void *e)
|
||||
{
|
||||
free(e);
|
||||
}
|
||||
|
||||
void FreeEnvironmentStringsW(void* e)
|
||||
{
|
||||
free(e);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* GetTimerResolution (USER.14)
|
||||
*/
|
||||
|
|
|
@ -117,7 +117,7 @@ int WNetSetJobCopies(LPSTR szQueue,WORD wJobId,WORD nCopies)
|
|||
*/
|
||||
int WNetWatchQueue(HWND hWnd,LPSTR szLocal,LPSTR szUser,WORD nQueue)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetWatchQueue("NPFMT",'%s','%s',%x)\n",
|
||||
printf("EMPTY STUB !!! WNetWatchQueue(%04x,'%s','%s',%x)\n",
|
||||
hWnd,szLocal,szUser,nQueue);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -193,7 +193,7 @@ int WNetGetCaps(WORD capability)
|
|||
*/
|
||||
int WNetDeviceMode(HWND hWndOwner)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetDeviceMode("NPFMT")\n",hWndOwner);
|
||||
printf("EMPTY STUB !!! WNetDeviceMode(%04x)\n",hWndOwner);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
||||
|
@ -202,7 +202,7 @@ int WNetDeviceMode(HWND hWndOwner)
|
|||
*/
|
||||
int WNetBrowseDialog(HWND hParent,WORD nType,LPSTR szPath)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetBrowseDialog("NPFMT",%x,'%s')\n",
|
||||
printf("EMPTY STUB !!! WNetBrowseDialog(%04x,%x,'%s')\n",
|
||||
hParent,nType,szPath);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ int WNetGetErrorText(WORD nError, LPSTR lpBuffer, LPWORD nBufferSize)
|
|||
*/
|
||||
int WNetRestoreConnection(HWND hwndOwner,LPSTR lpszDevice)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetRestoreConnection("NPFMT",'%s')\n",
|
||||
printf("EMPTY STUB !!! WNetRestoreConnection(%04x,'%s')\n",
|
||||
hwndOwner,lpszDevice);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ int WNetRestoreConnection(HWND hwndOwner,LPSTR lpszDevice)
|
|||
*/
|
||||
int WNetWriteJob(HANDLE hJob,void *lpData,LPWORD lpcbData)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetWriteJob("NPFMT",%p,%p)\n",
|
||||
printf("EMPTY STUB !!! WNetWriteJob(%04x,%p,%p)\n",
|
||||
hJob,lpData,lpcbData);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ int WNetWriteJob(HANDLE hJob,void *lpData,LPWORD lpcbData)
|
|||
*/
|
||||
UINT WNetConnectDialog(HWND hWndParent, WORD iType)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetConnectDialog("NPFMT", %4X)\n", hWndParent, iType);
|
||||
printf("EMPTY STUB !!! WNetConnectDialog(%04x, %4X)\n", hWndParent, iType);
|
||||
return WN_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -291,7 +291,7 @@ UINT WNetConnectDialog(HWND hWndParent, WORD iType)
|
|||
*/
|
||||
int WNetDisconnectDialog(HWND hwndOwner, WORD iType)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetDisconnectDialog("NPFMT",%x)\n",
|
||||
printf("EMPTY STUB !!! WNetDisconnectDialog(%04x,%x)\n",
|
||||
hwndOwner,iType);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -301,7 +301,7 @@ int WNetDisconnectDialog(HWND hwndOwner, WORD iType)
|
|||
*/
|
||||
UINT WNetConnectionDialog(HWND hWndParent, WORD iType)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetConnectionDialog("NPFMT", %4X)\n",
|
||||
printf("EMPTY STUB !!! WNetConnectionDialog(%04x, %4X)\n",
|
||||
hWndParent, iType);
|
||||
return WN_SUCCESS;
|
||||
}
|
||||
|
@ -311,7 +311,7 @@ UINT WNetConnectionDialog(HWND hWndParent, WORD iType)
|
|||
*/
|
||||
int WNetViewQueueDialog(HWND hwndOwner,LPSTR lpszQueue)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetViewQueueDialog("NPFMT",'%s')\n",
|
||||
printf("EMPTY STUB !!! WNetViewQueueDialog(%04x,'%s')\n",
|
||||
hwndOwner,lpszQueue);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -322,7 +322,7 @@ int WNetViewQueueDialog(HWND hwndOwner,LPSTR lpszQueue)
|
|||
int WNetPropertyDialog(HWND hwndParent,WORD iButton,
|
||||
WORD nPropSel,LPSTR lpszName,WORD nType)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetPropertyDialog("NPFMT",%x,%x,'%s',%x)\n",
|
||||
printf("EMPTY STUB !!! WNetPropertyDialog(%04x,%x,%x,'%s',%x)\n",
|
||||
hwndParent,iButton,nPropSel,lpszName,nType);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -342,7 +342,7 @@ int WNetGetDirectoryType(LPSTR lpName,void *lpType)
|
|||
*/
|
||||
int WNetDirectoryNotify(HWND hwndOwner,void *lpDir,WORD wOper)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetDirectoryNotify("NPFMT",%p,%x)\n",
|
||||
printf("EMPTY STUB !!! WNetDirectoryNotify(%04x,%p,%x)\n",
|
||||
hwndOwner,lpDir,wOper);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -353,7 +353,7 @@ int WNetDirectoryNotify(HWND hwndOwner,void *lpDir,WORD wOper)
|
|||
int WNetGetPropertyText(HWND hwndParent,WORD iButton,WORD nPropSel,
|
||||
LPSTR lpszName,WORD nType)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetGetPropertyText("NPFMT",%x,%x,'%s',%x)\n",
|
||||
printf("EMPTY STUB !!! WNetGetPropertyText(%04x,%x,%x,'%s',%x)\n",
|
||||
hwndParent,iButton,nPropSel,lpszName,nType);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -374,7 +374,7 @@ UINT WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord,
|
|||
*/
|
||||
UINT WNetCloseEnum(HANDLE hEnum)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetCloseEnum("NPFMT");\n", hEnum);
|
||||
printf("EMPTY STUB !!! WNetCloseEnum(%04x);\n", hEnum);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
||||
|
@ -384,7 +384,7 @@ UINT WNetCloseEnum(HANDLE hEnum)
|
|||
UINT WNetEnumResource(HANDLE hEnum, DWORD cRequ,
|
||||
DWORD *lpCount, LPVOID lpBuf)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetEnumResource("NPFMT", %08lX, %p, %p);\n",
|
||||
printf("EMPTY STUB !!! WNetEnumResource(%04x, %08lX, %p, %p);\n",
|
||||
hEnum, cRequ, lpCount, lpBuf);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
@ -396,7 +396,7 @@ UINT WNetOpenEnum(DWORD dwScope, DWORD dwType,
|
|||
LPNETRESOURCE lpNet, HANDLE FAR *lphEnum)
|
||||
{
|
||||
printf("EMPTY STUB !!! WNetOpenEnum(%08lX, %08lX, %p, %p);\n",
|
||||
dwScope, dwType, lpNet, lphEnum);
|
||||
dwScope, dwType, lpNet, lphEnum);
|
||||
return WN_NET_ERROR;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,6 +52,6 @@ OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC hServerDoc)
|
|||
*/
|
||||
BOOL WINAPI OleIsDcMeta(HDC hdc)
|
||||
{
|
||||
dprintf_ole(stddeb,"OleIsDCMeta("NPFMT")\n",hdc);
|
||||
dprintf_ole(stddeb,"OleIsDCMeta(%04x)\n",hdc);
|
||||
return GDI_GetObjPtr( hdc, METAFILE_DC_MAGIC ) != 0;
|
||||
}
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
*
|
||||
* Copyright 1993 Alexandre Julliard
|
||||
*
|
||||
static char Copyright[] = "Copyright Alexandre Julliard, 1993";
|
||||
*/
|
||||
*/
|
||||
|
||||
#include "windows.h"
|
||||
|
||||
|
|
10
misc/shell.c
10
misc/shell.c
|
@ -229,6 +229,7 @@ LONG RegOpenKey(HKEY hKey, LPCSTR lpSubKey, LPHKEY lphKey)
|
|||
lpKey = lphTopKey; break;
|
||||
case HKEY_CLASSES_ROOT: /* == 1 */
|
||||
case 0x80000000:
|
||||
case 0x80000001:
|
||||
lpKey = lphRootKey; break;
|
||||
default:
|
||||
dprintf_reg(stddeb,"RegOpenKey // specific key = %08lX !\n", (DWORD)hKey);
|
||||
|
@ -442,6 +443,7 @@ LONG RegEnumKey(HKEY hKey, DWORD dwSubKey, LPSTR lpBuf, DWORD dwSize)
|
|||
lpKey = lphTopKey; break;
|
||||
case HKEY_CLASSES_ROOT: /* == 1 */
|
||||
case 0x80000000:
|
||||
case 0x80000001:
|
||||
lpKey = lphRootKey; break;
|
||||
default:
|
||||
dprintf_reg(stddeb,"RegEnumKey // specific key = %08lX !\n", (DWORD)hKey);
|
||||
|
@ -470,7 +472,7 @@ LONG RegEnumKey(HKEY hKey, DWORD dwSubKey, LPSTR lpBuf, DWORD dwSize)
|
|||
void DragAcceptFiles(HWND hWnd, BOOL b)
|
||||
{
|
||||
/* flips WS_EX_ACCEPTFILES bit according to the value of b */
|
||||
dprintf_reg(stddeb,"DragAcceptFiles("NPFMT", %u) old exStyle %08lx\n",
|
||||
dprintf_reg(stddeb,"DragAcceptFiles(%04x, %u) old exStyle %08lx\n",
|
||||
hWnd,b,GetWindowLong(hWnd,GWL_EXSTYLE));
|
||||
|
||||
SetWindowLong(hWnd,GWL_EXSTYLE,
|
||||
|
@ -491,7 +493,7 @@ UINT DragQueryFile(HDROP hDrop, WORD wFile, LPSTR lpszFile, WORD wLength)
|
|||
LPSTR lpCurrent;
|
||||
WORD i;
|
||||
|
||||
dprintf_reg(stddeb,"DragQueryFile("NPFMT", %i, %p, %u)\n",
|
||||
dprintf_reg(stddeb,"DragQueryFile(%04x, %i, %p, %u)\n",
|
||||
hDrop,wFile,lpszFile,wLength);
|
||||
|
||||
lpDropFileStruct = (LPDROPFILESTRUCT) GlobalLock(hDrop);
|
||||
|
@ -563,7 +565,7 @@ HINSTANCE ShellExecute(HWND hWnd, LPCSTR lpOperation, LPCSTR lpFile, LPSTR lpPar
|
|||
* we have to pass the parameters. If an instance is already running,
|
||||
* we might have to send DDE commands.
|
||||
*/
|
||||
dprintf_exec(stddeb, "ShellExecute("NPFMT",'%s','%s','%s','%s',%x)\n",
|
||||
dprintf_exec(stddeb, "ShellExecute(%04x,'%s','%s','%s','%s',%x)\n",
|
||||
hWnd, lpOperation ? lpOperation:"<null>", lpFile ? lpFile:"<null>",
|
||||
lpParameters ? lpParameters : "<null>",
|
||||
lpDirectory ? lpDirectory : "<null>", iShowCmd);
|
||||
|
@ -719,7 +721,7 @@ HICON ExtractIcon(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex)
|
|||
{
|
||||
HICON hIcon = 0;
|
||||
HINSTANCE hInst2 = hInst;
|
||||
dprintf_reg(stddeb, "ExtractIcon("NPFMT", '%s', %d\n",
|
||||
dprintf_reg(stddeb, "ExtractIcon(%04x, '%s', %d\n",
|
||||
hInst, lpszExeFileName, nIconIndex);
|
||||
return 0;
|
||||
if (lpszExeFileName != NULL) {
|
||||
|
|
12
misc/spy.c
12
misc/spy.c
|
@ -432,7 +432,7 @@ void SPY_EnterMessage( int iFlag, HWND hWnd, UINT msg,
|
|||
switch(iFlag)
|
||||
{
|
||||
case SPY_DISPATCHMESSAGE:
|
||||
dprintf_message(stddeb,"("NPFMT") message [%04x] %s dispatched wp=%04x lp=%08lx\n",
|
||||
dprintf_message(stddeb,"(%04x) message [%04x] %s dispatched wp=%04x lp=%08lx\n",
|
||||
hWnd, msg, SPY_GetMsgName( msg ),
|
||||
wParam, lParam);
|
||||
break;
|
||||
|
@ -443,10 +443,10 @@ void SPY_EnterMessage( int iFlag, HWND hWnd, UINT msg,
|
|||
HTASK hTask = GetWindowTask(hWnd);
|
||||
if (hTask == GetCurrentTask()) strcpy( taskName, "self" );
|
||||
else if (!hTask) strcpy( taskName, "Wine" );
|
||||
else sprintf( taskName, "task "NPFMT" %s",
|
||||
else sprintf( taskName, "task %04x %s",
|
||||
hTask, MODULE_GetModuleName( GetExePtr(hTask) ) );
|
||||
|
||||
dprintf_message(stddeb,"%*s("NPFMT") message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
|
||||
dprintf_message(stddeb,"%*s(%04x) message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
|
||||
SPY_IndentLevel, "", hWnd, msg,
|
||||
SPY_GetMsgName( msg ), taskName, wParam, lParam );
|
||||
SPY_IndentLevel += SPY_INDENT_UNIT;
|
||||
|
@ -454,7 +454,7 @@ void SPY_EnterMessage( int iFlag, HWND hWnd, UINT msg,
|
|||
break;
|
||||
|
||||
case SPY_DEFWNDPROC:
|
||||
dprintf_message(stddeb, "%*s("NPFMT") DefWindowProc: %s [%04x] wp=%04x lp=%08lx\n",
|
||||
dprintf_message(stddeb, "%*s(%04x) DefWindowProc: %s [%04x] wp=%04x lp=%08lx\n",
|
||||
SPY_IndentLevel, "", hWnd, SPY_GetMsgName( msg ),
|
||||
msg, wParam, lParam );
|
||||
break;
|
||||
|
@ -473,12 +473,12 @@ void SPY_ExitMessage( int iFlag, HWND hWnd, UINT msg, LRESULT lReturn )
|
|||
switch(iFlag)
|
||||
{
|
||||
case SPY_RESULT_INVALIDHWND:
|
||||
dprintf_message(stddeb,"%*s("NPFMT") message [%04x] %s HAS INVALID HWND\n",
|
||||
dprintf_message(stddeb,"%*s(%04x) message [%04x] %s HAS INVALID HWND\n",
|
||||
SPY_IndentLevel, "", hWnd, msg,
|
||||
SPY_GetMsgName( msg ) );
|
||||
break;
|
||||
case SPY_RESULT_OK:
|
||||
dprintf_message(stddeb,"%*s("NPFMT") message [%04x] %s returned %08lx\n",
|
||||
dprintf_message(stddeb,"%*s(%04x) message [%04x] %s returned %08lx\n",
|
||||
SPY_IndentLevel, "", hWnd, msg,
|
||||
SPY_GetMsgName( msg ), lReturn );
|
||||
break;
|
||||
|
|
444
misc/winsocket.c
444
misc/winsocket.c
|
@ -49,7 +49,13 @@ struct ipc_packet {
|
|||
#pragma pack(1)
|
||||
#endif
|
||||
|
||||
#define IPC_PACKET_SIZE (sizeof(struct ipc_packet) - sizeof(long))
|
||||
#define WINSOCK_MAX_SOCKETS 256
|
||||
#define WINSOCK_MAX_UDPDG 1024
|
||||
|
||||
/* we are out by two with the following, is it due to byte alignment?
|
||||
* #define IPC_PACKET_SIZE (sizeof(struct ipc_packet) - sizeof(long))
|
||||
*/
|
||||
#define IPC_PACKET_SIZE (sizeof(struct ipc_packet) - sizeof(long) - 2)
|
||||
/*#define MTYPE 0xb0b0eb05*/
|
||||
#define MTYPE 0x30b0eb05
|
||||
|
||||
|
@ -152,8 +158,7 @@ static WORD wsaerrno(void)
|
|||
fprintf(stderr, "winsock: errno %d, (%s).\n",
|
||||
errno, sys_errlist[errno]);
|
||||
#else
|
||||
fprintf(stderr, "winsock: errno %d, (%s).\n",
|
||||
errno, strerror(errno));
|
||||
fprintf(stderr, "winsock: errno %d\n", errno);
|
||||
#endif
|
||||
#else
|
||||
fprintf(stderr, "winsock: errno %d\n", errno);
|
||||
|
@ -242,8 +247,8 @@ static WORD wsaherrno(void)
|
|||
|
||||
switch(h_errno)
|
||||
{
|
||||
case TRY_AGAIN: return WSATRY_AGAIN;
|
||||
case HOST_NOT_FOUND: return WSAHOST_NOT_FOUND;
|
||||
case TRY_AGAIN: return WSATRY_AGAIN;
|
||||
case NO_RECOVERY: return WSANO_RECOVERY;
|
||||
case NO_DATA: return WSANO_DATA;
|
||||
/* just in case we ever get here and there are no problems */
|
||||
|
@ -380,6 +385,11 @@ SOCKET WINSOCK_accept(SOCKET s, struct sockaddr *addr, INT *addrlen)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_accept: socket %d, ptr %8x, length %d\n", s, (int) addr, *addrlen);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
if ((sock = accept(s, addr, (int *) addrlen)) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return INVALID_SOCKET;
|
||||
|
@ -389,11 +399,38 @@ SOCKET WINSOCK_accept(SOCKET s, struct sockaddr *addr, INT *addrlen)
|
|||
|
||||
INT WINSOCK_bind(SOCKET s, struct sockaddr *name, INT namelen)
|
||||
{
|
||||
|
||||
dprintf_winsock(stddeb, "WSA_bind: socket %d, ptr %8x, length %d\n", s, (int) name, namelen);
|
||||
dump_sockaddr(name);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (namelen < sizeof(*name)) {
|
||||
WSASetLastError(WSAEFAULT);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
/* check the socket family */
|
||||
if ( ((struct sockaddr_in *)name)->sin_family != AF_INET ) {
|
||||
WSASetLastError(WSAEAFNOSUPPORT);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (bind(s, name, namelen) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
switch(errno) {
|
||||
case EBADF:
|
||||
WSASetLastError(WSAENOTSOCK);
|
||||
break;
|
||||
case EADDRNOTAVAIL:
|
||||
WSASetLastError(WSAEINVAL);
|
||||
break;
|
||||
default:
|
||||
errno_to_wsaerrno();
|
||||
break;
|
||||
}
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
return 0;
|
||||
|
@ -403,10 +440,18 @@ INT WINSOCK_closesocket(SOCKET s)
|
|||
{
|
||||
dprintf_winsock(stddeb, "WSA_closesocket: socket %d\n", s);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
FD_CLR(s, &fd_in_use);
|
||||
|
||||
if (close(s) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
if (errno == EBADF)
|
||||
WSASetLastError(WSAENOTSOCK);
|
||||
else
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
return 0;
|
||||
|
@ -417,6 +462,11 @@ INT WINSOCK_connect(SOCKET s, struct sockaddr *name, INT namelen)
|
|||
dprintf_winsock(stddeb, "WSA_connect: socket %d, ptr %8x, length %d\n", s, (int) name, namelen);
|
||||
dump_sockaddr(name);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (connect(s, name, namelen) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -429,6 +479,11 @@ INT WINSOCK_getpeername(SOCKET s, struct sockaddr *name, INT *namelen)
|
|||
dprintf_winsock(stddeb, "WSA_getpeername: socket: %d, ptr %8x, ptr %8x\n", s, (int) name, *namelen);
|
||||
dump_sockaddr(name);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (getpeername(s, name, (int *) namelen) < 0) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -443,6 +498,12 @@ INT WINSOCK_getpeername(SOCKET s, struct sockaddr *name, INT *namelen)
|
|||
INT WINSOCK_getsockname(SOCKET s, struct sockaddr *name, INT *namelen)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_getsockname: socket: %d, ptr %8x, ptr %8x\n", s, (int) name, (int) *namelen);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (getsockname(s, name, (int *) namelen) < 0) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -458,10 +519,19 @@ INT
|
|||
WINSOCK_getsockopt(SOCKET s, INT level, INT optname, char *optval, INT *optlen)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_getsockopt: socket: %d, opt %d, ptr %8x, ptr %8x\n", s, level, (int) optval, (int) *optlen);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
convert_sockopt(&level, &optname);
|
||||
|
||||
if (getsockopt(s, (int) level, optname, optval, (int *) optlen) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
if (errno == EBADF)
|
||||
WSASetLastError(WSAENOTSOCK);
|
||||
else
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
return 0;
|
||||
|
@ -505,6 +575,11 @@ INT WINSOCK_ioctlsocket(SOCKET s, u_long cmd, u_long *argp)
|
|||
char *ctlname;
|
||||
dprintf_winsock(stddeb, "WSA_ioctl: socket %d, cmd %lX, ptr %8x\n", s, cmd, (int) argp);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
/* Why can't they all use the same ioctl numbers */
|
||||
newcmd=cmd;
|
||||
newargp=argp;
|
||||
|
@ -532,7 +607,10 @@ INT WINSOCK_ioctlsocket(SOCKET s, u_long cmd, u_long *argp)
|
|||
|
||||
|
||||
if (ioctl(s, newcmd, newargp) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
if (errno == EBADF)
|
||||
WSASetLastError(WSAENOTSOCK);
|
||||
else
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
return 0;
|
||||
|
@ -542,6 +620,11 @@ INT WINSOCK_listen(SOCKET s, INT backlog)
|
|||
{
|
||||
dprintf_winsock(stddeb, "WSA_listen: socket %d, backlog %d\n", s, backlog);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (listen(s, backlog) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -565,6 +648,11 @@ INT WINSOCK_recv(SOCKET s, char *buf, INT len, INT flags)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_recv: socket %d, ptr %8x, length %d, flags %d\n", s, (int) buf, len, flags);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if ((length = recv(s, buf, len, flags)) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -579,6 +667,11 @@ INT WINSOCK_recvfrom(SOCKET s, char *buf, INT len, INT flags,
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_recvfrom: socket %d, ptr %8lx, length %d, flags %d\n", s, (unsigned long)buf, len, flags);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if ((length = recvfrom(s, buf, len, flags, from, fromlen)) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -591,6 +684,11 @@ INT WINSOCK_select(INT nfds, fd_set *readfds, fd_set *writefds,
|
|||
{
|
||||
dprintf_winsock(stddeb, "WSA_select: fd # %d, ptr %8lx, ptr %8lx, ptr %8lX\n", nfds, (unsigned long) readfds, (unsigned long) writefds, (unsigned long) exceptfds);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
/* FIXME */
|
||||
return(select(nfds, readfds, writefds, exceptfds, timeout));
|
||||
}
|
||||
|
||||
|
@ -600,6 +698,11 @@ INT WINSOCK_send(SOCKET s, char *buf, INT len, INT flags)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_send: socket %d, ptr %8lx, length %d, flags %d\n", s, (unsigned long) buf, len, flags);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if ((length = send(s, buf, len, flags)) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -614,6 +717,11 @@ INT WINSOCK_sendto(SOCKET s, char *buf, INT len, INT flags,
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_sendto: socket %d, ptr %8lx, length %d, flags %d\n", s, (unsigned long) buf, len, flags);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if ((length = sendto(s, buf, len, flags, to, tolen)) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -627,6 +735,11 @@ INT WINSOCK_setsockopt(SOCKET s, INT level, INT optname, const char *optval,
|
|||
dprintf_winsock(stddeb, "WSA_setsockopt: socket %d, level %d, opt %d, ptr %8x, len %d\n", s, level, optname, (int) optval, optlen);
|
||||
convert_sockopt(&level, &optname);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (setsockopt(s, level, optname, optval, optlen) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -638,6 +751,11 @@ INT WINSOCK_shutdown(SOCKET s, INT how)
|
|||
{
|
||||
dprintf_winsock(stddeb, "WSA_shutdown: socket s %d, how %d\n", s, how);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (shutdown(s, how) < 0) {
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
|
@ -651,24 +769,73 @@ SOCKET WINSOCK_socket(INT af, INT type, INT protocol)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_socket: af=%d type=%d protocol=%d\n", af, type, protocol);
|
||||
|
||||
if ((sock = socket(af, type, protocol)) < 0) {
|
||||
if (errno != EPERM) {
|
||||
errno_to_wsaerrno();
|
||||
} else {
|
||||
/* NOTE: EPERM does not always map to WSAESOCKTNOSUPPORT
|
||||
* so this is done as a special case
|
||||
*/
|
||||
/* non super-user wants a raw socket */
|
||||
dprintf_winsock(stderr, "WSA_socket: not enough privileges\n");
|
||||
WSASetLastError(WSAESOCKTNOSUPPORT);
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
/* check the socket family */
|
||||
switch(af) {
|
||||
case AF_INET:
|
||||
case AF_UNSPEC:
|
||||
break;
|
||||
default:
|
||||
WSASetLastError(WSAEAFNOSUPPORT);
|
||||
return INVALID_SOCKET;
|
||||
break;
|
||||
}
|
||||
|
||||
/* check the socket type */
|
||||
switch(type) {
|
||||
case SOCK_STREAM:
|
||||
case SOCK_DGRAM:
|
||||
case SOCK_RAW:
|
||||
break;
|
||||
default:
|
||||
WSASetLastError(WSAESOCKTNOSUPPORT);
|
||||
return INVALID_SOCKET;
|
||||
break;
|
||||
}
|
||||
|
||||
/* check the protocol type */
|
||||
if ( protocol < 0 ) { /* don't support negative values */
|
||||
WSASetLastError(WSAEPROTONOSUPPORT);
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
if ( af == AF_UNSPEC) { /* did they not specify the address family? */
|
||||
switch(protocol) {
|
||||
case IPPROTO_TCP:
|
||||
if (type == SOCK_STREAM) {
|
||||
af = AF_INET;
|
||||
break;
|
||||
}
|
||||
case IPPROTO_UDP:
|
||||
if (type == SOCK_DGRAM) {
|
||||
af = AF_INET;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
WSASetLastError(WSAEPROTOTYPE);
|
||||
return INVALID_SOCKET;
|
||||
break;
|
||||
}
|
||||
dprintf_winsock(stddeb, "WSA_socket: failed !\n");
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
if ((sock = socket(af, type, protocol)) < 0) {
|
||||
if (errno == EPERM) {
|
||||
/* non super-user wants a raw socket */
|
||||
fprintf(stderr, "WSA_socket: not enough privileges\n");
|
||||
WSASetLastError(WSAESOCKTNOSUPPORT);
|
||||
} else
|
||||
errno_to_wsaerrno();
|
||||
dprintf_winsock(stddeb, "WSA_socket: failed !\n");
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
|
||||
if (sock > 0xffff) {
|
||||
/* we only support socket numbers up to 0xffff. The return
|
||||
* value indicates there are no more descriptors available
|
||||
if (sock > WINSOCK_MAX_SOCKETS) {
|
||||
/* we only support socket numbers up to WINSOCK_MAX_SOCKETS.
|
||||
* The return value indicates no more descriptors are available
|
||||
*/
|
||||
WSASetLastError(WSAEMFILE);
|
||||
return INVALID_SOCKET;
|
||||
|
@ -689,6 +856,11 @@ SEGPTR WINSOCK_gethostbyaddr(const char *addr, INT len, INT type)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_gethostbyaddr: ptr %8x, len %d, type %d\n", (int) addr, len, type);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((host = gethostbyaddr(addr, len, type)) == NULL) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -711,6 +883,11 @@ SEGPTR WINSOCK_gethostbyname(const char *name)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_gethostbyname: %s\n", name);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((host = gethostbyname(name)) == NULL) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -728,12 +905,16 @@ INT WINSOCK_gethostname(char *name, INT namelen)
|
|||
{
|
||||
dprintf_winsock(stddeb, "WSA_gethostname: name %s, len %d\n", name, namelen);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
if (gethostname(name, namelen) < 0) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
} else {
|
||||
herrno_to_wsaerrno();
|
||||
}
|
||||
if (errno == EINVAL)
|
||||
WSASetLastError(WSAEFAULT);
|
||||
else
|
||||
errno_to_wsaerrno();
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
return 0;
|
||||
|
@ -748,6 +929,11 @@ SEGPTR WINSOCK_getprotobyname(char *name)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_getprotobyname: name %s\n", name);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((proto = getprotobyname(name)) == NULL) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -770,12 +956,20 @@ SEGPTR WINSOCK_getprotobynumber(INT number)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_getprotobynumber: num %d\n", number);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((proto = getprotobynumber(number)) == NULL) {
|
||||
#if 0
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
} else {
|
||||
herrno_to_wsaerrno();
|
||||
}
|
||||
#endif
|
||||
WSASetLastError(WSANO_DATA);
|
||||
return NULL;
|
||||
}
|
||||
CONVERT_PROTOENT(&Heap->protoent_number, proto);
|
||||
|
@ -795,6 +989,11 @@ SEGPTR WINSOCK_getservbyname(const char *name, const char *proto)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_getservbyname: name %s, proto %s\n", name, proto);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((service = getservbyname(name, proto)) == NULL) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -817,6 +1016,11 @@ SEGPTR WINSOCK_getservbyport(INT port, const char *proto)
|
|||
|
||||
dprintf_winsock(stddeb, "WSA_getservbyport: port %d, name %s\n", port, proto);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((service = getservbyport(port, proto)) == NULL) {
|
||||
if (h_errno < 0) {
|
||||
errno_to_wsaerrno();
|
||||
|
@ -833,7 +1037,7 @@ SEGPTR WINSOCK_getservbyport(INT port, const char *proto)
|
|||
/******************** winsock specific functions ************************
|
||||
*
|
||||
*/
|
||||
static HANDLE new_handle = 0;
|
||||
static HANDLE new_handle = 1;
|
||||
|
||||
static HANDLE AllocWSAHandle(void)
|
||||
{
|
||||
|
@ -843,15 +1047,17 @@ static HANDLE AllocWSAHandle(void)
|
|||
static void recv_message(int sig)
|
||||
{
|
||||
static struct ipc_packet message;
|
||||
static int message_is_valid = 0;
|
||||
int message_is_valid = 0;
|
||||
BOOL result;
|
||||
|
||||
message.mtype = MTYPE;
|
||||
|
||||
signal(SIGUSR1, recv_message);
|
||||
while (1) {
|
||||
|
||||
if (!message_is_valid) {
|
||||
if (msgrcv(wine_key, (struct msgbuf*)&(message),
|
||||
IPC_PACKET_SIZE, MTYPE, IPC_NOWAIT) == -1) {
|
||||
IPC_PACKET_SIZE, 0 /*MTYPE*/, IPC_NOWAIT) == -1) {
|
||||
perror("wine: winsock: msgrcv");
|
||||
break;
|
||||
}
|
||||
|
@ -859,7 +1065,7 @@ static void recv_message(int sig)
|
|||
|
||||
result = PostMessage(message.hWnd, message.wMsg,
|
||||
(WPARAM)message.handle, message.lParam);
|
||||
if (result == FALSE) {
|
||||
if (result != FALSE) {
|
||||
message_is_valid = 1;
|
||||
break;
|
||||
}
|
||||
|
@ -868,6 +1074,8 @@ static void recv_message(int sig)
|
|||
|
||||
}
|
||||
|
||||
if ((wine_key = msgget(IPC_PRIVATE, 0600)) == -1)
|
||||
perror("wine: winsock: msgget");
|
||||
}
|
||||
|
||||
|
||||
|
@ -884,7 +1092,7 @@ static void send_message( HWND hWnd, u_int wMsg, HANDLE handle, long lParam)
|
|||
if (msgsnd(wine_key, (struct msgbuf*)&(message),
|
||||
IPC_PACKET_SIZE, 0/*IPC_NOWAIT*/) == -1)
|
||||
perror("wine: winsock: msgsnd");
|
||||
|
||||
|
||||
kill(getppid(), SIGUSR1);
|
||||
}
|
||||
|
||||
|
@ -894,10 +1102,18 @@ HANDLE WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, const char *addr,
|
|||
{
|
||||
HANDLE handle;
|
||||
struct hostent *host;
|
||||
int newpid;
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = AllocWSAHandle();
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return handle;
|
||||
} else {
|
||||
if ((host = gethostbyaddr(addr, len, type)) == NULL) {
|
||||
|
@ -921,10 +1137,18 @@ HANDLE WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, const char *name,
|
|||
{
|
||||
HANDLE handle;
|
||||
struct hostent *host;
|
||||
int newpid;
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = AllocWSAHandle();
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return handle;
|
||||
} else {
|
||||
if ((host = gethostbyname(name)) == NULL) {
|
||||
|
@ -948,10 +1172,18 @@ HANDLE WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, const char *name,
|
|||
{
|
||||
HANDLE handle;
|
||||
struct protoent *proto;
|
||||
int newpid;
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = AllocWSAHandle();
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return handle;
|
||||
} else {
|
||||
if ((proto = getprotobyname(name)) == NULL) {
|
||||
|
@ -975,10 +1207,18 @@ HANDLE WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg, INT number,
|
|||
{
|
||||
HANDLE handle;
|
||||
struct protoent *proto;
|
||||
int newpid;
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = AllocWSAHandle();
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return handle;
|
||||
} else {
|
||||
if ((proto = getprotobynumber(number)) == NULL) {
|
||||
|
@ -1002,10 +1242,18 @@ HANDLE WSAAsyncGetServByName(HWND hWnd, u_int wMsg, const char *name,
|
|||
{
|
||||
HANDLE handle;
|
||||
struct servent *service;
|
||||
int newpid;
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = AllocWSAHandle();
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return handle;
|
||||
} else {
|
||||
if ((service = getservbyname(name, proto)) == NULL) {
|
||||
|
@ -1029,10 +1277,18 @@ HANDLE WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, INT port, const char
|
|||
{
|
||||
HANDLE handle;
|
||||
struct servent *service;
|
||||
int newpid;
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
handle = AllocWSAHandle();
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return handle;
|
||||
} else {
|
||||
if ((service = getservbyport(port, proto)) == NULL) {
|
||||
|
@ -1055,8 +1311,14 @@ INT WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, long lEvent)
|
|||
long event;
|
||||
fd_set read_fds, write_fds, except_fds;
|
||||
int errors = 0;
|
||||
int newpid;
|
||||
|
||||
dprintf_winsock(stddeb, "WSA_AsyncSelect: socket %d, HWND "NPFMT", wMsg %d, event %ld\n", s, hWnd, wMsg, lEvent);
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
dprintf_winsock(stddeb, "WSA_AsyncSelect: socket %d, HWND %04x, wMsg %d, event %ld\n", s, hWnd, wMsg, lEvent);
|
||||
|
||||
/* remove outstanding asyncselect() processes */
|
||||
/* kill */
|
||||
|
@ -1064,7 +1326,9 @@ INT WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, long lEvent)
|
|||
if (wMsg == 0 && lEvent == 0)
|
||||
return 0;
|
||||
|
||||
if (fork()) {
|
||||
newpid = fork();
|
||||
if (newpid) {
|
||||
dprintf_winsock(stddeb, "forked, child is (%d)\n",newpid);
|
||||
return 0;
|
||||
} else {
|
||||
while (1) {
|
||||
|
@ -1099,7 +1363,12 @@ INT WSAFDIsSet(INT fd, fd_set *set)
|
|||
|
||||
INT WSACancelAsyncRequest(HANDLE hAsyncTaskHandle)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_AsyncRequest: handle "NPFMT"\n", hAsyncTaskHandle);
|
||||
dprintf_winsock(stddeb, "WSA_AsyncRequest: handle %04x\n", hAsyncTaskHandle);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1107,6 +1376,12 @@ INT WSACancelAsyncRequest(HANDLE hAsyncTaskHandle)
|
|||
INT WSACancelBlockingCall(void)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_CancelBlockCall\n");
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1114,14 +1389,24 @@ INT WSAGetLastError(void)
|
|||
{
|
||||
dprintf_winsock(stddeb, "WSA_GetLastError = %x\n", wsa_errno);
|
||||
|
||||
return wsa_errno;
|
||||
return wsa_errno;
|
||||
}
|
||||
|
||||
void WSASetLastError(INT iError)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_SetLastErorr %d\n", iError);
|
||||
|
||||
wsa_errno = iError;
|
||||
/* technically, we should make sure that WINESockets
|
||||
* has been started up correctly. But since this function
|
||||
* is also used internally, it makes no sense.
|
||||
*
|
||||
*if (!wsa_initted) {
|
||||
* WSASetLastError(WSANOTINITIALISED);
|
||||
* return SOCKET_ERROR;
|
||||
*}
|
||||
*/
|
||||
|
||||
wsa_errno = iError;
|
||||
}
|
||||
|
||||
BOOL WSAIsBlocking(void)
|
||||
|
@ -1134,6 +1419,12 @@ BOOL WSAIsBlocking(void)
|
|||
FARPROC WSASetBlockingHook(FARPROC lpBlockFunc)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_SetBlockHook %8lx, STUB!\n", (unsigned long) lpBlockFunc);
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BlockFunction = lpBlockFunc;
|
||||
|
||||
return (FARPROC) lpBlockFunc;
|
||||
|
@ -1142,11 +1433,18 @@ FARPROC WSASetBlockingHook(FARPROC lpBlockFunc)
|
|||
INT WSAUnhookBlockingHook(void)
|
||||
{
|
||||
dprintf_winsock(stddeb, "WSA_UnhookBlockingHook\n");
|
||||
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BlockFunction = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef 0
|
||||
WSADATA WINSOCK_data = {
|
||||
0x0101,
|
||||
0x0101,
|
||||
|
@ -1162,14 +1460,35 @@ WSADATA WINSOCK_data = {
|
|||
#else
|
||||
"Unknown",
|
||||
#endif
|
||||
128,
|
||||
1024,
|
||||
WINSOCK_MAX_SOCKETS,
|
||||
WINSOCK_MAX_UDPDG,
|
||||
NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
INT WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)
|
||||
{
|
||||
|
||||
WSADATA WINSOCK_data = {
|
||||
0x0101,
|
||||
0x0101,
|
||||
"WINE Sockets",
|
||||
#ifdef linux
|
||||
"Linux/i386",
|
||||
#elif defined(__NetBSD__)
|
||||
"NetBSD/i386",
|
||||
#elif defined(sunos)
|
||||
"SunOS",
|
||||
#elif defined(__FreeBSD__)
|
||||
"FreeBSD",
|
||||
#else
|
||||
"Unknown",
|
||||
#endif
|
||||
WINSOCK_MAX_SOCKETS,
|
||||
WINSOCK_MAX_UDPDG,
|
||||
NULL
|
||||
};
|
||||
|
||||
dprintf_winsock(stddeb, "WSAStartup: verReq=%x\n", wVersionRequested);
|
||||
|
||||
if (LOBYTE(wVersionRequested) < 1 ||
|
||||
|
@ -1186,7 +1505,9 @@ INT WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)
|
|||
return WSASYSNOTREADY;
|
||||
|
||||
Heap = (struct WinSockHeap *) GlobalLock(HeapHandle);
|
||||
memcpy(lpWSAData, &WINSOCK_data, sizeof(WINSOCK_data));
|
||||
|
||||
/* return winsock information */
|
||||
memcpy(lpWSAData, &WINSOCK_data, sizeof(WINSOCK_data));
|
||||
|
||||
/* ipc stuff */
|
||||
|
||||
|
@ -1199,7 +1520,9 @@ INT WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)
|
|||
|
||||
FD_ZERO(&fd_in_use);
|
||||
|
||||
wsa_initted = 1;
|
||||
/* increment our usage count */
|
||||
wsa_initted++;
|
||||
dprintf_winsock(stddeb, "WSAStartup: succeeded\n");
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
@ -1207,14 +1530,25 @@ INT WSACleanup(void)
|
|||
{
|
||||
int fd;
|
||||
|
||||
if (wine_key)
|
||||
if (msgctl(wine_key, IPC_RMID, NULL) == -1)
|
||||
perror("wine: winsock: shmctl");
|
||||
dprintf_winsock(stddeb, "WSACleanup (%d)\n",getpid());
|
||||
|
||||
for (fd = 0; fd != FD_SETSIZE; fd++)
|
||||
if (FD_ISSET(fd, &fd_in_use))
|
||||
close(fd);
|
||||
if (!wsa_initted) {
|
||||
WSASetLastError(WSANOTINITIALISED);
|
||||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
wsa_initted = 0;
|
||||
/* decrement usage count */
|
||||
wsa_initted--;
|
||||
|
||||
if (wsa_initted == 0) {
|
||||
if (wine_key)
|
||||
if (msgctl(wine_key, IPC_RMID, NULL) == -1)
|
||||
perror("wine: winsock: msgctl");
|
||||
|
||||
for (fd = 0; fd != FD_SETSIZE; fd++)
|
||||
if (FD_ISSET(fd, &fd_in_use))
|
||||
close(fd);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
* Copyright 1995 Alexandre Julliard
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "windows.h"
|
||||
#include "drive.h"
|
||||
#include "miscemu.h"
|
||||
|
|
|
@ -24,6 +24,12 @@
|
|||
#include "debug.h"
|
||||
#include "xmalloc.h"
|
||||
|
||||
#ifdef WINELIB32
|
||||
#define UIFMT "%u"
|
||||
#else
|
||||
#define UIFMT "%hu"
|
||||
#endif
|
||||
|
||||
extern MCI_OPEN_DRIVER_PARMS mciDrv[MAXMCIDRIVERS];
|
||||
|
||||
/* FIXME: I need to remember the aliasname of a spec. driver.
|
||||
|
|
|
@ -1066,11 +1066,11 @@ BOOL BITBLT_InternalStretchBlt( DC *dcDst, short xDst, short yDst,
|
|||
dcSrc, xSrc, ySrc, widthSrc, heightSrc,
|
||||
&visRectSrc, &visRectDst ))
|
||||
return TRUE;
|
||||
dprintf_bitblt( stddeb, " vissrc=%ld,%ld-%ld,%ld visdst=%ld,%ld-%ld,%ld\n",
|
||||
(LONG)visRectSrc.left, (LONG)visRectSrc.top,
|
||||
(LONG)visRectSrc.right, (LONG)visRectSrc.bottom,
|
||||
(LONG)visRectDst.left, (LONG)visRectDst.top,
|
||||
(LONG)visRectDst.right, (LONG)visRectDst.bottom );
|
||||
dprintf_bitblt( stddeb, " vissrc=%d,%d-%d,%d visdst=%d,%d-%d,%d\n",
|
||||
visRectSrc.left, visRectSrc.top,
|
||||
visRectSrc.right, visRectSrc.bottom,
|
||||
visRectDst.left, visRectDst.top,
|
||||
visRectDst.right, visRectDst.bottom );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1078,9 +1078,9 @@ BOOL BITBLT_InternalStretchBlt( DC *dcDst, short xDst, short yDst,
|
|||
if (!BITBLT_GetVisRectangles( dcDst, xDst, yDst, widthDst, heightDst,
|
||||
NULL, 0, 0, 0, 0, NULL, &visRectDst ))
|
||||
return TRUE;
|
||||
dprintf_bitblt( stddeb, " vissrc=none visdst=%ld,%ld-%ld,%ld\n",
|
||||
(LONG)visRectDst.left, (LONG)visRectDst.top,
|
||||
(LONG)visRectDst.right, (LONG)visRectDst.bottom );
|
||||
dprintf_bitblt( stddeb, " vissrc=none visdst=%d,%d-%d,%d\n",
|
||||
visRectDst.left, visRectDst.top,
|
||||
visRectDst.right, visRectDst.bottom );
|
||||
}
|
||||
|
||||
width = visRectDst.right - visRectDst.left;
|
||||
|
@ -1239,8 +1239,8 @@ BOOL PatBlt( HDC hdc, short left, short top,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
dprintf_bitblt(stddeb, "PatBlt: "NPFMT" %d,%d %dx%d %06lx\n",
|
||||
hdc, left, top, width, height, rop );
|
||||
dprintf_bitblt(stddeb, "PatBlt: %04x %d,%d %dx%d %06lx\n",
|
||||
hdc, left, top, width, height, rop );
|
||||
|
||||
return CallTo32_LargeStack( (int(*)())BITBLT_InternalStretchBlt, 11,
|
||||
dc, left, top, width, height,
|
||||
|
@ -1266,7 +1266,7 @@ BOOL BitBlt( HDC hdcDst, INT xDst, INT yDst, INT width, INT height,
|
|||
dcSrc = (DC *) GDI_GetObjPtr( hdcSrc, DC_MAGIC );
|
||||
|
||||
dprintf_bitblt(stddeb,
|
||||
"BitBlt: "NPFMT" %d,%d %d bpp -> "NPFMT" %d,%d %dx%dx%d rop=%06lx\n",
|
||||
"BitBlt: %04x %d,%d %d bpp -> %04x %d,%d %dx%dx%d rop=%06lx\n",
|
||||
hdcSrc, xSrc, ySrc, dcSrc ? dcSrc->w.bitsPerPixel : 0,
|
||||
hdcDst, xDst, yDst, width, height, dcDst->w.bitsPerPixel, rop);
|
||||
|
||||
|
@ -1296,7 +1296,7 @@ BOOL StretchBlt( HDC hdcDst, short xDst, short yDst,
|
|||
|
||||
dcSrc = (DC *) GDI_GetObjPtr( hdcSrc, DC_MAGIC );
|
||||
dprintf_bitblt(stddeb,
|
||||
"StretchBlt: "NPFMT" %d,%d %dx%dx%d -> "NPFMT" %d,%d %dx%dx%d rop=%06lx\n",
|
||||
"StretchBlt: %04x %d,%d %dx%dx%d -> %04x %d,%d %dx%dx%d rop=%06lx\n",
|
||||
hdcSrc, xSrc, ySrc, widthSrc, heightSrc,
|
||||
dcSrc ? dcSrc->w.bitsPerPixel : 0, hdcDst, xDst, yDst,
|
||||
widthDst, heightDst, dcDst->w.bitsPerPixel, rop );
|
||||
|
|
|
@ -123,7 +123,7 @@ HBITMAP CreateBitmap( INT width, INT height, UINT planes, UINT bpp, LPVOID bits
|
|||
HBITMAP CreateCompatibleBitmap( HDC hdc, INT width, INT height )
|
||||
{
|
||||
DC * dc;
|
||||
dprintf_gdi(stddeb, "CreateCompatibleBitmap: "NPFMT" %dx%d\n",
|
||||
dprintf_gdi(stddeb, "CreateCompatibleBitmap: %04x %dx%d\n",
|
||||
hdc, width, height );
|
||||
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0;
|
||||
return CreateBitmap( width, height, 1, dc->w.bitsPerPixel, NULL );
|
||||
|
@ -225,11 +225,11 @@ HBITMAP LoadBitmap( HANDLE instance, SEGPTR name )
|
|||
if (HIWORD(name))
|
||||
{
|
||||
char *str = (char *)PTR_SEG_TO_LIN( name );
|
||||
dprintf_bitmap( stddeb, "LoadBitmap("NPFMT",'%s')\n", instance, str );
|
||||
dprintf_bitmap( stddeb, "LoadBitmap(%04x,'%s')\n", instance, str );
|
||||
if (str[0] == '#') name = (SEGPTR)(DWORD)(WORD)atoi( str + 1 );
|
||||
}
|
||||
else
|
||||
dprintf_bitmap( stddeb, "LoadBitmap("NPFMT",%04x)\n",
|
||||
dprintf_bitmap( stddeb, "LoadBitmap(%04x,%04x)\n",
|
||||
instance, LOWORD(name) );
|
||||
|
||||
if (!instance) /* OEM bitmap */
|
||||
|
@ -311,7 +311,7 @@ HBITMAP BITMAP_SelectObject( HDC hdc, DC * dc, HBITMAP hbitmap,
|
|||
*/
|
||||
HBITMAP CreateDiscardableBitmap(HDC hdc, INT width, INT height)
|
||||
{
|
||||
dprintf_bitmap(stddeb,"CreateDiscardableBitmap("NPFMT", %d, %d); "
|
||||
dprintf_bitmap(stddeb,"CreateDiscardableBitmap(%04x, %d, %d); "
|
||||
"// call CreateCompatibleBitmap() for now!\n",
|
||||
hdc, width, height);
|
||||
return CreateCompatibleBitmap(hdc, width, height);
|
||||
|
|
|
@ -172,17 +172,13 @@ HBRUSH CreatePatternBrush( HBITMAP hbitmap )
|
|||
LOGBRUSH logbrush = { BS_PATTERN, 0, 0 };
|
||||
BITMAPOBJ *bmp, *newbmp;
|
||||
|
||||
dprintf_gdi(stddeb, "CreatePatternBrush: "NPFMT"\n", hbitmap );
|
||||
dprintf_gdi(stddeb, "CreatePatternBrush: %04x\n", hbitmap );
|
||||
|
||||
/* Make a copy of the bitmap */
|
||||
|
||||
if (!(bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC )))
|
||||
return 0;
|
||||
#ifdef WINELIB32
|
||||
logbrush.lbHatch = (LONG)CreateBitmapIndirect( &bmp->bitmap );
|
||||
#else
|
||||
logbrush.lbHatch = (INT)CreateBitmapIndirect( &bmp->bitmap );
|
||||
#endif
|
||||
newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HANDLE)logbrush.lbHatch, BITMAP_MAGIC );
|
||||
if (!newbmp) return 0;
|
||||
XCopyArea( display, bmp->pixmap, newbmp->pixmap, BITMAP_GC(bmp),
|
||||
|
@ -200,7 +196,7 @@ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse )
|
|||
BITMAPINFO *info, *newInfo;
|
||||
int size;
|
||||
|
||||
dprintf_gdi(stddeb, "CreateDIBPatternBrush: "NPFMT"\n", hbitmap );
|
||||
dprintf_gdi(stddeb, "CreateDIBPatternBrush: %04x\n", hbitmap );
|
||||
|
||||
/* Make a copy of the bitmap */
|
||||
|
||||
|
@ -212,11 +208,7 @@ HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse )
|
|||
* 8 * info->bmiHeader.biHeight;
|
||||
size += DIB_BitmapInfoSize( info, coloruse );
|
||||
|
||||
#ifdef WINELIB32
|
||||
if (!(logbrush.lbHatch = (LONG)GlobalAlloc( GMEM_MOVEABLE, size )))
|
||||
#else
|
||||
if (!(logbrush.lbHatch = (INT)GlobalAlloc( GMEM_MOVEABLE, size )))
|
||||
#endif
|
||||
{
|
||||
GlobalUnlock( hbitmap );
|
||||
return 0;
|
||||
|
@ -348,8 +340,8 @@ HBRUSH BRUSH_SelectObject( HDC hdc, DC * dc, HBRUSH hbrush, BRUSHOBJ * brush )
|
|||
BITMAPINFO * bmpInfo;
|
||||
HBRUSH prevHandle = dc->w.hBrush;
|
||||
|
||||
dprintf_gdi(stddeb, "Brush_SelectObject hdc="NPFMT" hbrush="NPFMT"\n",
|
||||
hdc,hbrush);
|
||||
dprintf_gdi(stddeb, "Brush_SelectObject: hdc=%04x hbrush=%04x\n",
|
||||
hdc,hbrush);
|
||||
if (dc->header.wMagic == METAFILE_DC_MAGIC)
|
||||
{
|
||||
switch (brush->logbrush.lbStyle)
|
||||
|
|
|
@ -67,7 +67,7 @@ int SelectClipRgn( HDC hdc, HRGN hrgn )
|
|||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return ERROR;
|
||||
|
||||
dprintf_clipping(stddeb, "SelectClipRgn: "NPFMT" "NPFMT"\n", hdc, hrgn );
|
||||
dprintf_clipping(stddeb, "SelectClipRgn: %04x %04x\n", hdc, hrgn );
|
||||
|
||||
if (hrgn)
|
||||
{
|
||||
|
@ -94,7 +94,7 @@ int SelectVisRgn( HDC hdc, HRGN hrgn )
|
|||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc || !hrgn) return ERROR;
|
||||
|
||||
dprintf_clipping(stddeb, "SelectVisRgn: "NPFMT" "NPFMT"\n", hdc, hrgn );
|
||||
dprintf_clipping(stddeb, "SelectVisRgn: %04x %04x\n", hdc, hrgn );
|
||||
|
||||
retval = CombineRgn( dc->w.hVisRgn, hrgn, 0, RGN_COPY );
|
||||
CLIPPING_UpdateGCRegion( dc );
|
||||
|
@ -116,7 +116,7 @@ int OffsetClipRgn( HDC hdc, short x, short y )
|
|||
return NULLREGION; /* ?? */
|
||||
}
|
||||
|
||||
dprintf_clipping(stddeb, "OffsetClipRgn: "NPFMT" %d,%d\n", hdc, x, y );
|
||||
dprintf_clipping(stddeb, "OffsetClipRgn: %04x %d,%d\n", hdc, x, y );
|
||||
|
||||
if (dc->w.hClipRgn)
|
||||
{
|
||||
|
@ -136,7 +136,7 @@ int OffsetVisRgn( HDC hdc, short x, short y )
|
|||
int retval;
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return ERROR;
|
||||
dprintf_clipping(stddeb, "OffsetVisRgn: "NPFMT" %d,%d\n", hdc, x, y );
|
||||
dprintf_clipping(stddeb, "OffsetVisRgn: %04x %d,%d\n", hdc, x, y );
|
||||
retval = OffsetRgn( dc->w.hVisRgn, x, y );
|
||||
CLIPPING_UpdateGCRegion( dc );
|
||||
return retval;
|
||||
|
@ -195,7 +195,7 @@ int ExcludeClipRect( HDC hdc, short left, short top,
|
|||
return NULLREGION; /* ?? */
|
||||
}
|
||||
|
||||
dprintf_clipping(stddeb, "ExcludeClipRect: "NPFMT" %dx%d,%dx%d\n",
|
||||
dprintf_clipping(stddeb, "ExcludeClipRect: %04x %dx%d,%dx%d\n",
|
||||
hdc, left, top, right, bottom );
|
||||
return CLIPPING_IntersectClipRect( dc, left, top, right, bottom, TRUE );
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ int IntersectClipRect( HDC hdc, short left, short top,
|
|||
return NULLREGION; /* ?? */
|
||||
}
|
||||
|
||||
dprintf_clipping(stddeb, "IntersectClipRect: "NPFMT" %dx%d,%dx%d\n",
|
||||
dprintf_clipping(stddeb, "IntersectClipRect: %04x %dx%d,%dx%d\n",
|
||||
hdc, left, top, right, bottom );
|
||||
return CLIPPING_IntersectClipRect( dc, left, top, right, bottom, FALSE );
|
||||
}
|
||||
|
@ -269,7 +269,7 @@ int ExcludeVisRect( HDC hdc, short left, short top, short right, short bottom )
|
|||
{
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return ERROR;
|
||||
dprintf_clipping(stddeb, "ExcludeVisRect: "NPFMT" %dx%d,%dx%d\n",
|
||||
dprintf_clipping(stddeb, "ExcludeVisRect: %04x %dx%d,%dx%d\n",
|
||||
hdc, left, top, right, bottom );
|
||||
return CLIPPING_IntersectVisRect( dc, left, top, right, bottom, TRUE );
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ int IntersectVisRect( HDC hdc, short left, short top,
|
|||
{
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return ERROR;
|
||||
dprintf_clipping(stddeb, "IntersectVisRect: "NPFMT" %dx%d,%dx%d\n",
|
||||
dprintf_clipping(stddeb, "IntersectVisRect: %04x %dx%d,%dx%d\n",
|
||||
hdc, left, top, right, bottom );
|
||||
return CLIPPING_IntersectVisRect( dc, left, top, right, bottom, FALSE );
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ BOOL PtVisible( HDC hdc, short x, short y )
|
|||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return ERROR;
|
||||
|
||||
dprintf_clipping(stddeb, "PtVisible: "NPFMT" %d,%d\n", hdc, x, y );
|
||||
dprintf_clipping(stddeb, "PtVisible: %04x %d,%d\n", hdc, x, y );
|
||||
if (!dc->w.hGCClipRgn) return FALSE;
|
||||
return PtInRegion( dc->w.hGCClipRgn, XLPTODP(dc,x), YLPTODP(dc,y) );
|
||||
}
|
||||
|
@ -311,9 +311,8 @@ BOOL RectVisible( HDC hdc, LPRECT rect )
|
|||
RECT tmpRect;
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return FALSE;
|
||||
dprintf_clipping(stddeb,"RectVisible: "NPFMT" %ld,%ldx%ld,%ld\n",
|
||||
hdc, (LONG)rect->left, (LONG)rect->top, (LONG)rect->right,
|
||||
(LONG)rect->bottom );
|
||||
dprintf_clipping(stddeb,"RectVisible: %04x %d,%dx%d,%d\n",
|
||||
hdc, rect->left, rect->top, rect->right, rect->bottom );
|
||||
if (!dc->w.hGCClipRgn) return FALSE;
|
||||
/* copy rectangle to avoid overwriting by LPtoDP */
|
||||
tmpRect = *rect;
|
||||
|
@ -330,7 +329,7 @@ int GetClipBox( HDC hdc, LPRECT rect )
|
|||
int ret;
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return ERROR;
|
||||
dprintf_clipping(stddeb, "GetClipBox: "NPFMT" %p\n", hdc, rect );
|
||||
dprintf_clipping(stddeb, "GetClipBox: %04x %p\n", hdc, rect );
|
||||
ret = GetRgnBox( dc->w.hGCClipRgn, rect );
|
||||
DPtoLP( hdc, (LPPOINT)rect, 2 );
|
||||
return ret;
|
||||
|
@ -346,7 +345,7 @@ HRGN SaveVisRgn( HDC hdc )
|
|||
RGNOBJ *obj, *copyObj;
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return 0;
|
||||
dprintf_clipping(stddeb, "SaveVisRgn: "NPFMT"\n", hdc );
|
||||
dprintf_clipping(stddeb, "SaveVisRgn: %04x\n", hdc );
|
||||
if (!dc->w.hVisRgn)
|
||||
{
|
||||
fprintf( stderr, "SaveVisRgn: hVisRgn is zero. Please report this.\n" );
|
||||
|
@ -373,7 +372,7 @@ int RestoreVisRgn( HDC hdc )
|
|||
RGNOBJ *obj, *savedObj;
|
||||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc || !dc->w.hVisRgn) return ERROR;
|
||||
dprintf_clipping(stddeb, "RestoreVisRgn: "NPFMT"\n", hdc );
|
||||
dprintf_clipping(stddeb, "RestoreVisRgn: %04x\n", hdc );
|
||||
if (!(obj = (RGNOBJ *) GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC )))
|
||||
return ERROR;
|
||||
if (!(saved = obj->header.hNext)) return ERROR;
|
||||
|
|
|
@ -340,7 +340,7 @@ static HANDLE CURSORICON_LoadHandler( HANDLE handle, HINSTANCE hInstance,
|
|||
}
|
||||
|
||||
/* Make it owned by the module */
|
||||
if (hInstance) FarSetOwner( handle, (WORD)(DWORD)GetExePtr(hInstance) );
|
||||
if (hInstance) FarSetOwner( handle, GetExePtr(hInstance) );
|
||||
|
||||
info = (CURSORICONINFO *)GlobalLock( handle );
|
||||
info->ptHotSpot.x = hotspot.x;
|
||||
|
@ -417,7 +417,7 @@ static HANDLE CURSORICON_Copy( HANDLE hInstance, HANDLE handle )
|
|||
if (!(hInstance = GetExePtr( hInstance ))) return 0;
|
||||
size = GlobalSize( handle );
|
||||
hNew = GlobalAlloc( GMEM_MOVEABLE, size );
|
||||
FarSetOwner( hNew, (WORD)(DWORD)hInstance );
|
||||
FarSetOwner( hNew, hInstance );
|
||||
ptrNew = (char *)GlobalLock( hNew );
|
||||
memcpy( ptrNew, ptrOld, size );
|
||||
GlobalUnlock( handle );
|
||||
|
@ -466,10 +466,10 @@ HCURSOR CURSORICON_IconToCursor(HICON hIcon)
|
|||
HCURSOR LoadCursor( HANDLE hInstance, SEGPTR name )
|
||||
{
|
||||
if (HIWORD(name))
|
||||
dprintf_cursor( stddeb, "LoadCursor: "NPFMT" '%s'\n",
|
||||
dprintf_cursor( stddeb, "LoadCursor: %04x '%s'\n",
|
||||
hInstance, (char *)PTR_SEG_TO_LIN( name ) );
|
||||
else
|
||||
dprintf_cursor( stddeb, "LoadCursor: "NPFMT" %04x\n",
|
||||
dprintf_cursor( stddeb, "LoadCursor: %04x %04x\n",
|
||||
hInstance, LOWORD(name) );
|
||||
|
||||
return CURSORICON_Load( hInstance, name,
|
||||
|
@ -483,10 +483,10 @@ HCURSOR LoadCursor( HANDLE hInstance, SEGPTR name )
|
|||
HICON LoadIcon( HANDLE hInstance, SEGPTR name )
|
||||
{
|
||||
if (HIWORD(name))
|
||||
dprintf_icon( stddeb, "LoadIcon: "NPFMT" '%s'\n",
|
||||
dprintf_icon( stddeb, "LoadIcon: %04x '%s'\n",
|
||||
hInstance, (char *)PTR_SEG_TO_LIN( name ) );
|
||||
else
|
||||
dprintf_icon( stddeb, "LoadIcon: "NPFMT" %04x\n",
|
||||
dprintf_icon( stddeb, "LoadIcon: %04x %04x\n",
|
||||
hInstance, LOWORD(name) );
|
||||
|
||||
return CURSORICON_Load( hInstance, name,
|
||||
|
@ -554,16 +554,16 @@ HANDLE CreateCursorIconIndirect( HANDLE hInstance, CURSORICONINFO *info,
|
|||
/***********************************************************************
|
||||
* CopyIcon (USER.368)
|
||||
*/
|
||||
#ifdef WINELIB32
|
||||
#ifdef WINELIB
|
||||
HICON CopyIcon( HICON hIcon )
|
||||
{
|
||||
dprintf_icon( stddeb, "CopyIcon: "NPFMT"\n", hIcon );
|
||||
dprintf_icon( stddeb, "CopyIcon: %04x\n", hIcon );
|
||||
return CURSORICON_Copy( 0, hIcon );
|
||||
}
|
||||
#else
|
||||
HICON CopyIcon( HANDLE hInstance, HICON hIcon )
|
||||
{
|
||||
dprintf_icon( stddeb, "CopyIcon: "NPFMT" "NPFMT"\n", hInstance, hIcon );
|
||||
dprintf_icon( stddeb, "CopyIcon: %04x %04x\n", hInstance, hIcon );
|
||||
return CURSORICON_Copy( hInstance, hIcon );
|
||||
}
|
||||
#endif
|
||||
|
@ -572,16 +572,16 @@ HICON CopyIcon( HANDLE hInstance, HICON hIcon )
|
|||
/***********************************************************************
|
||||
* CopyCursor (USER.369)
|
||||
*/
|
||||
#ifdef WINELIB32
|
||||
#ifdef WINELIB
|
||||
HCURSOR CopyCursor( HCURSOR hCursor )
|
||||
{
|
||||
dprintf_cursor( stddeb, "CopyCursor: "NPFMT"\n", hCursor );
|
||||
dprintf_cursor( stddeb, "CopyCursor: %04x\n", hCursor );
|
||||
return CURSORICON_Copy( 0, hCursor );
|
||||
}
|
||||
#else
|
||||
HCURSOR CopyCursor( HANDLE hInstance, HCURSOR hCursor )
|
||||
{
|
||||
dprintf_cursor( stddeb, "CopyCursor: "NPFMT" "NPFMT"\n", hInstance, hCursor );
|
||||
dprintf_cursor( stddeb, "CopyCursor: %04x %04x\n", hInstance, hCursor );
|
||||
return CURSORICON_Copy( hInstance, hCursor );
|
||||
}
|
||||
#endif
|
||||
|
@ -592,7 +592,7 @@ HCURSOR CopyCursor( HANDLE hInstance, HCURSOR hCursor )
|
|||
*/
|
||||
BOOL DestroyIcon( HICON hIcon )
|
||||
{
|
||||
dprintf_icon( stddeb, "DestroyIcon: "NPFMT"\n", hIcon );
|
||||
dprintf_icon( stddeb, "DestroyIcon: %04x\n", hIcon );
|
||||
/* FIXME: should check for OEM icon here */
|
||||
return (GlobalFree( hIcon ) != 0);
|
||||
}
|
||||
|
@ -603,7 +603,7 @@ BOOL DestroyIcon( HICON hIcon )
|
|||
*/
|
||||
BOOL DestroyCursor( HCURSOR hCursor )
|
||||
{
|
||||
dprintf_cursor( stddeb, "DestroyCursor: "NPFMT"\n", hCursor );
|
||||
dprintf_cursor( stddeb, "DestroyCursor: %04x\n", hCursor );
|
||||
/* FIXME: should check for OEM cursor here */
|
||||
return (GlobalFree( hCursor ) != 0);
|
||||
}
|
||||
|
@ -697,7 +697,7 @@ static BOOL CURSORICON_SetCursor( HCURSOR hCursor )
|
|||
if (!(ptr = (CURSORICONINFO*)GlobalLock( hCursor ))) return FALSE;
|
||||
if (ptr->bPlanes * ptr->bBitsPerPixel != 1)
|
||||
{
|
||||
fprintf( stderr, "Cursor "NPFMT" has more than 1 bpp!\n", hCursor );
|
||||
fprintf( stderr, "Cursor %04x has more than 1 bpp!\n", hCursor );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -813,7 +813,7 @@ HCURSOR SetCursor( HCURSOR hCursor )
|
|||
HCURSOR hOldCursor;
|
||||
|
||||
if (hCursor == hActiveCursor) return hActiveCursor; /* No change */
|
||||
dprintf_cursor( stddeb, "SetCursor: "NPFMT"\n", hCursor );
|
||||
dprintf_cursor( stddeb, "SetCursor: %04x\n", hCursor );
|
||||
hOldCursor = hActiveCursor;
|
||||
hActiveCursor = hCursor;
|
||||
/* Change the cursor shape only if it is visible */
|
||||
|
@ -892,8 +892,7 @@ void GetCursorPos( POINT *pt )
|
|||
pt->x = rootX + desktopX;
|
||||
pt->y = rootY + desktopY;
|
||||
}
|
||||
dprintf_cursor(stddeb, "GetCursorPos: ret=%ld,%ld\n", (LONG)pt->x,
|
||||
(LONG)pt->y );
|
||||
dprintf_cursor(stddeb, "GetCursorPos: ret=%d,%d\n", pt->x, pt->y );
|
||||
}
|
||||
|
||||
|
||||
|
@ -920,7 +919,7 @@ WORD GetIconID( HANDLE hResource, DWORD resType )
|
|||
return 0;
|
||||
}
|
||||
|
||||
dprintf_cursor( stddeb, "GetIconID: hRes="NPFMT", entries=%i\n",
|
||||
dprintf_cursor( stddeb, "GetIconID: hRes=%04x, entries=%i\n",
|
||||
hResource, lpDir->idCount );
|
||||
|
||||
switch(resType)
|
||||
|
@ -949,7 +948,7 @@ WORD GetIconID( HANDLE hResource, DWORD resType )
|
|||
*/
|
||||
HICON LoadIconHandler( HANDLE hResource, BOOL bNew )
|
||||
{
|
||||
dprintf_cursor(stddeb,"LoadIconHandler: hRes="NPFMT"\n",hResource);
|
||||
dprintf_cursor(stddeb,"LoadIconHandler: hRes=%04x\n",hResource);
|
||||
|
||||
if( !bNew )
|
||||
{
|
||||
|
|
16
objects/dc.c
16
objects/dc.c
|
@ -333,7 +333,7 @@ HDC GetDCState( HDC hdc )
|
|||
if (!(handle = GDI_AllocObject( sizeof(DC), DC_MAGIC ))) return 0;
|
||||
newdc = (DC *) GDI_HEAP_LIN_ADDR( handle );
|
||||
|
||||
dprintf_dc(stddeb, "GetDCState("NPFMT"): returning "NPFMT"\n", hdc, handle );
|
||||
dprintf_dc(stddeb, "GetDCState(%04x): returning %04x\n", hdc, handle );
|
||||
|
||||
memset( &newdc->u.x, 0, sizeof(newdc->u.x) );
|
||||
memcpy( &newdc->w, &dc->w, sizeof(dc->w) );
|
||||
|
@ -366,7 +366,7 @@ void SetDCState( HDC hdc, HDC hdcs )
|
|||
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return;
|
||||
if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) return;
|
||||
if (!dcs->w.flags & DC_SAVED) return;
|
||||
dprintf_dc(stddeb, "SetDCState: "NPFMT" "NPFMT"\n", hdc, hdcs );
|
||||
dprintf_dc(stddeb, "SetDCState: %04x %04x\n", hdc, hdcs );
|
||||
|
||||
/* Save the regions before overwriting everything */
|
||||
hVisRgn = dc->w.hVisRgn;
|
||||
|
@ -410,7 +410,7 @@ int SaveDC( HDC hdc )
|
|||
dcs = (DC *) GDI_HEAP_LIN_ADDR( hdcs );
|
||||
dcs->header.hNext = dc->header.hNext;
|
||||
dc->header.hNext = hdcs;
|
||||
dprintf_dc(stddeb, "SaveDC("NPFMT"): returning %d\n", hdc, dc->saveLevel+1 );
|
||||
dprintf_dc(stddeb, "SaveDC(%04x): returning %d\n", hdc, dc->saveLevel+1 );
|
||||
return ++dc->saveLevel;
|
||||
}
|
||||
|
||||
|
@ -422,7 +422,7 @@ BOOL RestoreDC( HDC hdc, short level )
|
|||
{
|
||||
DC * dc, * dcs;
|
||||
|
||||
dprintf_dc(stddeb, "RestoreDC: "NPFMT" %d\n", hdc, level );
|
||||
dprintf_dc(stddeb, "RestoreDC: %04x %d\n", hdc, level );
|
||||
dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc)
|
||||
{
|
||||
|
@ -459,7 +459,7 @@ HDC CreateDC( LPCTSTR driver, LPCTSTR device, LPCTSTR output, const DEVMODE* ini
|
|||
if (!handle) return 0;
|
||||
dc = (DC *) GDI_HEAP_LIN_ADDR( handle );
|
||||
|
||||
dprintf_dc(stddeb, "CreateDC(%s %s %s): returning "NPFMT"\n",
|
||||
dprintf_dc(stddeb, "CreateDC(%s %s %s): returning %04x\n",
|
||||
driver, device, output, handle );
|
||||
|
||||
if (!displayDevCaps)
|
||||
|
@ -515,7 +515,7 @@ HDC CreateCompatibleDC( HDC hdc )
|
|||
if (!handle) return 0;
|
||||
dc = (DC *) GDI_HEAP_LIN_ADDR( handle );
|
||||
|
||||
dprintf_dc(stddeb, "CreateCompatibleDC("NPFMT"): returning "NPFMT"\n", hdc, handle );
|
||||
dprintf_dc(stddeb, "CreateCompatibleDC(%04x): returning %04x\n", hdc, handle );
|
||||
|
||||
/* Create default bitmap */
|
||||
if (!(hbitmap = CreateBitmap( 1, 1, 1, 1, NULL )))
|
||||
|
@ -559,7 +559,7 @@ BOOL DeleteDC( HDC hdc )
|
|||
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
|
||||
if (!dc) return FALSE;
|
||||
|
||||
dprintf_dc(stddeb, "DeleteDC: "NPFMT"\n", hdc );
|
||||
dprintf_dc(stddeb, "DeleteDC: %04x\n", hdc );
|
||||
|
||||
while (dc->saveLevel)
|
||||
{
|
||||
|
@ -608,7 +608,7 @@ int GetDeviceCaps( HDC hdc, WORD cap )
|
|||
|
||||
if (cap > sizeof(DeviceCaps)-sizeof(WORD)) return 0;
|
||||
|
||||
dprintf_dc(stddeb, "GetDeviceCaps("NPFMT",%d): returning %d\n",
|
||||
dprintf_dc(stddeb, "GetDeviceCaps(%04x,%d): returning %d\n",
|
||||
hdc, cap, *(WORD *)(((char *)dc->w.devCaps) + cap) );
|
||||
return *(WORD *)(((char *)dc->w.devCaps) + cap);
|
||||
}
|
||||
|
|
|
@ -283,7 +283,7 @@ void FONT_GetMetrics( LOGFONT * logfont, XFontStruct * xfont,
|
|||
DWORD GetGlyphOutLine(HDC hdc, UINT uChar, UINT fuFormat, LPGLYPHMETRICS lpgm,
|
||||
DWORD cbBuffer, LPSTR lpBuffer, LPMAT2 lpmat2)
|
||||
{
|
||||
fprintf( stdnimp,"GetGlyphOutLine("NPFMT", '%c', %04x, %p, %ld, %p, %p) // - empty stub!\n",
|
||||
fprintf( stdnimp,"GetGlyphOutLine(%04x, '%c', %04x, %p, %ld, %p, %p) // - empty stub!\n",
|
||||
hdc, uChar, fuFormat, lpgm, cbBuffer, lpBuffer, lpmat2 );
|
||||
return (DWORD)-1; /* failure */
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ HFONT CreateFontIndirect( const LOGFONT * font )
|
|||
fontPtr = (FONTOBJ *) GDI_HEAP_LIN_ADDR( hfont );
|
||||
memcpy( &fontPtr->logfont, font, sizeof(LOGFONT) );
|
||||
AnsiLower( fontPtr->logfont.lfFaceName );
|
||||
dprintf_font(stddeb,"CreateFontIndirect(%p (%d,%d)); return "NPFMT"\n",
|
||||
dprintf_font(stddeb,"CreateFontIndirect(%p (%d,%d)); return %04x\n",
|
||||
font, font->lfHeight, font->lfWidth, hfont);
|
||||
return hfont;
|
||||
}
|
||||
|
@ -370,8 +370,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font )
|
|||
X_PHYSFONT * stockPtr;
|
||||
HFONT prevHandle = dc->w.hFont;
|
||||
XFontStruct * fontStruct;
|
||||
dprintf_font(stddeb,"FONT_SelectObject(%p, "NPFMT", %p)\n",
|
||||
dc, hfont, font);
|
||||
dprintf_font(stddeb,"FONT_SelectObject(%p, %04x, %p)\n", dc, hfont, font);
|
||||
|
||||
#if 0 /* From the code in SelectObject, this can not happen */
|
||||
/* Load font if necessary */
|
||||
|
@ -392,9 +391,8 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font )
|
|||
else
|
||||
return 0;
|
||||
|
||||
/* Must be DWORD for WINELIB32 support */
|
||||
if ((hfont >= FIRST_STOCK_FONT) && (hfont <= LAST_STOCK_FONT))
|
||||
stockPtr = &stockFonts[(DWORD)hfont - (DWORD)FIRST_STOCK_FONT];
|
||||
stockPtr = &stockFonts[hfont - FIRST_STOCK_FONT];
|
||||
else
|
||||
stockPtr = NULL;
|
||||
|
||||
|
@ -405,7 +403,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font )
|
|||
/* If it is not a stock font, we can simply return 0 */
|
||||
if (!stockPtr) return 0;
|
||||
/* Otherwise we must try to find a substitute */
|
||||
dprintf_font(stddeb,"Loading font 'fixed' for "NPFMT"\n", hfont );
|
||||
dprintf_font(stddeb,"Loading font 'fixed' for %04x\n", hfont );
|
||||
font->logfont.lfPitchAndFamily &= ~VARIABLE_PITCH;
|
||||
font->logfont.lfPitchAndFamily |= FIXED_PITCH;
|
||||
fontStruct = XLoadQueryFont( display, "fixed" );
|
||||
|
@ -420,7 +418,7 @@ HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font )
|
|||
{
|
||||
fontStruct = stockPtr->fstruct;
|
||||
dprintf_font(stddeb,
|
||||
"FONT_SelectObject: Loaded font from cache "NPFMT" %p\n",
|
||||
"FONT_SelectObject: Loaded font from cache %04x %p\n",
|
||||
hfont, fontStruct );
|
||||
}
|
||||
|
||||
|
@ -550,9 +548,8 @@ BOOL GetTextExtentPoint( HDC hdc, LPCSTR str, short count, LPSIZE size )
|
|||
size->cy = abs((dc->u.x.font.fstruct->ascent+dc->u.x.font.fstruct->descent)
|
||||
* dc->w.WndExtY / dc->w.VportExtY);
|
||||
|
||||
dprintf_font(stddeb,"GetTextExtentPoint("NPFMT" '%*.*s' %d %p): returning %ld,%ld\n",
|
||||
hdc, count, count, str, count, size, (LONG)size->cx,
|
||||
(LONG)size->cy );
|
||||
dprintf_font(stddeb,"GetTextExtentPoint(%04x '%*.*s' %d %p): returning %d,%d\n",
|
||||
hdc, count, count, str, count, size, size->cx, size->cy );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -588,7 +585,7 @@ BOOL GetTextMetrics( HDC hdc, LPTEXTMETRIC metrics )
|
|||
*/
|
||||
DWORD SetMapperFlags(HDC hDC, DWORD dwFlag)
|
||||
{
|
||||
dprintf_font(stdnimp,"SetmapperFlags("NPFMT", %08lX) // Empty Stub !\n",
|
||||
dprintf_font(stdnimp,"SetmapperFlags(%04x, %08lX) // Empty Stub !\n",
|
||||
hDC, dwFlag);
|
||||
return 0L;
|
||||
}
|
||||
|
@ -664,10 +661,6 @@ BOOL RemoveFontResource( LPSTR str )
|
|||
int ParseFontParms(LPSTR lpFont, WORD wParmsNo, LPSTR lpRetStr, WORD wMaxSiz)
|
||||
{
|
||||
int i;
|
||||
#if 0
|
||||
dprintf_font(stddeb,"ParseFontParms('%s', %d, %p, %d);\n",
|
||||
lpFont, wParmsNo, lpRetStr, wMaxSiz);
|
||||
#endif
|
||||
if (lpFont == NULL) return 0;
|
||||
if (lpRetStr == NULL) return 0;
|
||||
for (i = 0; (*lpFont != '\0' && i != wParmsNo); ) {
|
||||
|
@ -680,9 +673,6 @@ int ParseFontParms(LPSTR lpFont, WORD wParmsNo, LPSTR lpRetStr, WORD wMaxSiz)
|
|||
for (i = 0; (*lpFont != '\0' && *lpFont != '-' && i < wMaxSiz); i++)
|
||||
*(lpRetStr + i) = *lpFont++;
|
||||
*(lpRetStr + i) = '\0';
|
||||
#if 0
|
||||
dprintf_font(stddeb,"ParseFontParms // '%s'\n", lpRetStr);
|
||||
#endif
|
||||
return i;
|
||||
}
|
||||
else
|
||||
|
@ -789,7 +779,7 @@ INT EnumFonts(HDC hDC, LPCTSTR lpFaceName, FONTENUMPROC lpEnumFunc, LPARAM lpDat
|
|||
int nRet = 0;
|
||||
int i;
|
||||
|
||||
dprintf_font(stddeb,"EnumFonts("NPFMT", %p='%s', %08lx, %08lx)\n",
|
||||
dprintf_font(stddeb,"EnumFonts(%04x, %p='%s', %08lx, %08lx)\n",
|
||||
hDC, lpFaceName, lpFaceName, (LONG)lpEnumFunc, lpData);
|
||||
if (lpEnumFunc == 0) return 0;
|
||||
hLog = GDI_HEAP_ALLOC( sizeof(LOGFONT) + LF_FACESIZE );
|
||||
|
@ -859,7 +849,7 @@ INT EnumFontFamilies(HDC hDC, LPCTSTR lpszFamily, FONTENUMPROC lpEnumFunc, LPARA
|
|||
int nRet = 0;
|
||||
int i;
|
||||
|
||||
dprintf_font(stddeb,"EnumFontFamilies("NPFMT", %p, %08lx, %08lx)\n",
|
||||
dprintf_font(stddeb,"EnumFontFamilies(%04x, %p, %08lx, %08lx)\n",
|
||||
hDC, lpszFamily, (DWORD)lpEnumFunc, lpData);
|
||||
if (lpEnumFunc == 0) return 0;
|
||||
hLog = GDI_HEAP_ALLOC( sizeof(ENUMLOGFONT) );
|
||||
|
|
152
objects/gdiobj.c
152
objects/gdiobj.c
|
@ -174,7 +174,7 @@ BOOL GDI_Init(void)
|
|||
/* Create default palette */
|
||||
|
||||
if (!(hpalette = COLOR_Init())) return FALSE;
|
||||
StockObjects[DEFAULT_PALETTE] = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( hpalette );
|
||||
StockObjects[DEFAULT_PALETTE] = (GDIOBJHDR *)GDI_HEAP_LIN_ADDR( hpalette );
|
||||
|
||||
/* Create default bitmap */
|
||||
|
||||
|
@ -217,8 +217,8 @@ BOOL GDI_FreeObject( HANDLE handle )
|
|||
GDIOBJHDR * object;
|
||||
|
||||
/* Can't free stock objects */
|
||||
if ((DWORD)handle >= FIRST_STOCK_HANDLE &&
|
||||
(DWORD)handle <= LAST_STOCK_HANDLE ) return TRUE;
|
||||
if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
|
||||
return TRUE;
|
||||
|
||||
object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
|
||||
if (!object) return FALSE;
|
||||
|
@ -240,9 +240,8 @@ GDIOBJHDR * GDI_GetObjPtr( HANDLE handle, WORD magic )
|
|||
{
|
||||
GDIOBJHDR * ptr = NULL;
|
||||
|
||||
if ((DWORD)handle >= FIRST_STOCK_HANDLE &&
|
||||
(DWORD)handle <= LAST_STOCK_HANDLE )
|
||||
ptr = StockObjects[(DWORD)handle - FIRST_STOCK_HANDLE];
|
||||
if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
|
||||
ptr = StockObjects[handle - FIRST_STOCK_HANDLE];
|
||||
else
|
||||
ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
|
||||
if (!ptr) return NULL;
|
||||
|
@ -261,7 +260,7 @@ BOOL DeleteObject( HGDIOBJ obj )
|
|||
GDIOBJHDR * header = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( obj );
|
||||
if (!header) return FALSE;
|
||||
|
||||
dprintf_gdi(stddeb, "DeleteObject: "NPFMT"\n", obj );
|
||||
dprintf_gdi(stddeb, "DeleteObject: %04x\n", obj );
|
||||
|
||||
/* Delete object */
|
||||
|
||||
|
@ -285,9 +284,9 @@ HANDLE GetStockObject( int obj )
|
|||
{
|
||||
if ((obj < 0) || (obj >= NB_STOCK_OBJECTS)) return 0;
|
||||
if (!StockObjects[obj]) return 0;
|
||||
dprintf_gdi(stddeb, "GetStockObject: returning %ld\n",
|
||||
(DWORD)FIRST_STOCK_HANDLE + obj );
|
||||
return (HANDLE)((DWORD)FIRST_STOCK_HANDLE + obj);
|
||||
dprintf_gdi(stddeb, "GetStockObject: returning %d\n",
|
||||
FIRST_STOCK_HANDLE + obj );
|
||||
return (HANDLE)(FIRST_STOCK_HANDLE + obj);
|
||||
}
|
||||
|
||||
|
||||
|
@ -297,12 +296,11 @@ HANDLE GetStockObject( int obj )
|
|||
int GetObject( HANDLE handle, int count, LPSTR buffer )
|
||||
{
|
||||
GDIOBJHDR * ptr = NULL;
|
||||
dprintf_gdi(stddeb, "GetObject: "NPFMT" %d %p\n", handle, count, buffer );
|
||||
dprintf_gdi(stddeb, "GetObject: %04x %d %p\n", handle, count, buffer );
|
||||
if (!count) return 0;
|
||||
|
||||
if ((DWORD)handle >= FIRST_STOCK_HANDLE &&
|
||||
(DWORD)handle <= LAST_STOCK_HANDLE )
|
||||
ptr = StockObjects[(DWORD)handle - FIRST_STOCK_HANDLE];
|
||||
if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
|
||||
ptr = StockObjects[handle - FIRST_STOCK_HANDLE];
|
||||
else
|
||||
ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
|
||||
if (!ptr) return 0;
|
||||
|
@ -332,10 +330,9 @@ HANDLE SelectObject( HDC hdc, HANDLE handle )
|
|||
GDIOBJHDR * ptr = NULL;
|
||||
DC * dc;
|
||||
|
||||
dprintf_gdi(stddeb, "SelectObject: "NPFMT" "NPFMT"\n", hdc, handle );
|
||||
if ((DWORD)handle >= FIRST_STOCK_HANDLE &&
|
||||
(DWORD)handle <= LAST_STOCK_HANDLE )
|
||||
ptr = StockObjects[(DWORD)handle - FIRST_STOCK_HANDLE];
|
||||
dprintf_gdi(stddeb, "SelectObject: %04x %04x\n", hdc, handle );
|
||||
if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE))
|
||||
ptr = StockObjects[handle - FIRST_STOCK_HANDLE];
|
||||
else
|
||||
ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
|
||||
if (!ptr) return 0;
|
||||
|
@ -369,7 +366,7 @@ HANDLE SelectObject( HDC hdc, HANDLE handle )
|
|||
*/
|
||||
BOOL UnrealizeObject( HANDLE handle )
|
||||
{
|
||||
dprintf_gdi(stdnimp, "UnrealizeObject: "NPFMT"\n", handle );
|
||||
dprintf_gdi(stdnimp, "UnrealizeObject: %04x\n", handle );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -393,7 +390,7 @@ INT EnumObjects( HDC hdc, INT nObjType, GOBJENUMPROC lpEnumFunc, LPARAM lParam )
|
|||
|
||||
int i, retval = 0;
|
||||
|
||||
dprintf_gdi( stddeb, "EnumObjects: "NPFMT" %d %08lx %08lx\n",
|
||||
dprintf_gdi( stddeb, "EnumObjects: %04x %d %08lx %08lx\n",
|
||||
hdc, nObjType, (DWORD)lpEnumFunc, lParam );
|
||||
switch(nObjType)
|
||||
{
|
||||
|
@ -440,122 +437,17 @@ INT EnumObjects( HDC hdc, INT nObjType, GOBJENUMPROC lpEnumFunc, LPARAM lParam )
|
|||
break;
|
||||
}
|
||||
return retval;
|
||||
#if 0
|
||||
|
||||
/* HANDLE handle;
|
||||
DC *dc;*/
|
||||
HANDLE *lphObj;
|
||||
GDIOBJHDR *header;
|
||||
WORD wMagic;
|
||||
LPSTR lpLog; /* Point to a LOGBRUSH or LOGPEN struct */
|
||||
HANDLE hLog;
|
||||
int nRet = 0;
|
||||
|
||||
if (lpEnumFunc == 0) {
|
||||
fprintf(stderr,"EnumObjects // Bad EnumProc callback address !\n");
|
||||
return 0;
|
||||
}
|
||||
switch (nObjType) {
|
||||
case OBJ_PEN:
|
||||
wMagic = PEN_MAGIC;
|
||||
dprintf_gdi(stddeb,"EnumObjects("NPFMT", OBJ_PEN, %08lx, %p);\n",
|
||||
hDC, (LONG)lpEnumFunc, lpData);
|
||||
hLog = GDI_HEAP_ALLOC( sizeof(LOGPEN) );
|
||||
lpLog = (LPSTR) GDI_HEAP_LIN_ADDR(hLog);
|
||||
if (lpLog == NULL) {
|
||||
fprintf(stderr,"EnumObjects // Unable to alloc LOGPEN struct !\n");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case OBJ_BRUSH:
|
||||
wMagic = BRUSH_MAGIC;
|
||||
dprintf_gdi(stddeb,"EnumObjects("NPFMT", OBJ_BRUSH, %08lx, %p);\n",
|
||||
hDC, (LONG)lpEnumFunc, lpData);
|
||||
hLog = GDI_HEAP_ALLOC( sizeof(LOGBRUSH) );
|
||||
lpLog = (LPSTR) GDI_HEAP_LIN_ADDR(hLog);
|
||||
if (lpLog == NULL) {
|
||||
fprintf(stderr,"EnumObjects // Unable to alloc LOGBRUSH struct !\n");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr,"EnumObjects("NPFMT", %04X, %08lx, %p); // Unknown OBJ type !\n",
|
||||
hDC, nObjType, (LONG)lpEnumFunc, lpData);
|
||||
return 0;
|
||||
}
|
||||
#ifdef notdef /* FIXME: stock object ptr won't work in callback */
|
||||
dprintf_gdi(stddeb,"EnumObjects // Stock Objects first !\n");
|
||||
for (i = 0; i < NB_STOCK_OBJECTS; i++) {
|
||||
header = StockObjects[i];
|
||||
if (header->wMagic == wMagic) {
|
||||
PEN_GetObject( (PENOBJ *)header, sizeof(LOGPEN), lpLog);
|
||||
BRUSH_GetObject( (BRUSHOBJ *)header, sizeof(LOGBRUSH),lpLog);
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockObj lpLog=%p lpData=%p\n", lpLog, lpData);
|
||||
if (header->wMagic == BRUSH_MAGIC) {
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockBrush lbStyle=%04X\n", ((LPLOGBRUSH)lpLog)->lbStyle);
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockBrush lbColor=%08lX\n", ((LPLOGBRUSH)lpLog)->lbColor);
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockBrush lbHatch=%04X\n", ((LPLOGBRUSH)lpLog)->lbHatch);
|
||||
}
|
||||
if (header->wMagic == PEN_MAGIC) {
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockPen lopnStyle=%04X\n", ((LPLOGPEN)lpLog)->lopnStyle);
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockPen lopnWidth=%d\n", ((LPLOGPEN)lpLog)->lopnWidth.x);
|
||||
dprintf_gdi(stddeb,"EnumObjects // StockPen lopnColor=%08lX\n", ((LPLOGPEN)lpLog)->lopnColor);
|
||||
}
|
||||
nRet = CallEnumObjectsProc( lpEnumFunc,
|
||||
GDI_HEAP_SEG_ADDR(hLog),
|
||||
(int)lpData );
|
||||
dprintf_gdi(stddeb,"EnumObjects // after Callback!\n");
|
||||
if (nRet == 0) {
|
||||
GDI_HEAP_FREE(hLog);
|
||||
dprintf_gdi(stddeb,"EnumObjects // EnumEnd requested by application !\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
dprintf_gdi(stddeb,"EnumObjects // Now DC owned objects %p !\n", header);
|
||||
#endif /* notdef */
|
||||
|
||||
if (lpPenBrushList == NULL) return 0;
|
||||
for (lphObj = lpPenBrushList; *lphObj != 0; ) {
|
||||
dprintf_gdi(stddeb,"EnumObjects // *lphObj="NPFMT"\n", *lphObj);
|
||||
header = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR(*lphObj++);
|
||||
if (header->wMagic == wMagic) {
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Obj lpLog=%p lpData=%p\n", lpLog, lpData);
|
||||
if (header->wMagic == BRUSH_MAGIC) {
|
||||
BRUSH_GetObject( (BRUSHOBJ *)header, sizeof(LOGBRUSH), lpLog);
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbStyle=%04X\n", ((LPLOGBRUSH)lpLog)->lbStyle);
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbColor=%08lX\n", ((LPLOGBRUSH)lpLog)->lbColor);
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbHatch=%04lX\n", (LONG)((LPLOGBRUSH)lpLog)->lbHatch);
|
||||
}
|
||||
if (header->wMagic == PEN_MAGIC) {
|
||||
PEN_GetObject( (PENOBJ *)header, sizeof(LOGPEN), lpLog);
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnStyle=%04X\n", ((LPLOGPEN)lpLog)->lopnStyle);
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnWidth=%ld\n", (LONG)((LPLOGPEN)lpLog)->lopnWidth.x);
|
||||
dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnColor=%08lX\n", ((LPLOGPEN)lpLog)->lopnColor);
|
||||
}
|
||||
nRet = CallEnumObjectsProc(lpEnumFunc, GDI_HEAP_SEG_ADDR(hLog),
|
||||
(LONG)lpData);
|
||||
if (nRet == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
GDI_HEAP_FREE(hLog);
|
||||
dprintf_gdi(stddeb,"EnumObjects // End of enumeration !\n");
|
||||
return nRet;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* IsGDIObject(GDI.462)
|
||||
* IsGDIObject (GDI.462)
|
||||
*/
|
||||
BOOL IsGDIObject(HANDLE handle)
|
||||
{
|
||||
GDIOBJHDR *object;
|
||||
GDIOBJHDR *object;
|
||||
|
||||
object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
|
||||
if (object)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
|
||||
/* FIXME: should check magic here */
|
||||
return (object != NULL);
|
||||
}
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
*
|
||||
* Copyright 1993 Bob Amstadt
|
||||
*
|
||||
static char Copyright[] = "Copyright Bob Amstadt, 1993";
|
||||
*/
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "windows.h"
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
*
|
||||
* Copyright David W. Metcalfe, 1994
|
||||
*
|
||||
static char Copyright[] = "Copyright David W. Metcalfe, 1994";
|
||||
*/
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -573,7 +572,7 @@ HANDLE GetMetaFileBits(HMETAFILE hmf)
|
|||
HANDLE hMem = mf->hMetaHdr;
|
||||
METAHEADER *mh = (METAHEADER *)GlobalLock(hMem);
|
||||
|
||||
dprintf_metafile(stddeb,"GetMetaFileBits: hmf in: "NPFMT"\n", hmf);
|
||||
dprintf_metafile(stddeb,"GetMetaFileBits: hmf in: %04x\n", hmf);
|
||||
|
||||
/* can't get bits of disk based metafile */
|
||||
/* FIXME: should the disk file be loaded in this case? */
|
||||
|
@ -589,7 +588,7 @@ HANDLE GetMetaFileBits(HMETAFILE hmf)
|
|||
GlobalUnlock(hMem);
|
||||
GlobalFree(hmf);
|
||||
|
||||
dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: "NPFMT"\n", hMem);
|
||||
dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: %04x\n", hMem);
|
||||
|
||||
return hMem;
|
||||
}
|
||||
|
@ -605,7 +604,7 @@ HMETAFILE SetMetaFileBits(HANDLE hMem)
|
|||
METAFILE *mf;
|
||||
METAHEADER *mh = (METAHEADER *)GlobalLock(hMem);
|
||||
|
||||
dprintf_metafile(stddeb,"SetMetaFileBits: hMem in: "NPFMT"\n", hMem);
|
||||
dprintf_metafile(stddeb,"SetMetaFileBits: hMem in: %04x\n", hMem);
|
||||
|
||||
if (!mh) return FALSE;
|
||||
|
||||
|
@ -629,7 +628,7 @@ HMETAFILE SetMetaFileBits(HANDLE hMem)
|
|||
GlobalUnlock(hMem);
|
||||
GlobalUnlock(hmf);
|
||||
|
||||
dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: "NPFMT"\n", hmf);
|
||||
dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: %04x\n", hmf);
|
||||
|
||||
return hmf;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "cursoricon.h"
|
||||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "xmalloc.h"
|
||||
|
||||
/* Include OEM pixmaps */
|
||||
#include "bitmaps/obm_cdrom"
|
||||
|
@ -327,28 +327,34 @@ static BOOL OBM_CreateBitmaps( char **data, BOOL color, HBITMAP *hBitmap,
|
|||
HBITMAP *hBitmapMask, POINT *hotspot )
|
||||
{
|
||||
Pixmap pixmap, pixmask;
|
||||
XpmAttributes attrs;
|
||||
XpmAttributes *attrs;
|
||||
int err;
|
||||
|
||||
attrs.valuemask = XpmColormap | XpmDepth | XpmColorSymbols | XpmHotspot;
|
||||
attrs.colormap = COLOR_WinColormap;
|
||||
attrs.depth = color ? screenDepth : 1;
|
||||
attrs.colorsymbols = (attrs.depth > 1) ? OBM_Colors : OBM_BlackAndWhite;
|
||||
attrs.numsymbols = (attrs.depth > 1) ? NB_COLOR_SYMBOLS : 2;
|
||||
attrs = (XpmAttributes *)xmalloc( XpmAttributesSize() );
|
||||
attrs->valuemask = XpmColormap | XpmDepth | XpmColorSymbols |XpmHotspot;
|
||||
attrs->colormap = COLOR_WinColormap;
|
||||
attrs->depth = color ? screenDepth : 1;
|
||||
attrs->colorsymbols = (attrs->depth > 1) ? OBM_Colors : OBM_BlackAndWhite;
|
||||
attrs->numsymbols = (attrs->depth > 1) ? NB_COLOR_SYMBOLS : 2;
|
||||
|
||||
err = XpmCreatePixmapFromData( display, rootWindow, data,
|
||||
&pixmap, &pixmask, &attrs );
|
||||
&pixmap, &pixmask, attrs );
|
||||
|
||||
if (err != XpmSuccess) return FALSE;
|
||||
if (err != XpmSuccess)
|
||||
{
|
||||
free( attrs );
|
||||
return FALSE;
|
||||
}
|
||||
if (hotspot)
|
||||
{
|
||||
hotspot->x = attrs.x_hotspot;
|
||||
hotspot->y = attrs.y_hotspot;
|
||||
hotspot->x = attrs->x_hotspot;
|
||||
hotspot->y = attrs->y_hotspot;
|
||||
}
|
||||
*hBitmap = OBM_MakeBitmap( attrs.width, attrs.height,
|
||||
attrs.depth, pixmap );
|
||||
if (hBitmapMask) *hBitmapMask = OBM_MakeBitmap( attrs.width, attrs.height,
|
||||
1, pixmask );
|
||||
*hBitmap = OBM_MakeBitmap( attrs->width, attrs->height,
|
||||
attrs->depth, pixmap );
|
||||
if (hBitmapMask) *hBitmapMask = OBM_MakeBitmap(attrs->width, attrs->height,
|
||||
1, pixmask );
|
||||
free( attrs );
|
||||
if (!*hBitmap)
|
||||
{
|
||||
if (pixmap) XFreePixmap( display, pixmap );
|
||||
|
|
|
@ -3,18 +3,11 @@
|
|||
*
|
||||
* Copyright 1993,1994 Alexandre Julliard
|
||||
*
|
||||
static char Copyright[] = "Copyright Alexandre Julliard, 1993,1994";
|
||||
*/
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#if !defined (MAXINT)
|
||||
#include <limits.h>
|
||||
#define MAXINT INT_MAX
|
||||
#endif
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "color.h"
|
||||
#include "palette.h"
|
||||
#include "stddebug.h"
|
||||
|
@ -51,7 +44,7 @@ static WORD PALETTE_GetNearestIndexAndColor(HPALETTE hpalette, COLORREF *color)
|
|||
b = GetBValue(*color);
|
||||
|
||||
entry = palPtr->logpalette.palPalEntry;
|
||||
for (i = 0, minDist = MAXINT; minDist !=0 &&
|
||||
for (i = 0, minDist = 0xffffff; minDist !=0 &&
|
||||
i < palPtr->logpalette.palNumEntries ; i++)
|
||||
{
|
||||
if (entry->peFlags != 0xff)
|
||||
|
@ -158,7 +151,7 @@ BOOL AnimatePalette(HPALETTE hPal, UINT StartIndex, UINT NumEntries,
|
|||
WORD SetSystemPaletteUse( HDC hdc, WORD use)
|
||||
{
|
||||
WORD old=SystemPaletteUse;
|
||||
printf("SetSystemPaletteUse("NPFMT",%04X) // empty stub !!!\n", hdc, use);
|
||||
printf("SetSystemPaletteUse(%04x,%04x) // empty stub !!!\n", hdc, use);
|
||||
SystemPaletteUse=use;
|
||||
return old;
|
||||
}
|
||||
|
@ -168,7 +161,7 @@ WORD SetSystemPaletteUse( HDC hdc, WORD use)
|
|||
*/
|
||||
WORD GetSystemPaletteUse( HDC hdc )
|
||||
{
|
||||
printf("GetSystemPaletteUse("NPFMT") // empty stub !!!\n", hdc);
|
||||
printf("GetSystemPaletteUse(%04x) // empty stub !!!\n", hdc);
|
||||
return SystemPaletteUse;
|
||||
}
|
||||
|
||||
|
@ -206,7 +199,7 @@ WORD GetSystemPaletteEntries( HDC hdc, WORD start, WORD count,
|
|||
WORD GetNearestPaletteIndex( HPALETTE hpalette, COLORREF color )
|
||||
{
|
||||
WORD index = PALETTE_GetNearestIndexAndColor( hpalette, &color );
|
||||
dprintf_palette(stddeb,"GetNearestPaletteIndex("NPFMT",%06lx): returning %d\n",
|
||||
dprintf_palette(stddeb,"GetNearestPaletteIndex(%04x,%06lx): returning %d\n",
|
||||
hpalette, color, index );
|
||||
return index;
|
||||
}
|
||||
|
@ -247,7 +240,7 @@ HPALETTE GDISelectPalette( HDC hdc, HPALETTE hpal )
|
|||
HPALETTE prev;
|
||||
DC *dc;
|
||||
|
||||
dprintf_palette(stddeb, "GDISelectPalette: "NPFMT" "NPFMT"\n", hdc, hpal );
|
||||
dprintf_palette(stddeb, "GDISelectPalette: %04x %04x\n", hdc, hpal );
|
||||
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0;
|
||||
prev = dc->w.hPalette;
|
||||
dc->w.hPalette = hpal;
|
||||
|
@ -262,7 +255,7 @@ HPALETTE GDISelectPalette( HDC hdc, HPALETTE hpal )
|
|||
*/
|
||||
UINT GDIRealizePalette( HDC hdc )
|
||||
{
|
||||
dprintf_palette(stdnimp, "GDIRealizePalette: "NPFMT"\n", hdc );
|
||||
dprintf_palette(stdnimp, "GDIRealizePalette: %04x\n", hdc );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
*/
|
||||
BOOL REGION_DeleteObject( HRGN hrgn, RGNOBJ * obj )
|
||||
{
|
||||
dprintf_region(stddeb, "DeleteRegion: "NPFMT"\n", hrgn );
|
||||
dprintf_region(stddeb, "DeleteRegion: %04x\n", hrgn );
|
||||
if (obj->xrgn) XDestroyRegion( obj->xrgn );
|
||||
return GDI_FreeObject( hrgn );
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ int OffsetRgn( HRGN hrgn, short x, short y )
|
|||
{
|
||||
RGNOBJ * obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC );
|
||||
if (!obj) return ERROR;
|
||||
dprintf_region(stddeb, "OffsetRgn: "NPFMT" %d,%d\n", hrgn, x, y );
|
||||
dprintf_region(stddeb, "OffsetRgn: %04x %d,%d\n", hrgn, x, y );
|
||||
if (!obj->xrgn) return NULLREGION;
|
||||
XOffsetRegion( obj->xrgn, x, y );
|
||||
return COMPLEXREGION;
|
||||
|
@ -46,7 +46,7 @@ int GetRgnBox( HRGN hrgn, LPRECT rect )
|
|||
{
|
||||
RGNOBJ * obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC );
|
||||
if (!obj) return ERROR;
|
||||
dprintf_region(stddeb, "GetRgnBox: "NPFMT"\n", hrgn );
|
||||
dprintf_region(stddeb, "GetRgnBox: %04x\n", hrgn );
|
||||
if (!obj->xrgn)
|
||||
{
|
||||
SetRectEmpty( rect );
|
||||
|
@ -84,7 +84,7 @@ HRGN CreateRectRgn( INT left, INT top, INT right, INT bottom )
|
|||
XUnionRectWithRegion( &rect, obj->xrgn, obj->xrgn );
|
||||
}
|
||||
else obj->xrgn = 0;
|
||||
dprintf_region( stddeb, "CreateRectRgn(%d,%d-%d,%d): returning "NPFMT"\n",
|
||||
dprintf_region( stddeb, "CreateRectRgn(%d,%d-%d,%d): returning %04x\n",
|
||||
left, top, right, bottom, hrgn );
|
||||
return hrgn;
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ void SetRectRgn( HRGN hrgn, short left, short top, short right, short bottom )
|
|||
{
|
||||
RGNOBJ * obj;
|
||||
|
||||
dprintf_region(stddeb, "SetRectRgn: "NPFMT" %d,%d-%d,%d\n",
|
||||
dprintf_region(stddeb, "SetRectRgn: %04x %d,%d-%d,%d\n",
|
||||
hrgn, left, top, right, bottom );
|
||||
|
||||
if (!(obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ))) return;
|
||||
|
@ -143,7 +143,7 @@ HRGN CreateRoundRectRgn( INT left, INT top, INT right, INT bottom,
|
|||
if (!(hrgn = GDI_AllocObject( sizeof(RGNOBJ), REGION_MAGIC ))) return 0;
|
||||
obj = (RGNOBJ *) GDI_HEAP_LIN_ADDR( hrgn );
|
||||
obj->xrgn = XCreateRegion();
|
||||
dprintf_region(stddeb,"CreateRoundRectRgn(%d,%d-%d,%d %dx%d): return="NPFMT"\n",
|
||||
dprintf_region(stddeb,"CreateRoundRectRgn(%d,%d-%d,%d %dx%d): return=%04x\n",
|
||||
left, top, right, bottom, ellipse_width, ellipse_height, hrgn );
|
||||
|
||||
/* Check parameters */
|
||||
|
@ -276,7 +276,7 @@ HRGN CreatePolyPolygonRgn( const POINT * points, const INT * count,
|
|||
}
|
||||
obj = (RGNOBJ *) GDI_HEAP_LIN_ADDR( hrgn );
|
||||
obj->xrgn = 0;
|
||||
dprintf_region(stddeb, "CreatePolyPolygonRgn: %d polygons, returning "NPFMT"\n",
|
||||
dprintf_region(stddeb, "CreatePolyPolygonRgn: %d polygons, returning %04x\n",
|
||||
nbpolygons, hrgn );
|
||||
|
||||
/* Create X region */
|
||||
|
@ -411,7 +411,7 @@ INT CombineRgn( HRGN hDest, HRGN hSrc1, HRGN hSrc2, INT mode )
|
|||
RGNOBJ *destObj, *src1Obj, *src2Obj;
|
||||
Region destrgn;
|
||||
|
||||
dprintf_region(stddeb, "CombineRgn: "NPFMT","NPFMT" -> "NPFMT" mode=%x\n",
|
||||
dprintf_region(stddeb, "CombineRgn: %04x,%04x -> %04x mode=%x\n",
|
||||
hSrc1, hSrc2, hDest, mode );
|
||||
|
||||
if (!(destObj = (RGNOBJ *) GDI_GetObjPtr( hDest, REGION_MAGIC )))
|
||||
|
|
|
@ -197,9 +197,8 @@ INT DrawText( HDC hdc, LPCTSTR str, INT i_count, LPRECT rect, UINT flags )
|
|||
int width = rect->right - rect->left;
|
||||
int max_width = 0;
|
||||
|
||||
dprintf_text(stddeb,"DrawText: '%s', %d , [(%ld,%ld),(%ld,%ld)]\n", str,
|
||||
count, (LONG)rect->left, (LONG)rect->top, (LONG)rect->right,
|
||||
(LONG)rect->bottom);
|
||||
dprintf_text(stddeb,"DrawText: '%s', %d , [(%d,%d),(%d,%d)]\n", str,
|
||||
count, rect->left, rect->top, rect->right, rect->bottom);
|
||||
|
||||
if (count == -1) count = strlen(str);
|
||||
strPtr = str;
|
||||
|
@ -308,11 +307,9 @@ BOOL ExtTextOut( HDC hdc, short x, short y, WORD flags, LPRECT lprect,
|
|||
|
||||
dprintf_text(stddeb,"ExtTextOut: %d,%d '%*.*s', %d flags=%d\n",
|
||||
x, y, count, count, str, count, flags);
|
||||
if (lprect != NULL) {
|
||||
dprintf_text(stddeb, "rect %ld %ld %ld %ld\n", (LONG)lprect->left,
|
||||
(LONG)lprect->top, (LONG)lprect->right,
|
||||
(LONG)lprect->bottom );
|
||||
}
|
||||
if (lprect != NULL) dprintf_text(stddeb, "rect %d %d %d %d\n",
|
||||
lprect->left, lprect->top,
|
||||
lprect->right, lprect->bottom );
|
||||
|
||||
/* Setup coordinates */
|
||||
|
||||
|
@ -574,7 +571,7 @@ LONG TEXT_TabbedTextOut( HDC hdc, int x, int y, LPSTR lpstr, int count,
|
|||
LONG TabbedTextOut( HDC hdc, short x, short y, LPSTR lpstr, short count,
|
||||
short cTabStops, LPINT lpTabPos, short nTabOrg )
|
||||
{
|
||||
dprintf_text( stddeb, "TabbedTextOut: "NPFMT" %d,%d '%*.*s' %d\n",
|
||||
dprintf_text( stddeb, "TabbedTextOut: %04x %d,%d '%*.*s' %d\n",
|
||||
hdc, x, y, count, count, lpstr, count );
|
||||
return TEXT_TabbedTextOut( hdc, x, y, lpstr, count, cTabStops,
|
||||
lpTabPos, nTabOrg, TRUE );
|
||||
|
@ -587,7 +584,7 @@ LONG TabbedTextOut( HDC hdc, short x, short y, LPSTR lpstr, short count,
|
|||
DWORD GetTabbedTextExtent( HDC hdc, LPSTR lpstr, int count,
|
||||
int cTabStops, LPINT lpTabPos )
|
||||
{
|
||||
dprintf_text( stddeb, "GetTabbedTextExtent: "NPFMT" '%*.*s' %d\n",
|
||||
dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%*.*s' %d\n",
|
||||
hdc, count, count, lpstr, count );
|
||||
return TEXT_TabbedTextOut( hdc, 0, 0, lpstr, count, cTabStops,
|
||||
lpTabPos, 0, FALSE );
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
Fri Mar 15 20:56:31 1996 Ulrich Schmid <uschmid@mail.hh.provi.de>
|
||||
|
||||
* [main.c]
|
||||
`Arrange icons' in group windows
|
||||
|
||||
* [program.c]
|
||||
No sysmenu for program windows
|
||||
|
||||
* [string.c]
|
||||
Update sysmenu after language change
|
||||
|
||||
Wed Feb 28 19:21:55 1996 Ulrich Schmid <uschmid@mail.hh.provi.de>
|
||||
|
||||
* [progman.h] [main.c] [group.c] [program.c] [dialog.c]
|
||||
|
|
|
@ -12,8 +12,7 @@ MOSTOBJS = \
|
|||
grpfile.o \
|
||||
license.o \
|
||||
main.o \
|
||||
program.o \
|
||||
winexec.o
|
||||
program.o
|
||||
|
||||
STRINGOBJS = \
|
||||
accel.o \
|
||||
|
@ -29,7 +28,7 @@ all: check_winerc $(PROGRAMS)
|
|||
@MAKE_RULES@
|
||||
|
||||
# Some strings need addresses >= 0x10000
|
||||
progman: $(MOSTOBJS) $(STRINGOBJS)
|
||||
progman: $(MOSTOBJS) $(STRINGOBJS) $(WINELIB)
|
||||
$(CC) -o progman $(MOSTOBJS) $(LDOPTIONS) $(ALL_LIBS) $(STRINGOBJS)
|
||||
|
||||
clean::
|
||||
|
|
|
@ -320,7 +320,10 @@ static VOID MAIN_MenuCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
/* Menu Windows */
|
||||
case PM_ARRANGE:
|
||||
SendMessage(Globals.hMDIWnd, WM_MDIICONARRANGE, 0, 0);
|
||||
if (hActiveGroupWnd && !IsIconic(hActiveGroupWnd))
|
||||
ArrangeIconicWindows(hActiveGroupWnd);
|
||||
else
|
||||
SendMessage(Globals.hMDIWnd, WM_MDIICONARRANGE, 0, 0);
|
||||
break;
|
||||
|
||||
/* Menu Language */
|
||||
|
|
|
@ -11,14 +11,6 @@
|
|||
|
||||
#include "windows.h"
|
||||
|
||||
/* FIXME should use WinExec from -lwine */
|
||||
#ifdef WINELIB
|
||||
#define WinExec ProgmanWinExec
|
||||
#define WinHelp ProgmanWinHelp
|
||||
HANDLE ProgmanWinExec(LPSTR,WORD);
|
||||
BOOL ProgmanWinHelp(HWND,LPSTR,WORD,DWORD);
|
||||
#endif
|
||||
|
||||
#define MAX_PATHNAME_LEN 1024
|
||||
|
||||
/* Fallback icon */
|
||||
|
|
|
@ -198,7 +198,7 @@ HLOCAL PROGRAM_AddProgram(HLOCAL hGroup, HICON hIcon, LPCSTR lpszName,
|
|||
|
||||
program->hWnd =
|
||||
CreateWindow (STRING_PROGRAM_WIN_CLASS_NAME, (LPSTR)lpszName,
|
||||
WS_CHILD | WS_OVERLAPPEDWINDOW,
|
||||
WS_CHILD | WS_CAPTION,
|
||||
x, y, CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
group->hWnd, 0, Globals.hInstance, 0);
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#ifdef WINELIB
|
||||
#include <options.h>
|
||||
#endif
|
||||
#include "progman.h"
|
||||
|
||||
/* Class names */
|
||||
|
@ -33,6 +36,9 @@ static LPCSTR StringTableDe[];
|
|||
|
||||
VOID STRING_SelectLanguage(LPCSTR lang)
|
||||
{
|
||||
HMENU hMainMenu;
|
||||
HLOCAL hGroup;
|
||||
|
||||
/* Change string table */
|
||||
Globals.StringTable = StringTableEn;
|
||||
if (!lstrcmp(lang, "De")) Globals.StringTable = StringTableDe;
|
||||
|
@ -51,28 +57,23 @@ VOID STRING_SelectLanguage(LPCSTR lang)
|
|||
lstrcpyn(STRING_SYMBOL_Xx + sizeof(STRING_SYMBOL_Xx) - 3, lang, 3);
|
||||
lstrcpyn(STRING_EXECUTE_Xx + sizeof(STRING_EXECUTE_Xx) - 3, lang, 3);
|
||||
|
||||
/* Destroy old menu */
|
||||
if (Globals.hMainMenu)
|
||||
/* Create menu */
|
||||
hMainMenu = LoadMenu(Globals.hInstance, STRING_MAIN_Xx);
|
||||
if (hMainMenu)
|
||||
{
|
||||
SendMessage(Globals.hMDIWnd, WM_MDISETMENU, (WPARAM) NULL, (LPARAM) NULL);
|
||||
#if 0 /* FIXME when MDISetMenu is complete */
|
||||
DestroyMenu(Globals.hMainMenu);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Create new menu */
|
||||
Globals.hMainMenu = LoadMenu(Globals.hInstance, STRING_MAIN_Xx);
|
||||
if (Globals.hMainMenu)
|
||||
{
|
||||
Globals.hFileMenu = GetSubMenu(Globals.hMainMenu, 0);
|
||||
Globals.hOptionMenu = GetSubMenu(Globals.hMainMenu, 1);
|
||||
Globals.hWindowsMenu = GetSubMenu(Globals.hMainMenu, 2);
|
||||
Globals.hFileMenu = GetSubMenu(hMainMenu, 0);
|
||||
Globals.hOptionMenu = GetSubMenu(hMainMenu, 1);
|
||||
Globals.hWindowsMenu = GetSubMenu(hMainMenu, 2);
|
||||
|
||||
if (Globals.hMDIWnd)
|
||||
SendMessage(Globals.hMDIWnd, WM_MDISETMENU,
|
||||
(WPARAM) Globals.hMainMenu,
|
||||
(WPARAM) hMainMenu,
|
||||
(LPARAM) Globals.hWindowsMenu);
|
||||
else SetMenu(Globals.hMainWnd, Globals.hMainMenu);
|
||||
else SetMenu(Globals.hMainWnd, hMainMenu);
|
||||
|
||||
/* Destroy old menu */
|
||||
if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
|
||||
Globals.hMainMenu = hMainMenu;
|
||||
}
|
||||
/* Unsupported language */
|
||||
else if(lstrcmp(lang, "En")) STRING_SelectLanguage("En");
|
||||
|
@ -85,6 +86,17 @@ VOID STRING_SelectLanguage(LPCSTR lang)
|
|||
/* have to be last because of
|
||||
* the possible recursion */
|
||||
Globals.lpszLanguage = lang;
|
||||
#ifdef WINELIB
|
||||
if (!lstrcmp(lang, "De")) Options.language = LANG_De;
|
||||
if (!lstrcmp(lang, "En")) Options.language = LANG_En;
|
||||
GetSystemMenu(Globals.hMainWnd, TRUE);
|
||||
for (hGroup = GROUP_FirstGroup(); hGroup;
|
||||
hGroup = GROUP_NextGroup(hGroup))
|
||||
{
|
||||
GROUP *group = LocalLock(hGroup);
|
||||
GetSystemMenu(group->hWnd, TRUE);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Local Variables: */
|
||||
|
|
|
@ -1,91 +0,0 @@
|
|||
#ifdef WINELIB
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include "windows.h"
|
||||
#include "winbase.h"
|
||||
#include "options.h"
|
||||
#include "dos_fs.h"
|
||||
#include "debug.h"
|
||||
#include "progman.h"
|
||||
|
||||
#define MAX_CMDLINE_SIZE 256
|
||||
|
||||
/* FIXME should use WinExec from -lwine */
|
||||
|
||||
HANDLE ProgmanWinExec( LPSTR lpCmdLine, WORD nCmdShow )
|
||||
{
|
||||
char wine[MAX_CMDLINE_SIZE];
|
||||
char filename[MAX_CMDLINE_SIZE], *p;
|
||||
char cmdline[MAX_CMDLINE_SIZE];
|
||||
const char *argv[10], **argptr;
|
||||
const char *unixfilename;
|
||||
int simplename = 1;
|
||||
|
||||
if (fork()) return(INVALID_HANDLE_VALUE);
|
||||
|
||||
strncpy( filename, lpCmdLine, MAX_CMDLINE_SIZE );
|
||||
filename[MAX_CMDLINE_SIZE-1] = '\0';
|
||||
for (p = filename; *p && (*p != ' ') && (*p != '\t'); p++)
|
||||
if ((*p == ':') || (*p == ':') || (*p == '/')) simplename = 0;
|
||||
if (*p)
|
||||
{
|
||||
strncpy( cmdline, p + 1, 128 );
|
||||
cmdline[127] = '\0';
|
||||
}
|
||||
else cmdline[0] = '\0';
|
||||
*p = '\0';
|
||||
|
||||
if (simplename) unixfilename = filename;
|
||||
else unixfilename = DOSFS_GetUnixFileName(filename, 0);
|
||||
|
||||
argptr = argv;
|
||||
*argptr++ = unixfilename;
|
||||
if (nCmdShow == SW_SHOWMINIMIZED) *argptr++ = "-iconic";
|
||||
if (cmdline[0]) *argptr++ = cmdline;
|
||||
*argptr++ = 0;
|
||||
execvp(argv[0], (char**)argv);
|
||||
|
||||
PROFILE_GetWineIniString("progman", "wine", "wine",
|
||||
wine, sizeof(wine));
|
||||
argptr = argv;
|
||||
*argptr++ = wine;
|
||||
*argptr++ = "-language";
|
||||
*argptr++ = Globals.lpszLanguage;
|
||||
if (nCmdShow == SW_SHOWMINIMIZED) *argptr++ = "-iconic";
|
||||
*argptr++ = lpCmdLine;
|
||||
*argptr++ = 0;
|
||||
execvp(argv[0] , (char**)argv);
|
||||
|
||||
printf("Cannot exec `%s %s %s%s %s'\n",
|
||||
wine, "-language", Globals.lpszLanguage,
|
||||
nCmdShow == SW_SHOWMINIMIZED ? " -iconic" : "",
|
||||
lpCmdLine);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
BOOL ProgmanWinHelp(HWND hWnd, LPSTR lpHelpFile, WORD wCommand, DWORD dwData)
|
||||
{
|
||||
char str[256];
|
||||
dprintf_exec(stddeb,"WinHelp(%s, %u, %lu)\n",
|
||||
lpHelpFile, wCommand, dwData);
|
||||
switch(wCommand) {
|
||||
case 0:
|
||||
case HELP_HELPONHELP:
|
||||
GetWindowsDirectory(str, sizeof(str));
|
||||
strcat(str, "\\winhelp.exe winhelp.hlp");
|
||||
dprintf_exec(stddeb,"'%s'\n", str);
|
||||
break;
|
||||
case HELP_INDEX:
|
||||
GetWindowsDirectory(str, sizeof(str));
|
||||
strcat(str, "\\winhelp.exe ");
|
||||
strcat(str, lpHelpFile);
|
||||
dprintf_exec(stddeb,"'%s'\n", str);
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
WinExec(str, SW_SHOWNORMAL);
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -5,6 +5,7 @@ C_SRCS = \
|
|||
advapi.c \
|
||||
code_page.c \
|
||||
console.c \
|
||||
cursoricon32.c \
|
||||
environment.c \
|
||||
error.c \
|
||||
except.c \
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "windows.h"
|
||||
#include "winerror.h"
|
||||
#include "kernel32.h"
|
||||
#include "winnls.h"
|
||||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
@ -47,3 +48,41 @@ int MultiByteToWideChar(UINT page, DWORD flags, char *src, int srclen,
|
|||
{
|
||||
return (srclen==-1) ? strlen(src) * 2: srclen*2;
|
||||
}
|
||||
|
||||
int WideCharToMultiByte(UINT page, DWORD flags, WCHAR *src, int srclen,
|
||||
char *dst, int dstlen, char* defchar, BOOL *used)
|
||||
{
|
||||
int count = 0;
|
||||
int dont_copy= (dstlen==0);
|
||||
if(page!=GetACP() && page!=CP_OEMCP && page!=CP_ACP)
|
||||
fprintf(stdnimp,"Conversion in CP %d not supported\n",page);
|
||||
if(flags)
|
||||
fprintf(stdnimp,"WideCharToMultiByte flags %lx not supported\n",flags);
|
||||
if(used)
|
||||
*used=0;
|
||||
while(srclen && (dont_copy || dstlen))
|
||||
{
|
||||
if(!dont_copy){
|
||||
if(*src<256)
|
||||
*dst = *src;
|
||||
else
|
||||
{
|
||||
/* FIXME: Is this correct ?*/
|
||||
if(flags & WC_DEFAULTCHAR){
|
||||
*dst = defchar ? *defchar : '?';
|
||||
if(used)*used=1;
|
||||
}
|
||||
}
|
||||
dstlen--;
|
||||
dst++;
|
||||
}
|
||||
count++;
|
||||
if(!*src)
|
||||
break;
|
||||
if(srclen!=-1)srclen--;
|
||||
src++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,461 @@
|
|||
/*
|
||||
* Cursor and icon support
|
||||
*
|
||||
* Copyright 1995 Alexandre Julliard
|
||||
* Copyright 1996 Martin von Loewis
|
||||
*/
|
||||
|
||||
/*
|
||||
* Theory:
|
||||
*
|
||||
* Cursors and icons are stored in a global heap block, with the
|
||||
* following layout:
|
||||
*
|
||||
* CURSORICONINFO info;
|
||||
* BYTE[] ANDbits;
|
||||
* BYTE[] XORbits;
|
||||
*
|
||||
* The bits structures are in the format of a device-dependent bitmap.
|
||||
*
|
||||
* This layout is very sub-optimal, as the bitmap bits are stored in
|
||||
* the X client instead of in the server like other bitmaps; however,
|
||||
* some programs (notably Paint Brush) expect to be able to manipulate
|
||||
* the bits directly :-(
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "windows.h"
|
||||
#include "bitmap.h"
|
||||
#include "callback.h"
|
||||
#include "cursoricon.h"
|
||||
#include "sysmetrics.h"
|
||||
#include "win.h"
|
||||
#include "struct32.h"
|
||||
#include "string32.h"
|
||||
#include "resource32.h"
|
||||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
#include "xmalloc.h"
|
||||
#include "task.h"
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* CURSORICON32_FindBestIcon
|
||||
*
|
||||
* Find the icon closest to the requested size and number of colors.
|
||||
*/
|
||||
static ICONDIRENTRY32 *CURSORICON32_FindBestIcon( CURSORICONDIR32 *dir,
|
||||
int width, int height, int colors )
|
||||
{
|
||||
int i, maxcolors, maxwidth, maxheight;
|
||||
ICONDIRENTRY32 *entry, *bestEntry = NULL;
|
||||
|
||||
if (dir->idCount < 1)
|
||||
{
|
||||
fprintf( stderr, "Icon: empty directory!\n" );
|
||||
return NULL;
|
||||
}
|
||||
if (dir->idCount == 1) return &dir->idEntries[0].icon; /* No choice... */
|
||||
|
||||
/* First find the exact size with less colors */
|
||||
|
||||
maxcolors = 0;
|
||||
for (i = 0, entry = &dir->idEntries[0].icon; i < dir->idCount; i++,entry++)
|
||||
if ((entry->bWidth == width) && (entry->bHeight == height) &&
|
||||
(entry->bColorCount <= colors) && (entry->bColorCount > maxcolors))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxcolors = entry->bColorCount;
|
||||
}
|
||||
if (bestEntry) return bestEntry;
|
||||
|
||||
/* First find the exact size with more colors */
|
||||
|
||||
maxcolors = 255;
|
||||
for (i = 0, entry = &dir->idEntries[0].icon; i < dir->idCount; i++,entry++)
|
||||
if ((entry->bWidth == width) && (entry->bHeight == height) &&
|
||||
(entry->bColorCount > colors) && (entry->bColorCount <= maxcolors))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxcolors = entry->bColorCount;
|
||||
}
|
||||
if (bestEntry) return bestEntry;
|
||||
|
||||
/* Now find a smaller one with less colors */
|
||||
|
||||
maxcolors = maxwidth = maxheight = 0;
|
||||
for (i = 0, entry = &dir->idEntries[0].icon; i < dir->idCount; i++,entry++)
|
||||
if ((entry->bWidth <= width) && (entry->bHeight <= height) &&
|
||||
(entry->bWidth >= maxwidth) && (entry->bHeight >= maxheight) &&
|
||||
(entry->bColorCount <= colors) && (entry->bColorCount > maxcolors))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxwidth = entry->bWidth;
|
||||
maxheight = entry->bHeight;
|
||||
maxcolors = entry->bColorCount;
|
||||
}
|
||||
if (bestEntry) return bestEntry;
|
||||
|
||||
/* Now find a smaller one with more colors */
|
||||
|
||||
maxcolors = 255;
|
||||
maxwidth = maxheight = 0;
|
||||
for (i = 0, entry = &dir->idEntries[0].icon; i < dir->idCount; i++,entry++)
|
||||
if ((entry->bWidth <= width) && (entry->bHeight <= height) &&
|
||||
(entry->bWidth >= maxwidth) && (entry->bHeight >= maxheight) &&
|
||||
(entry->bColorCount > colors) && (entry->bColorCount <= maxcolors))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxwidth = entry->bWidth;
|
||||
maxheight = entry->bHeight;
|
||||
maxcolors = entry->bColorCount;
|
||||
}
|
||||
if (bestEntry) return bestEntry;
|
||||
|
||||
/* Now find a larger one with less colors */
|
||||
|
||||
maxcolors = 0;
|
||||
maxwidth = maxheight = 255;
|
||||
for (i = 0, entry = &dir->idEntries[0].icon; i < dir->idCount; i++,entry++)
|
||||
if ((entry->bWidth <= maxwidth) && (entry->bHeight <= maxheight) &&
|
||||
(entry->bColorCount <= colors) && (entry->bColorCount > maxcolors))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxwidth = entry->bWidth;
|
||||
maxheight = entry->bHeight;
|
||||
maxcolors = entry->bColorCount;
|
||||
}
|
||||
if (bestEntry) return bestEntry;
|
||||
|
||||
/* Now find a larger one with more colors */
|
||||
|
||||
maxcolors = maxwidth = maxheight = 255;
|
||||
for (i = 0, entry = &dir->idEntries[0].icon; i < dir->idCount; i++,entry++)
|
||||
if ((entry->bWidth <= maxwidth) && (entry->bHeight <= maxheight) &&
|
||||
(entry->bColorCount > colors) && (entry->bColorCount <= maxcolors))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxwidth = entry->bWidth;
|
||||
maxheight = entry->bHeight;
|
||||
maxcolors = entry->bColorCount;
|
||||
}
|
||||
|
||||
return bestEntry;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* CURSORICON32_FindBestCursor
|
||||
*
|
||||
* Find the cursor closest to the requested size.
|
||||
*/
|
||||
static CURSORDIRENTRY32 *CURSORICON32_FindBestCursor( CURSORICONDIR32 *dir,
|
||||
int width, int height )
|
||||
{
|
||||
int i, maxwidth, maxheight;
|
||||
CURSORDIRENTRY32 *entry, *bestEntry = NULL;
|
||||
|
||||
if (dir->idCount < 1)
|
||||
{
|
||||
fprintf( stderr, "Cursor: empty directory!\n" );
|
||||
return NULL;
|
||||
}
|
||||
if (dir->idCount == 1) return &dir->idEntries[0].cursor; /* No choice... */
|
||||
|
||||
/* First find the largest one smaller than or equal to the requested size*/
|
||||
|
||||
maxwidth = maxheight = 0;
|
||||
for(i = 0,entry = &dir->idEntries[0].cursor; i < dir->idCount; i++,entry++)
|
||||
if ((entry->wWidth <= width) && (entry->wHeight <= height) &&
|
||||
(entry->wWidth > maxwidth) && (entry->wHeight > maxheight))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxwidth = entry->wWidth;
|
||||
maxheight = entry->wHeight;
|
||||
}
|
||||
if (bestEntry) return bestEntry;
|
||||
|
||||
/* Now find the smallest one larger than the requested size */
|
||||
|
||||
maxwidth = maxheight = 255;
|
||||
for(i = 0,entry = &dir->idEntries[0].cursor; i < dir->idCount; i++,entry++)
|
||||
if ((entry->wWidth < maxwidth) && (entry->wHeight < maxheight))
|
||||
{
|
||||
bestEntry = entry;
|
||||
maxwidth = entry->wWidth;
|
||||
maxheight = entry->wHeight;
|
||||
}
|
||||
|
||||
return bestEntry;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* CURSORICON32_LoadDirEntry
|
||||
*
|
||||
* Load the icon/cursor directory for a given resource name and find the
|
||||
* best matching entry.
|
||||
*/
|
||||
static BOOL CURSORICON32_LoadDirEntry(HANDLE hInstance, LPCWSTR name,
|
||||
int width, int height, int colors,
|
||||
BOOL fCursor, CURSORICONDIRENTRY32 *dirEntry)
|
||||
{
|
||||
HANDLE32 hRsrc;
|
||||
HANDLE32 hMem;
|
||||
CURSORICONDIR32 *dir;
|
||||
CURSORICONDIRENTRY32 *entry = NULL;
|
||||
|
||||
if (!(hRsrc = FindResource32( hInstance, name,
|
||||
(LPCWSTR)(fCursor ? RT_GROUP_CURSOR : RT_GROUP_ICON) )))
|
||||
return FALSE;
|
||||
if (!(hMem = LoadResource32( hInstance, hRsrc ))) return FALSE;
|
||||
if ((dir = (CURSORICONDIR32 *)LockResource32( hMem )))
|
||||
{
|
||||
if (fCursor)
|
||||
entry = (CURSORICONDIRENTRY32 *)CURSORICON32_FindBestCursor( dir,
|
||||
width, height );
|
||||
else
|
||||
entry = (CURSORICONDIRENTRY32 *)CURSORICON32_FindBestIcon( dir,
|
||||
width, height, colors );
|
||||
if (entry) *dirEntry = *entry;
|
||||
}
|
||||
FreeResource32( hMem );
|
||||
return (entry != NULL);
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* CURSORICON32_LoadHandler
|
||||
*
|
||||
* Create a cursor or icon from a resource.
|
||||
*/
|
||||
static HANDLE CURSORICON32_LoadHandler( HANDLE32 handle, HINSTANCE hInstance,
|
||||
BOOL fCursor )
|
||||
{
|
||||
HANDLE hAndBits, hXorBits, hRes;
|
||||
HDC hdc;
|
||||
int size, sizeAnd, sizeXor;
|
||||
POINT hotspot = { 0 ,0 };
|
||||
BITMAPOBJ *bmpXor, *bmpAnd;
|
||||
BITMAPINFO *bmi, *pInfo;
|
||||
CURSORICONINFO *info;
|
||||
char *bits;
|
||||
|
||||
hRes=0;
|
||||
if (fCursor) /* If cursor, get the hotspot */
|
||||
{
|
||||
POINT *pt = (POINT *)LockResource32( handle );
|
||||
hotspot = *pt;
|
||||
bmi = (BITMAPINFO *)(pt + 1);
|
||||
}
|
||||
else bmi = (BITMAPINFO *)LockResource32( handle );
|
||||
|
||||
/* Create a copy of the bitmap header */
|
||||
|
||||
size = DIB_BitmapInfoSize( bmi, DIB_RGB_COLORS );
|
||||
/* Make sure we have room for the monochrome bitmap later on */
|
||||
size = MAX( size, sizeof(BITMAPINFOHEADER) + 2*sizeof(RGBQUAD) );
|
||||
pInfo = (BITMAPINFO *)xmalloc( size );
|
||||
memcpy( pInfo, bmi, size );
|
||||
|
||||
if (pInfo->bmiHeader.biSize == sizeof(BITMAPINFOHEADER))
|
||||
{
|
||||
if (pInfo->bmiHeader.biCompression != BI_RGB)
|
||||
{
|
||||
fprintf(stderr,"Unknown size for compressed icon bitmap.\n");
|
||||
free( pInfo );
|
||||
return 0;
|
||||
}
|
||||
pInfo->bmiHeader.biHeight /= 2;
|
||||
}
|
||||
else if (pInfo->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
|
||||
{
|
||||
BITMAPCOREHEADER *core = (BITMAPCOREHEADER *)pInfo;
|
||||
core->bcHeight /= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf( stderr, "CURSORICON32_Load: Unknown bitmap length %ld!\n",
|
||||
pInfo->bmiHeader.biSize );
|
||||
free( pInfo );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create the XOR bitmap */
|
||||
|
||||
if (!(hdc = GetDC( 0 )))
|
||||
{
|
||||
free( pInfo );
|
||||
return 0;
|
||||
}
|
||||
|
||||
hXorBits = CreateDIBitmap( hdc, &pInfo->bmiHeader, CBM_INIT,
|
||||
(char*)bmi + size, pInfo, DIB_RGB_COLORS );
|
||||
|
||||
/* Fix the bitmap header to load the monochrome mask */
|
||||
|
||||
if (pInfo->bmiHeader.biSize == sizeof(BITMAPINFOHEADER))
|
||||
{
|
||||
BITMAPINFOHEADER *bih = &pInfo->bmiHeader;
|
||||
RGBQUAD *rgb = pInfo->bmiColors;
|
||||
bits = (char *)bmi + size +
|
||||
DIB_GetImageWidthBytes(bih->biWidth,bih->biBitCount)*bih->biHeight;
|
||||
bih->biBitCount = 1;
|
||||
bih->biClrUsed = bih->biClrImportant = 2;
|
||||
rgb[0].rgbBlue = rgb[0].rgbGreen = rgb[0].rgbRed = 0x00;
|
||||
rgb[1].rgbBlue = rgb[1].rgbGreen = rgb[1].rgbRed = 0xff;
|
||||
rgb[0].rgbReserved = rgb[1].rgbReserved = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
BITMAPCOREHEADER *bch = (BITMAPCOREHEADER *)pInfo;
|
||||
RGBTRIPLE *rgb = (RGBTRIPLE *)(bch + 1);
|
||||
bits = (char *)bmi + size +
|
||||
DIB_GetImageWidthBytes(bch->bcWidth,bch->bcBitCount)*bch->bcHeight;
|
||||
bch->bcBitCount = 1;
|
||||
rgb[0].rgbtBlue = rgb[0].rgbtGreen = rgb[0].rgbtRed = 0x00;
|
||||
rgb[1].rgbtBlue = rgb[1].rgbtGreen = rgb[1].rgbtRed = 0xff;
|
||||
}
|
||||
|
||||
/* Create the AND bitmap */
|
||||
|
||||
hAndBits = CreateDIBitmap( hdc, &pInfo->bmiHeader, CBM_INIT,
|
||||
bits, pInfo, DIB_RGB_COLORS );
|
||||
ReleaseDC( 0, hdc );
|
||||
|
||||
/* Now create the CURSORICONINFO structure */
|
||||
|
||||
bmpXor = (BITMAPOBJ *) GDI_GetObjPtr( hXorBits, BITMAP_MAGIC );
|
||||
bmpAnd = (BITMAPOBJ *) GDI_GetObjPtr( hAndBits, BITMAP_MAGIC );
|
||||
sizeXor = bmpXor->bitmap.bmHeight * bmpXor->bitmap.bmWidthBytes;
|
||||
sizeAnd = bmpAnd->bitmap.bmHeight * bmpAnd->bitmap.bmWidthBytes;
|
||||
|
||||
if (!(hRes = GlobalAlloc( GMEM_MOVEABLE,
|
||||
sizeof(CURSORICONINFO) + sizeXor + sizeAnd)))
|
||||
{
|
||||
DeleteObject( hXorBits );
|
||||
DeleteObject( hAndBits );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Make it owned by the module */
|
||||
if (hInstance) FarSetOwner( hRes, (WORD)(DWORD)GetExePtr(hInstance) );
|
||||
|
||||
info = (CURSORICONINFO *)GlobalLock( hRes );
|
||||
info->ptHotSpot.x = hotspot.x;
|
||||
info->ptHotSpot.y = hotspot.y;
|
||||
info->nWidth = bmpXor->bitmap.bmWidth;
|
||||
info->nHeight = bmpXor->bitmap.bmHeight;
|
||||
info->nWidthBytes = bmpXor->bitmap.bmWidthBytes;
|
||||
info->bPlanes = bmpXor->bitmap.bmPlanes;
|
||||
info->bBitsPerPixel = bmpXor->bitmap.bmBitsPixel;
|
||||
|
||||
/* Transfer the bitmap bits to the CURSORICONINFO structure */
|
||||
|
||||
GetBitmapBits( hAndBits, sizeAnd, (char *)(info + 1) );
|
||||
GetBitmapBits( hXorBits, sizeXor, (char *)(info + 1) + sizeAnd );
|
||||
DeleteObject( hXorBits );
|
||||
DeleteObject( hAndBits );
|
||||
GlobalUnlock( hRes );
|
||||
return hRes;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* CURSORICON32_Load
|
||||
*
|
||||
* Load a cursor or icon.
|
||||
*/
|
||||
static HANDLE CURSORICON32_Load( HANDLE hInstance, LPCWSTR name, int width,
|
||||
int height, int colors, BOOL fCursor )
|
||||
{
|
||||
HANDLE32 handle;
|
||||
HANDLE hRet;
|
||||
HANDLE32 hRsrc;
|
||||
CURSORICONDIRENTRY32 dirEntry;
|
||||
|
||||
if(!hInstance) /* OEM cursor/icon */
|
||||
{
|
||||
WORD resid;
|
||||
if(HIWORD(name))
|
||||
{
|
||||
LPSTR ansi;
|
||||
ansi=STRING32_DupUniToAnsi(name);
|
||||
if(ansi[0]=='#') /*Check for '#xxx' name */
|
||||
{
|
||||
resid=atoi(ansi+1);
|
||||
free(ansi);
|
||||
}else{
|
||||
free(ansi);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
resid=(WORD)(int)name;
|
||||
return OBM_LoadCursorIcon(resid, fCursor);
|
||||
}
|
||||
|
||||
/* Find the best entry in the directory */
|
||||
|
||||
if (!CURSORICON32_LoadDirEntry( hInstance, name, width, height,
|
||||
colors, fCursor, &dirEntry )) return 0;
|
||||
|
||||
/* Load the resource */
|
||||
|
||||
if (!(hRsrc = FindResource32( hInstance,
|
||||
(LPWSTR) (DWORD) dirEntry.icon.wResId,
|
||||
(LPWSTR) (fCursor ? RT_CURSOR : RT_ICON )))) return 0;
|
||||
if (!(handle = LoadResource32( hInstance, hRsrc ))) return 0;
|
||||
|
||||
hRet = CURSORICON32_LoadHandler( handle, hInstance, fCursor );
|
||||
FreeResource32(handle);
|
||||
return hRet;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* LoadCursor
|
||||
*/
|
||||
HCURSOR WIN32_LoadCursorW( HANDLE hInstance, LPCWSTR name )
|
||||
{
|
||||
return CURSORICON32_Load( hInstance, name,
|
||||
SYSMETRICS_CXCURSOR, SYSMETRICS_CYCURSOR, 1, TRUE);
|
||||
}
|
||||
|
||||
HCURSOR WIN32_LoadCursorA(HANDLE hInstance, LPCSTR name)
|
||||
{
|
||||
HCURSOR res=0;
|
||||
if(!HIWORD(name))
|
||||
return WIN32_LoadCursorW(hInstance, name);
|
||||
else {
|
||||
LPWSTR uni = STRING32_DupAnsiToUni(name);
|
||||
res = WIN32_LoadCursorW(hInstance, uni);
|
||||
free(uni);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* LoadIcon
|
||||
*/
|
||||
HICON WIN32_LoadIconW( HANDLE hInstance, LPCWSTR name )
|
||||
{
|
||||
return CURSORICON32_Load( hInstance, name,
|
||||
SYSMETRICS_CXICON, SYSMETRICS_CYICON,
|
||||
MIN( 16, 1 << screenDepth ), FALSE );
|
||||
}
|
||||
|
||||
HICON WIN32_LoadIconA( HANDLE hInstance, LPCSTR name)
|
||||
{
|
||||
HICON res=0;
|
||||
if(!HIWORD(name))
|
||||
return WIN32_LoadIconW(hInstance, name);
|
||||
else {
|
||||
LPWSTR uni = STRING32_DupAnsiToUni(name);
|
||||
res = WIN32_LoadIconW(hInstance, uni);
|
||||
free(uni);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
21
win32/file.c
21
win32/file.c
|
@ -474,3 +474,24 @@ static int TranslateCreationFlags(DWORD create_flags)
|
|||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* GetFileAttributes
|
||||
*/
|
||||
DWORD GetFileAttributesA(LPCSTR lpFileName)
|
||||
{
|
||||
struct stat buf;
|
||||
DWORD res=0;
|
||||
if(stat(lpFileName,&buf)==-1)
|
||||
{
|
||||
SetLastError(ErrnoToLastError(errno));
|
||||
return 0;
|
||||
}
|
||||
if(buf.st_mode & S_IFREG)
|
||||
res |= FILE_ATTRIBUTE_NORMAL;
|
||||
if(buf.st_mode & S_IFDIR)
|
||||
res |= FILE_ATTRIBUTE_DIRECTORY;
|
||||
if((buf.st_mode & S_IWRITE) == 0)
|
||||
res |= FILE_ATTRIBUTE_READONLY;
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "windows.h"
|
||||
#include "winerror.h"
|
||||
#include "struct32.h"
|
||||
#include "stackframe.h"
|
||||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
@ -38,3 +39,10 @@ BOOL WIN32_GetTextExtentPointA(HDC hdc, LPCTSTR str, int length, SIZE32* lpsize)
|
|||
|
||||
return retval;
|
||||
}
|
||||
|
||||
ATOM WIN32_GlobalAddAtomA(LPCTSTR str)
|
||||
{
|
||||
char buffer[256]; /* 16-bit atoms are limited to 255 anyway */
|
||||
lstrcpyn( buffer, str, sizeof(buffer) );
|
||||
return GlobalAddAtom(MAKE_SEGPTR(buffer));
|
||||
}
|
||||
|
|
|
@ -132,7 +132,7 @@ HANDLE32 LoadResource32( HINSTANCE hModule, HANDLE32 hRsrc )
|
|||
struct w_files *wptr = wine_files;
|
||||
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "LoadResource: module="NPFMT" res="NPFMT"\n",
|
||||
dprintf_resource(stddeb, "LoadResource: module=%04x res=%04x\n",
|
||||
hModule, hRsrc );
|
||||
if (!hRsrc) return 0;
|
||||
while (wptr != NULL && (wptr->hModule != hModule))
|
||||
|
@ -169,7 +169,7 @@ BOOL FreeResource32( HANDLE32 handle )
|
|||
INT AccessResource32( HINSTANCE hModule, HRSRC hRsrc )
|
||||
{
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "AccessResource: module="NPFMT" res="NPFMT"\n",
|
||||
dprintf_resource(stddeb, "AccessResource: module=%04x res=%04x\n",
|
||||
hModule, hRsrc );
|
||||
if (!hRsrc) return 0;
|
||||
fprintf(stderr,"AccessResource32: not implemented\n");
|
||||
|
@ -183,7 +183,7 @@ INT AccessResource32( HINSTANCE hModule, HRSRC hRsrc )
|
|||
DWORD SizeofResource32( HINSTANCE hModule, HRSRC hRsrc )
|
||||
{
|
||||
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
|
||||
dprintf_resource(stddeb, "SizeofResource: module="NPFMT" res="NPFMT"\n",
|
||||
dprintf_resource(stddeb, "SizeofResource: module=%04x res=%04x\n",
|
||||
hModule, hRsrc );
|
||||
fprintf(stderr,"SizeofResource32: not implemented\n");
|
||||
return 0;
|
||||
|
@ -203,10 +203,10 @@ HANDLE32 WIN32_LoadAcceleratorsW(HINSTANCE instance, LPCWSTR lpTableName)
|
|||
int i, n;
|
||||
|
||||
if (HIWORD(lpTableName))
|
||||
dprintf_accel( stddeb, "LoadAccelerators: "NPFMT" '%s'\n",
|
||||
dprintf_accel( stddeb, "LoadAccelerators: %04x '%s'\n",
|
||||
instance, (char *)( lpTableName ) );
|
||||
else
|
||||
dprintf_accel( stddeb, "LoadAccelerators: "NPFMT" %04x\n",
|
||||
dprintf_accel( stddeb, "LoadAccelerators: %04x %04x\n",
|
||||
instance, LOWORD(lpTableName) );
|
||||
|
||||
if (!(hRsrc = FindResource32( instance, lpTableName,
|
||||
|
@ -261,7 +261,7 @@ WIN32_LoadStringW(HINSTANCE instance, DWORD resource_id, LPWSTR buffer, int bufl
|
|||
int string_num;
|
||||
int i;
|
||||
|
||||
dprintf_resource(stddeb, "LoadString: instance = "NPFMT", id = %04x, buffer = %08x, "
|
||||
dprintf_resource(stddeb, "LoadString: instance = %04x, id = %04x, buffer = %08x, "
|
||||
"length = %d\n", instance, (int)resource_id, (int) buffer, buflen);
|
||||
|
||||
hrsrc = FindResource32( instance, (LPCWSTR)((resource_id>>4)+1),
|
||||
|
|
|
@ -6,11 +6,13 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include "windows.h"
|
||||
#include "winerror.h"
|
||||
#include "kernel32.h"
|
||||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
#include "xmalloc.h"
|
||||
|
||||
/***********************************************************************
|
||||
* GetCurrentThreadId (KERNEL32.200)
|
||||
|
@ -36,3 +38,68 @@ HANDLE WINAPI GetCurrentThread(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Critical Sections are currently ignored
|
||||
*/
|
||||
void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit)
|
||||
{
|
||||
memset(lpCrit,0,sizeof(CRITICAL_SECTION));
|
||||
}
|
||||
|
||||
void WINAPI EnterCriticalSection(CRITICAL_SECTION* lpCrit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void WINAPI LeaveCriticalSection(CRITICAL_SECTION* lpCrit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void WINAPI DeleteCriticalSection(CRITICAL_SECTION* lpCrit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* Tls is available only for the single thread
|
||||
*/
|
||||
static LPVOID* Tls=0;
|
||||
static int TlsCount=0;
|
||||
|
||||
DWORD WINAPI TlsAlloc()
|
||||
{
|
||||
if(!Tls){
|
||||
TlsCount++;
|
||||
Tls=xmalloc(sizeof(LPVOID));
|
||||
return 0;
|
||||
}
|
||||
Tls=xrealloc(Tls,sizeof(LPVOID)*(++TlsCount));
|
||||
return TlsCount-1;
|
||||
}
|
||||
|
||||
void TlsFree(DWORD index)
|
||||
{
|
||||
/*FIXME: should remember that it has been freed */
|
||||
return;
|
||||
}
|
||||
|
||||
LPVOID TlsGetValue(DWORD index)
|
||||
{
|
||||
if(index>=TlsCount)
|
||||
{
|
||||
/* FIXME: Set last error*/
|
||||
return 0;
|
||||
}
|
||||
return Tls[index];
|
||||
}
|
||||
|
||||
void TlsSetValue(DWORD index,LPVOID value)
|
||||
{
|
||||
if(index>=TlsCount)
|
||||
{
|
||||
/* FIXME: Set last error*/
|
||||
return;
|
||||
}
|
||||
Tls[index]=value;
|
||||
}
|
||||
|
|
|
@ -322,8 +322,8 @@ HWND USER32_CreateDialogIndirectParamAorW(HINSTANCE hInst,LPVOID templ,
|
|||
/* FIXME: proper modalframe handling ??*/
|
||||
if (dlgTempl->style & DS_MODALFRAME) exStyle |= WS_EX_DLGMODALFRAME;
|
||||
|
||||
/* FIXME: AdjustWindowRectEx */
|
||||
|
||||
AdjustWindowRectEx( &rect, dlgTempl->style,
|
||||
hMenu ? TRUE : FALSE , exStyle );
|
||||
rect.right -= rect.left;
|
||||
rect.bottom -= rect.top;
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* Caret functions
|
||||
*
|
||||
* Copyright 1993 David Metcalfe
|
||||
* Copyright 1996 Frans van Dorsselaer
|
||||
*/
|
||||
|
||||
#include "windows.h"
|
||||
|
@ -22,8 +23,7 @@ typedef struct
|
|||
short y;
|
||||
short width;
|
||||
short height;
|
||||
COLORREF color;
|
||||
HBITMAP bitmap;
|
||||
HBRUSH hBrush;
|
||||
WORD timeout;
|
||||
WORD timerid;
|
||||
} CARET;
|
||||
|
@ -35,7 +35,7 @@ typedef enum
|
|||
CARET_TOGGLE,
|
||||
} DISPLAY_CARET;
|
||||
|
||||
static CARET Caret = { (HWND)0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
static CARET Caret = { 0, };
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
|
@ -52,9 +52,7 @@ HWND CARET_GetHwnd()
|
|||
void CARET_DisplayCaret(DISPLAY_CARET status)
|
||||
{
|
||||
HDC hdc;
|
||||
HBRUSH hBrush;
|
||||
HBRUSH hPrevBrush;
|
||||
HRGN rgn;
|
||||
|
||||
if (Caret.on && (status == CARET_ON)) return;
|
||||
if (!Caret.on && (status == CARET_OFF)) return;
|
||||
|
@ -62,21 +60,11 @@ void CARET_DisplayCaret(DISPLAY_CARET status)
|
|||
/* So now it's always a toggle */
|
||||
|
||||
Caret.on = !Caret.on;
|
||||
hdc = GetDC(Caret.hwnd);
|
||||
if (Caret.bitmap == (HBITMAP)0 || Caret.bitmap == (HBITMAP)1)
|
||||
hBrush = CreateSolidBrush(Caret.color);
|
||||
else
|
||||
hBrush = CreatePatternBrush(Caret.bitmap);
|
||||
hPrevBrush = SelectObject(hdc, (HANDLE)hBrush);
|
||||
SetROP2(hdc, R2_XORPEN);
|
||||
rgn = CreateRectRgn(Caret.x, Caret.y,
|
||||
Caret.x + Caret.width,
|
||||
Caret.y + Caret.height);
|
||||
FillRgn(hdc, rgn, hBrush);
|
||||
DeleteObject( rgn );
|
||||
if (!(hdc = GetDCEx( Caret.hwnd, 0, DCX_USESTYLE | DCX_CACHE ))) return;
|
||||
hPrevBrush = SelectObject( hdc, Caret.hBrush );
|
||||
PatBlt( hdc, Caret.x, Caret.y, Caret.width, Caret.height, PATINVERT );
|
||||
SelectObject( hdc, hPrevBrush );
|
||||
DeleteObject( hBrush );
|
||||
ReleaseDC(Caret.hwnd, hdc);
|
||||
ReleaseDC( Caret.hwnd, hdc );
|
||||
}
|
||||
|
||||
|
||||
|
@ -85,8 +73,8 @@ void CARET_DisplayCaret(DISPLAY_CARET status)
|
|||
*/
|
||||
WORD CARET_Callback(HWND hwnd, WORD msg, WORD timerid, LONG ctime)
|
||||
{
|
||||
dprintf_caret(stddeb,"CARET_Callback: hwnd="NPFMT", timerid=%d, "
|
||||
"caret=%d\n", hwnd, timerid, Caret.on);
|
||||
dprintf_caret(stddeb,"CARET_Callback: hwnd=%04x, timerid=%d, caret=%d\n",
|
||||
hwnd, timerid, Caret.on);
|
||||
|
||||
CARET_DisplayCaret(CARET_TOGGLE);
|
||||
return 0;
|
||||
|
@ -157,34 +145,36 @@ static void CARET_Initialize()
|
|||
*/
|
||||
BOOL CreateCaret(HWND hwnd, HBITMAP bitmap, INT width, INT height)
|
||||
{
|
||||
dprintf_caret(stddeb,"CreateCaret: hwnd="NPFMT"\n", hwnd);
|
||||
dprintf_caret(stddeb,"CreateCaret: hwnd=%04x\n", hwnd);
|
||||
|
||||
if (!hwnd) return FALSE;
|
||||
|
||||
/* if cursor already exists, destroy it */
|
||||
if (Caret.hwnd) DestroyCaret();
|
||||
|
||||
if (bitmap && bitmap != (HBITMAP)1) Caret.bitmap = bitmap;
|
||||
|
||||
if (width)
|
||||
Caret.width = width;
|
||||
if (bitmap && (bitmap != 1))
|
||||
{
|
||||
BITMAP bmp;
|
||||
if (!GetObject( bitmap, sizeof(bmp), (LPSTR)&bmp )) return FALSE;
|
||||
Caret.width = bmp.bmWidth;
|
||||
Caret.height = bmp.bmHeight;
|
||||
/* FIXME: we should make a copy of the bitmap instead of a brush */
|
||||
Caret.hBrush = CreatePatternBrush( bitmap );
|
||||
}
|
||||
else
|
||||
Caret.width = GetSystemMetrics(SM_CXBORDER);
|
||||
|
||||
if (height)
|
||||
Caret.height = height;
|
||||
else
|
||||
Caret.height = GetSystemMetrics(SM_CYBORDER);
|
||||
{
|
||||
Caret.width = width ? width : GetSystemMetrics(SM_CXBORDER);
|
||||
Caret.height = height ? height : GetSystemMetrics(SM_CYBORDER);
|
||||
Caret.hBrush = CreateSolidBrush( bitmap ? GetSysColor(COLOR_GRAYTEXT) :
|
||||
GetSysColor(COLOR_WINDOW) );
|
||||
}
|
||||
|
||||
Caret.hwnd = hwnd;
|
||||
Caret.hidden = 1;
|
||||
Caret.on = FALSE;
|
||||
Caret.x = 0;
|
||||
Caret.y = 0;
|
||||
if (bitmap == (HBITMAP)1)
|
||||
Caret.color = GetSysColor(COLOR_GRAYTEXT);
|
||||
else
|
||||
Caret.color = GetSysColor(COLOR_WINDOW);
|
||||
|
||||
Caret.timeout = GetProfileInt( "windows", "CursorBlinkRate", 750 );
|
||||
|
||||
CARET_Initialize();
|
||||
|
@ -201,9 +191,10 @@ BOOL DestroyCaret()
|
|||
{
|
||||
if (!Caret.hwnd) return FALSE;
|
||||
|
||||
dprintf_caret(stddeb,"DestroyCaret: hwnd="NPFMT", timerid=%d\n",
|
||||
dprintf_caret(stddeb,"DestroyCaret: hwnd=%04x, timerid=%d\n",
|
||||
Caret.hwnd, Caret.timerid);
|
||||
|
||||
DeleteObject( Caret.hBrush );
|
||||
CARET_KillTimer();
|
||||
CARET_DisplayCaret(CARET_OFF);
|
||||
|
||||
|
@ -243,8 +234,8 @@ void HideCaret(HWND hwnd)
|
|||
if (!Caret.hwnd) return;
|
||||
if (hwnd && (Caret.hwnd != hwnd)) return;
|
||||
|
||||
dprintf_caret(stddeb,"HideCaret: hwnd="NPFMT", hidden=%d\n",
|
||||
hwnd, Caret.hidden);
|
||||
dprintf_caret(stddeb,"HideCaret: hwnd=%04x, hidden=%d\n",
|
||||
hwnd, Caret.hidden);
|
||||
|
||||
CARET_KillTimer();
|
||||
CARET_DisplayCaret(CARET_OFF);
|
||||
|
@ -261,7 +252,7 @@ void ShowCaret(HWND hwnd)
|
|||
if (!Caret.hwnd) return;
|
||||
if (hwnd && (Caret.hwnd != hwnd)) return;
|
||||
|
||||
dprintf_caret(stddeb,"ShowCaret: hwnd="NPFMT", hidden=%d\n",
|
||||
dprintf_caret(stddeb,"ShowCaret: hwnd=%04x, hidden=%d\n",
|
||||
hwnd, Caret.hidden);
|
||||
|
||||
if (Caret.hidden)
|
||||
|
@ -284,7 +275,7 @@ void SetCaretBlinkTime(WORD msecs)
|
|||
{
|
||||
if (!Caret.hwnd) return;
|
||||
|
||||
dprintf_caret(stddeb,"SetCaretBlinkTime: hwnd="NPFMT", msecs=%d\n",
|
||||
dprintf_caret(stddeb,"SetCaretBlinkTime: hwnd=%04x, msecs=%d\n",
|
||||
Caret.hwnd, msecs);
|
||||
|
||||
Caret.timeout = msecs;
|
||||
|
@ -300,7 +291,7 @@ WORD GetCaretBlinkTime()
|
|||
{
|
||||
if (!Caret.hwnd) return 0;
|
||||
|
||||
dprintf_caret(stddeb,"GetCaretBlinkTime: hwnd="NPFMT", msecs=%d\n",
|
||||
dprintf_caret(stddeb,"GetCaretBlinkTime: hwnd=%04x, msecs=%d\n",
|
||||
Caret.hwnd, Caret.timeout);
|
||||
|
||||
return Caret.timeout;
|
||||
|
@ -315,8 +306,8 @@ void GetCaretPos(LPPOINT pt)
|
|||
{
|
||||
if (!Caret.hwnd || !pt) return;
|
||||
|
||||
dprintf_caret(stddeb,"GetCaretPos: hwnd="NPFMT", pt=%p, x=%d, y=%d\n",
|
||||
Caret.hwnd, pt, Caret.x, Caret.y);
|
||||
dprintf_caret(stddeb,"GetCaretPos: hwnd=%04x, pt=%p, x=%d, y=%d\n",
|
||||
Caret.hwnd, pt, Caret.x, Caret.y);
|
||||
|
||||
pt->x = Caret.x;
|
||||
pt->y = Caret.y;
|
||||
|
|
|
@ -159,7 +159,7 @@ ATOM RegisterClass( LPWNDCLASS class )
|
|||
HCLASS handle, prevClass;
|
||||
int classExtra;
|
||||
|
||||
dprintf_class( stddeb, "RegisterClass: wndproc=%08lx hinst="NPFMT" name='%s' background "NPFMT"\n",
|
||||
dprintf_class( stddeb, "RegisterClass: wndproc=%08lx hinst=%04x name='%s' background %04x\n",
|
||||
(DWORD)class->lpfnWndProc, class->hInstance,
|
||||
HIWORD(class->lpszClassName) ?
|
||||
(char *)PTR_SEG_TO_LIN(class->lpszClassName) : "(int)",
|
||||
|
@ -258,11 +258,7 @@ BOOL UnregisterClass( SEGPTR className, HANDLE hinstance )
|
|||
if (classPtr->wc.hbrBackground) DeleteObject( classPtr->wc.hbrBackground );
|
||||
GlobalDeleteAtom( classPtr->atomName );
|
||||
if (HIWORD(classPtr->wc.lpszMenuName))
|
||||
#ifdef WINELIB32
|
||||
USER_HEAP_FREE( (HANDLE)classPtr->wc.lpszMenuName );
|
||||
#else
|
||||
USER_HEAP_FREE( LOWORD(classPtr->wc.lpszMenuName) );
|
||||
#endif
|
||||
USER_HEAP_FREE( class );
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -336,7 +332,7 @@ int GetClassName(HWND hwnd, LPSTR lpClassName, short maxCount)
|
|||
CLASS *classPtr;
|
||||
|
||||
/* FIXME: We have the find the correct hInstance */
|
||||
dprintf_class(stddeb,"GetClassName("NPFMT",%p,%d)\n",hwnd,lpClassName,maxCount);
|
||||
dprintf_class(stddeb,"GetClassName(%04x,%p,%d)\n",hwnd,lpClassName,maxCount);
|
||||
if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0;
|
||||
if (!(classPtr = CLASS_FindClassPtr(wndPtr->hClass))) return 0;
|
||||
|
||||
|
@ -351,7 +347,7 @@ BOOL GetClassInfo( HANDLE hInstance, SEGPTR name, LPWNDCLASS lpWndClass )
|
|||
{
|
||||
CLASS *classPtr;
|
||||
|
||||
dprintf_class( stddeb, "GetClassInfo: hInstance="NPFMT" className=%s\n",
|
||||
dprintf_class( stddeb, "GetClassInfo: hInstance=%04x className=%s\n",
|
||||
hInstance,
|
||||
HIWORD(name) ? (char *)PTR_SEG_TO_LIN(name) : "(int)" );
|
||||
|
||||
|
|
|
@ -108,26 +108,25 @@ static BOOL DCE_GetVisRect( WND *wndPtr, BOOL clientArea, RECT *lprect )
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
while (wndPtr->hwndParent)
|
||||
while (wndPtr->parent)
|
||||
{
|
||||
WND *parentPtr = WIN_FindWndPtr( wndPtr->hwndParent );
|
||||
if (!(parentPtr->dwStyle & WS_VISIBLE) ||
|
||||
(parentPtr->flags & WIN_NO_REDRAW) ||
|
||||
(parentPtr->dwStyle & WS_ICONIC))
|
||||
wndPtr = wndPtr->parent;
|
||||
if (!(wndPtr->dwStyle & WS_VISIBLE) ||
|
||||
(wndPtr->flags & WIN_NO_REDRAW) ||
|
||||
(wndPtr->dwStyle & WS_ICONIC))
|
||||
{
|
||||
SetRectEmpty( lprect ); /* Clip everything */
|
||||
return FALSE;
|
||||
}
|
||||
xoffset += parentPtr->rectClient.left;
|
||||
yoffset += parentPtr->rectClient.top;
|
||||
OffsetRect( lprect, parentPtr->rectClient.left,
|
||||
parentPtr->rectClient.top );
|
||||
xoffset += wndPtr->rectClient.left;
|
||||
yoffset += wndPtr->rectClient.top;
|
||||
OffsetRect( lprect, wndPtr->rectClient.left,
|
||||
wndPtr->rectClient.top );
|
||||
|
||||
/* Warning!! we assume that IntersectRect() handles the case */
|
||||
/* where the destination is the same as one of the sources. */
|
||||
if (!IntersectRect( lprect, lprect, &parentPtr->rectClient ))
|
||||
if (!IntersectRect( lprect, lprect, &wndPtr->rectClient ))
|
||||
return FALSE; /* Visible rectangle is empty */
|
||||
wndPtr = parentPtr;
|
||||
}
|
||||
OffsetRect( lprect, -xoffset, -yoffset );
|
||||
return TRUE;
|
||||
|
@ -143,30 +142,28 @@ static BOOL DCE_GetVisRect( WND *wndPtr, BOOL clientArea, RECT *lprect )
|
|||
* is destroyed. Used to implement DCX_CLIPSIBLINGS and
|
||||
* DCX_CLIPCHILDREN styles.
|
||||
*/
|
||||
static HRGN DCE_ClipWindows( HWND hwndStart, HWND hwndEnd,
|
||||
static HRGN DCE_ClipWindows( WND *pWndStart, WND *pWndEnd,
|
||||
HRGN hrgn, int xoffset, int yoffset )
|
||||
{
|
||||
HRGN hrgnNew;
|
||||
WND *wndPtr;
|
||||
|
||||
if (!hwndStart) return hrgn;
|
||||
if (!pWndStart) return hrgn;
|
||||
if (!(hrgnNew = CreateRectRgn( 0, 0, 0, 0 )))
|
||||
{
|
||||
DeleteObject( hrgn );
|
||||
return 0;
|
||||
}
|
||||
for (; hwndStart != hwndEnd; hwndStart = wndPtr->hwndNext)
|
||||
for (; pWndStart != pWndEnd; pWndStart = pWndStart->next)
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( hwndStart );
|
||||
if (!(wndPtr->dwStyle & WS_VISIBLE)) continue;
|
||||
SetRectRgn( hrgnNew, wndPtr->rectWindow.left + xoffset,
|
||||
wndPtr->rectWindow.top + yoffset,
|
||||
wndPtr->rectWindow.right + xoffset,
|
||||
wndPtr->rectWindow.bottom + yoffset );
|
||||
if (!(pWndStart->dwStyle & WS_VISIBLE)) continue;
|
||||
SetRectRgn( hrgnNew, pWndStart->rectWindow.left + xoffset,
|
||||
pWndStart->rectWindow.top + yoffset,
|
||||
pWndStart->rectWindow.right + xoffset,
|
||||
pWndStart->rectWindow.bottom + yoffset );
|
||||
if (!CombineRgn( hrgn, hrgn, hrgnNew, RGN_DIFF )) break;
|
||||
}
|
||||
DeleteObject( hrgnNew );
|
||||
if (hwndStart != hwndEnd) /* something went wrong */
|
||||
if (pWndStart != pWndEnd) /* something went wrong */
|
||||
{
|
||||
DeleteObject( hrgn );
|
||||
return 0;
|
||||
|
@ -207,7 +204,7 @@ HRGN DCE_GetVisRgn( HWND hwnd, WORD flags )
|
|||
yoffset = wndPtr->rectClient.top - wndPtr->rectWindow.top;
|
||||
}
|
||||
else xoffset = yoffset = 0;
|
||||
hrgn = DCE_ClipWindows( wndPtr->hwndChild, 0, hrgn, xoffset, yoffset );
|
||||
hrgn = DCE_ClipWindows( wndPtr->child, NULL, hrgn, xoffset, yoffset );
|
||||
if (!hrgn) return 0;
|
||||
}
|
||||
|
||||
|
@ -225,8 +222,8 @@ HRGN DCE_GetVisRgn( HWND hwnd, WORD flags )
|
|||
}
|
||||
if (flags & DCX_CLIPSIBLINGS)
|
||||
{
|
||||
hrgn = DCE_ClipWindows( GetWindow( wndPtr->hwndParent, GW_CHILD ),
|
||||
hwnd, hrgn, xoffset, yoffset );
|
||||
hrgn = DCE_ClipWindows( wndPtr->parent ? wndPtr->parent->child : NULL,
|
||||
wndPtr, hrgn, xoffset, yoffset );
|
||||
if (!hrgn) return 0;
|
||||
}
|
||||
|
||||
|
@ -234,12 +231,11 @@ HRGN DCE_GetVisRgn( HWND hwnd, WORD flags )
|
|||
|
||||
while (wndPtr->dwStyle & WS_CHILD)
|
||||
{
|
||||
hwnd = wndPtr->hwndParent;
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
wndPtr = wndPtr->parent;
|
||||
xoffset -= wndPtr->rectClient.left;
|
||||
yoffset -= wndPtr->rectClient.top;
|
||||
hrgn = DCE_ClipWindows( GetWindow( wndPtr->hwndParent, GW_CHILD ),
|
||||
hwnd, hrgn, xoffset, yoffset );
|
||||
hrgn = DCE_ClipWindows( wndPtr->parent->child, wndPtr,
|
||||
hrgn, xoffset, yoffset );
|
||||
if (!hrgn) return 0;
|
||||
}
|
||||
return hrgn;
|
||||
|
@ -275,7 +271,7 @@ static void DCE_SetDrawable( WND *wndPtr, DC *dc, WORD flags )
|
|||
}
|
||||
while (!wndPtr->window)
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( wndPtr->hwndParent );
|
||||
wndPtr = wndPtr->parent;
|
||||
dc->w.DCOrgX += wndPtr->rectClient.left;
|
||||
dc->w.DCOrgY += wndPtr->rectClient.top;
|
||||
}
|
||||
|
@ -354,12 +350,12 @@ HDC GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags )
|
|||
{
|
||||
if (flags & DCX_PARENTCLIP) /* Get a VisRgn for the parent */
|
||||
{
|
||||
WND *parentPtr = WIN_FindWndPtr( wndPtr->hwndParent );
|
||||
WND *parentPtr = wndPtr->parent;
|
||||
DWORD newflags = flags & ~(DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN |
|
||||
DCX_WINDOW);
|
||||
if (parentPtr->dwStyle & WS_CLIPSIBLINGS)
|
||||
newflags |= DCX_CLIPSIBLINGS;
|
||||
hrgnVisible = DCE_GetVisRgn( wndPtr->hwndParent, newflags );
|
||||
hrgnVisible = DCE_GetVisRgn( parentPtr->hwndSelf, newflags );
|
||||
if (flags & DCX_WINDOW)
|
||||
OffsetRgn( hrgnVisible, -wndPtr->rectWindow.left,
|
||||
-wndPtr->rectWindow.top );
|
||||
|
@ -384,7 +380,7 @@ HDC GetDCEx( HWND hwnd, HRGN hrgnClip, DWORD flags )
|
|||
SelectVisRgn( hdc, hrgnVisible );
|
||||
DeleteObject( hrgnVisible );
|
||||
|
||||
dprintf_dc(stddeb, "GetDCEx("NPFMT","NPFMT",0x%lx): returning "NPFMT"\n",
|
||||
dprintf_dc(stddeb, "GetDCEx(%04x,%04x,0x%lx): returning %04x\n",
|
||||
hwnd, hrgnClip, flags, hdc);
|
||||
return hdc;
|
||||
}
|
||||
|
@ -424,7 +420,7 @@ int ReleaseDC( HWND hwnd, HDC hdc )
|
|||
HANDLE hdce;
|
||||
DCE * dce = NULL;
|
||||
|
||||
dprintf_dc(stddeb, "ReleaseDC: "NPFMT" "NPFMT"\n", hwnd, hdc );
|
||||
dprintf_dc(stddeb, "ReleaseDC: %04x %04x\n", hwnd, hdc );
|
||||
|
||||
for (hdce = firstDCE; (hdce); hdce = dce->hNext)
|
||||
{
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
*
|
||||
* Copyright 1993 Alexandre Julliard
|
||||
*
|
||||
static char Copyright[] = "Copyright Alexandre Julliard, 1993";
|
||||
*/
|
||||
*/
|
||||
|
||||
#include "windows.h"
|
||||
#include "dialog.h"
|
||||
|
|
|
@ -122,7 +122,7 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
|||
case WM_MOUSEACTIVATE:
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
{
|
||||
LONG ret = SendMessage( wndPtr->hwndParent, WM_MOUSEACTIVATE,
|
||||
LONG ret = SendMessage( wndPtr->parent->hwndSelf, WM_MOUSEACTIVATE,
|
||||
wParam, lParam );
|
||||
if (ret) return ret;
|
||||
}
|
||||
|
@ -251,7 +251,8 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
|||
|
||||
case WM_SETCURSOR:
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
if (SendMessage(wndPtr->hwndParent, WM_SETCURSOR, wParam, lParam))
|
||||
if (SendMessage(wndPtr->parent->hwndSelf, WM_SETCURSOR,
|
||||
wParam, lParam))
|
||||
return TRUE;
|
||||
return NC_HandleSetCursor( hwnd, wParam, lParam );
|
||||
|
||||
|
@ -300,7 +301,7 @@ LRESULT DefWindowProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
|||
case WM_SHOWWINDOW:
|
||||
if( !lParam ) return 0; /* sent from ShowWindow */
|
||||
|
||||
if( !(wndPtr->dwStyle & WS_POPUP) || !wndPtr->hwndOwner )
|
||||
if( !(wndPtr->dwStyle & WS_POPUP) || !wndPtr->owner )
|
||||
return 0;
|
||||
|
||||
if( wndPtr->dwStyle & WS_VISIBLE )
|
||||
|
|
142
windows/dialog.c
142
windows/dialog.c
|
@ -3,8 +3,7 @@
|
|||
*
|
||||
* Copyright 1993, 1994 Alexandre Julliard
|
||||
*
|
||||
static char Copyright[] = "Copyright Alexandre Julliard, 1993, 1994";
|
||||
*/
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
@ -59,16 +58,10 @@ BOOL DIALOG_Init()
|
|||
*/
|
||||
HWND DIALOG_GetFirstTabItem( HWND hwndDlg )
|
||||
{
|
||||
HWND hwnd;
|
||||
WND *wndPtr = WIN_FindWndPtr( hwndDlg );
|
||||
hwnd = wndPtr->hwndChild;
|
||||
while(hwnd)
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
if (wndPtr->dwStyle & WS_TABSTOP) break;
|
||||
hwnd = wndPtr->hwndNext;
|
||||
}
|
||||
return hwnd;
|
||||
WND *pWnd = WIN_FindWndPtr( hwndDlg );
|
||||
for (pWnd = pWnd->child; pWnd; pWnd = pWnd->next)
|
||||
if (pWnd->dwStyle & WS_TABSTOP) return pWnd->hwndSelf;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -218,8 +211,8 @@ HWND CreateDialogParam( HINSTANCE hInst, SEGPTR dlgTemplate,
|
|||
HGLOBAL hmem;
|
||||
SEGPTR data;
|
||||
|
||||
dprintf_dialog(stddeb, "CreateDialogParam: "NPFMT","SPFMT","NPFMT",%08lx,%ld\n",
|
||||
hInst, dlgTemplate, owner, (DWORD)dlgProc, param );
|
||||
dprintf_dialog(stddeb, "CreateDialogParam: %04x,%08lx,%04x,%08lx,%ld\n",
|
||||
hInst, (DWORD)dlgTemplate, owner, (DWORD)dlgProc, param );
|
||||
|
||||
if (!(hRsrc = FindResource( hInst, dlgTemplate, RT_DIALOG ))) return 0;
|
||||
if (!(hmem = LoadResource( hInst, hRsrc ))) return 0;
|
||||
|
@ -411,7 +404,7 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate,
|
|||
header->y * yUnit / 8,
|
||||
header->cx * xUnit / 4,
|
||||
header->cy * yUnit / 8,
|
||||
hwnd, (HMENU)((DWORD)header->id),
|
||||
hwnd, (HMENU)header->id,
|
||||
dlgInfo->hDialogHeap, (SEGPTR)0 );
|
||||
}
|
||||
else
|
||||
|
@ -422,7 +415,7 @@ HWND CreateDialogIndirectParam( HINSTANCE hInst, SEGPTR dlgTemplate,
|
|||
header->y * yUnit / 8,
|
||||
header->cx * xUnit / 4,
|
||||
header->cy * yUnit / 8,
|
||||
hwnd, (HMENU)((DWORD)header->id),
|
||||
hwnd, (HMENU)header->id,
|
||||
hInst, (SEGPTR)0 );
|
||||
}
|
||||
|
||||
|
@ -523,8 +516,8 @@ INT DialogBoxParam( HINSTANCE hInst, SEGPTR dlgTemplate,
|
|||
{
|
||||
HWND hwnd;
|
||||
|
||||
dprintf_dialog(stddeb, "DialogBoxParam: "NPFMT","SPFMT","NPFMT",%08lx,%ld\n",
|
||||
hInst, dlgTemplate, owner, (DWORD)dlgProc, param );
|
||||
dprintf_dialog(stddeb, "DialogBoxParam: %04x,%08lx,%04x,%08lx,%ld\n",
|
||||
hInst, (DWORD)dlgTemplate, owner, (DWORD)dlgProc, param );
|
||||
hwnd = CreateDialogParam( hInst, dlgTemplate, owner, dlgProc, param );
|
||||
if (hwnd) return DIALOG_DoDialogBox( hwnd, owner );
|
||||
return -1;
|
||||
|
@ -567,7 +560,7 @@ BOOL EndDialog( HWND hwnd, INT retval )
|
|||
DIALOGINFO * dlgInfo = (DIALOGINFO *)wndPtr->wExtra;
|
||||
dlgInfo->msgResult = retval;
|
||||
dlgInfo->fEnd = TRUE;
|
||||
dprintf_dialog(stddeb, "EndDialog: "NPFMT" %d\n", hwnd, retval );
|
||||
dprintf_dialog(stddeb, "EndDialog: %04x %d\n", hwnd, retval );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -698,18 +691,11 @@ int GetDlgCtrlID( HWND hwnd )
|
|||
*/
|
||||
HWND GetDlgItem( HWND hwndDlg, WORD id )
|
||||
{
|
||||
HWND curChild;
|
||||
WND * childPtr;
|
||||
WND * wndPtr;
|
||||
WND *pWnd;
|
||||
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwndDlg ))) return 0;
|
||||
curChild = wndPtr->hwndChild;
|
||||
while(curChild)
|
||||
{
|
||||
childPtr = WIN_FindWndPtr( curChild );
|
||||
if (childPtr->wIDmenu == id) return curChild;
|
||||
curChild = childPtr->hwndNext;
|
||||
}
|
||||
if (!(pWnd = WIN_FindWndPtr( hwndDlg ))) return 0;
|
||||
for (pWnd = pWnd->child; pWnd; pWnd = pWnd->next)
|
||||
if (pWnd->wIDmenu == id) return pWnd->hwndSelf;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -811,25 +797,20 @@ WORD IsDlgButtonChecked( HWND hwnd, WORD id )
|
|||
*/
|
||||
BOOL CheckRadioButton( HWND hwndDlg, UINT firstID, UINT lastID, UINT checkID )
|
||||
{
|
||||
HWND button = GetWindow( hwndDlg, GW_CHILD );
|
||||
WND *wndPtr;
|
||||
WND *pWnd = WIN_FindWndPtr( hwndDlg );
|
||||
if (!pWnd) return FALSE;
|
||||
|
||||
while (button)
|
||||
{
|
||||
if (!(wndPtr = WIN_FindWndPtr( button ))) return FALSE;
|
||||
if ((wndPtr->wIDmenu == firstID) || (wndPtr->wIDmenu == lastID)) break;
|
||||
button = wndPtr->hwndNext;
|
||||
}
|
||||
if (!button) return FALSE;
|
||||
for (pWnd = pWnd->child; pWnd; pWnd = pWnd->next)
|
||||
if ((pWnd->wIDmenu == firstID) || (pWnd->wIDmenu == lastID)) break;
|
||||
if (!pWnd) return FALSE;
|
||||
|
||||
if (wndPtr->wIDmenu == lastID)
|
||||
if (pWnd->wIDmenu == lastID)
|
||||
lastID = firstID; /* Buttons are in reverse order */
|
||||
while (button)
|
||||
while (pWnd)
|
||||
{
|
||||
if (!(wndPtr = WIN_FindWndPtr( button ))) return FALSE;
|
||||
SendMessage( button, BM_SETCHECK, (wndPtr->wIDmenu == checkID), 0 );
|
||||
if (wndPtr->wIDmenu == lastID) break;
|
||||
button = wndPtr->hwndNext;
|
||||
SendMessage(pWnd->hwndSelf, BM_SETCHECK, (pWnd->wIDmenu == checkID),0);
|
||||
if (pWnd->wIDmenu == lastID) break;
|
||||
pWnd = pWnd->next;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -865,46 +846,39 @@ void MapDialogRect( HWND hwnd, LPRECT rect )
|
|||
*/
|
||||
HWND GetNextDlgGroupItem( HWND hwndDlg, HWND hwndCtrl, BOOL fPrevious )
|
||||
{
|
||||
HWND hwnd, hwndStart;
|
||||
WND * dlgPtr, * ctrlPtr, * wndPtr;
|
||||
WND *pWnd, *pWndStart, *pWndCtrl, *pWndDlg;
|
||||
|
||||
if (!(dlgPtr = WIN_FindWndPtr( hwndDlg ))) return 0;
|
||||
if (!(ctrlPtr = WIN_FindWndPtr( hwndCtrl ))) return 0;
|
||||
if (ctrlPtr->hwndParent != hwndDlg) return 0;
|
||||
if (!(pWndDlg = WIN_FindWndPtr( hwndDlg ))) return 0;
|
||||
if (!(pWndCtrl = WIN_FindWndPtr( hwndCtrl ))) return 0;
|
||||
if (pWndCtrl->parent != pWndDlg) return 0;
|
||||
|
||||
if (!fPrevious && ctrlPtr->hwndNext) /*Check if next control is in group*/
|
||||
if (!fPrevious && pWndCtrl->next) /* Check if next control is in group */
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( ctrlPtr->hwndNext );
|
||||
if (!(wndPtr->dwStyle & WS_GROUP)) return ctrlPtr->hwndNext;
|
||||
if (!(pWndCtrl->next->dwStyle & WS_GROUP))
|
||||
return pWndCtrl->next->hwndSelf;
|
||||
}
|
||||
|
||||
/* Now we will have to find the start of the group */
|
||||
|
||||
hwndStart = hwnd = dlgPtr->hwndChild;
|
||||
while (hwnd)
|
||||
for (pWnd = pWndStart = pWndDlg->child; pWnd; pWnd = pWnd->next)
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
if (wndPtr->dwStyle & WS_GROUP) hwndStart = hwnd; /*Start of a group*/
|
||||
if (hwnd == hwndCtrl) break;
|
||||
hwnd = wndPtr->hwndNext;
|
||||
if (pWnd->dwStyle & WS_GROUP) pWndStart = pWnd; /* Start of a group */
|
||||
if (pWnd == pWndCtrl) break;
|
||||
}
|
||||
|
||||
if (!hwnd) fprintf(stderr, "GetNextDlgGroupItem: hwnd not in dialog!\n");
|
||||
if (!pWnd) fprintf(stderr, "GetNextDlgGroupItem: hwnd not in dialog!\n");
|
||||
|
||||
/* only case left for forward search: wraparound */
|
||||
if (!fPrevious) return hwndStart;
|
||||
|
||||
hwnd = hwndStart;
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
hwnd = wndPtr->hwndNext;
|
||||
while (hwnd && (hwnd != hwndCtrl))
|
||||
if (!fPrevious) return pWndStart->hwndSelf;
|
||||
|
||||
pWnd = pWndStart->next;
|
||||
while (pWnd && (pWnd != pWndCtrl))
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
if (wndPtr->dwStyle & WS_GROUP) break;
|
||||
hwndStart = hwnd;
|
||||
hwnd = wndPtr->hwndNext;
|
||||
if (pWnd->dwStyle & WS_GROUP) break;
|
||||
pWndStart = pWnd;
|
||||
pWnd = pWnd->next;
|
||||
}
|
||||
return hwndStart;
|
||||
return pWndStart->hwndSelf;
|
||||
}
|
||||
|
||||
|
||||
|
@ -913,26 +887,24 @@ HWND GetNextDlgGroupItem( HWND hwndDlg, HWND hwndCtrl, BOOL fPrevious )
|
|||
*/
|
||||
HWND GetNextDlgTabItem( HWND hwndDlg, HWND hwndCtrl, BOOL fPrevious )
|
||||
{
|
||||
HWND hwnd, hwndLast;
|
||||
WND * dlgPtr, * ctrlPtr, * wndPtr;
|
||||
WND *pWnd, *pWndLast, *pWndCtrl, *pWndDlg;
|
||||
|
||||
if (!(dlgPtr = WIN_FindWndPtr( hwndDlg ))) return 0;
|
||||
if (!(ctrlPtr = WIN_FindWndPtr( hwndCtrl ))) return 0;
|
||||
if (ctrlPtr->hwndParent != hwndDlg) return 0;
|
||||
if (!(pWndDlg = WIN_FindWndPtr( hwndDlg ))) return 0;
|
||||
if (!(pWndCtrl = WIN_FindWndPtr( hwndCtrl ))) return 0;
|
||||
if (pWndCtrl->parent != pWndDlg) return 0;
|
||||
|
||||
hwndLast = hwndCtrl;
|
||||
hwnd = ctrlPtr->hwndNext;
|
||||
pWndLast = pWndCtrl;
|
||||
pWnd = pWndCtrl->next;
|
||||
while (1)
|
||||
{
|
||||
if (!hwnd) hwnd = dlgPtr->hwndChild;
|
||||
if (hwnd == hwndCtrl) break;
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
if ((wndPtr->dwStyle & WS_TABSTOP) && (wndPtr->dwStyle & WS_VISIBLE))
|
||||
if (!pWnd) pWnd = pWndDlg->child;
|
||||
if (pWnd == pWndCtrl) break;
|
||||
if ((pWnd->dwStyle & WS_TABSTOP) && (pWnd->dwStyle & WS_VISIBLE))
|
||||
{
|
||||
hwndLast = hwnd;
|
||||
pWndLast = pWnd;
|
||||
if (!fPrevious) break;
|
||||
}
|
||||
hwnd = wndPtr->hwndNext;
|
||||
pWnd = pWnd->next;
|
||||
}
|
||||
return hwndLast;
|
||||
return pWndLast->hwndSelf;
|
||||
}
|
||||
|
|
|
@ -164,8 +164,8 @@ void EVENT_ProcessEvent( XEvent *event )
|
|||
XFindContext( display, ((XAnyEvent *)event)->window, winContext, &ptr );
|
||||
hwnd = (HWND) (int)ptr;
|
||||
|
||||
dprintf_event(stddeb, "Got event %s for hwnd "NPFMT"\n",
|
||||
event_names[event->type], hwnd );
|
||||
dprintf_event(stddeb, "Got event %s for hwnd %04x\n",
|
||||
event_names[event->type], hwnd );
|
||||
|
||||
switch(event->type)
|
||||
{
|
||||
|
@ -229,7 +229,7 @@ void EVENT_ProcessEvent( XEvent *event )
|
|||
break;
|
||||
|
||||
default:
|
||||
dprintf_event(stddeb, "Unprocessed event %s for hwnd "NPFMT"\n",
|
||||
dprintf_event(stddeb, "Unprocessed event %s for hwnd %04x\n",
|
||||
event_names[event->type], hwnd );
|
||||
break;
|
||||
}
|
||||
|
@ -522,7 +522,7 @@ static void EVENT_ConfigureNotify( HWND hwnd, XConfigureEvent *event )
|
|||
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd )))
|
||||
{
|
||||
dprintf_event(stddeb, "ConfigureNotify: invalid HWND "NPFMT"\n", hwnd);
|
||||
dprintf_event(stddeb,"ConfigureNotify: invalid HWND %04x\n",hwnd);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -672,7 +672,7 @@ HWND SetCapture( HWND hwnd )
|
|||
GrabModeAsync, GrabModeAsync,
|
||||
None, None, CurrentTime ) == GrabSuccess)
|
||||
{
|
||||
dprintf_win(stddeb, "SetCapture: "NPFMT"\n", hwnd);
|
||||
dprintf_win(stddeb, "SetCapture: %04x\n", hwnd);
|
||||
captureWnd = hwnd;
|
||||
return old_capture_wnd;
|
||||
}
|
||||
|
|
|
@ -68,8 +68,8 @@ void FOCUS_SwitchFocus(HWND hFocusFrom, HWND hFocusTo)
|
|||
*/
|
||||
HWND SetFocus(HWND hwnd)
|
||||
{
|
||||
HWND hWndPrevFocus, hwndTop;
|
||||
WND *wndPtr = WIN_FindWndPtr( hwndTop = hwnd );
|
||||
HWND hWndPrevFocus, hwndTop = hwnd;
|
||||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
|
||||
if (wndPtr)
|
||||
{
|
||||
|
@ -79,11 +79,8 @@ HWND SetFocus(HWND hwnd)
|
|||
{
|
||||
if ( wndPtr->dwStyle & ( WS_MINIMIZE | WS_DISABLED) )
|
||||
return 0;
|
||||
|
||||
hwndTop = wndPtr->hwndParent;
|
||||
wndPtr = WIN_FindWndPtr( hwndTop );
|
||||
if ( !wndPtr )
|
||||
return 0;
|
||||
if (!(wndPtr = wndPtr->parent)) return 0;
|
||||
hwndTop = wndPtr->hwndSelf;
|
||||
}
|
||||
|
||||
if( hwnd == hwndFocus ) return hwnd;
|
||||
|
|
|
@ -967,7 +967,7 @@ BOOL ExtFloodFill( HDC hdc, INT x, INT y, COLORREF color, WORD fillType )
|
|||
RECT rect;
|
||||
DC *dc;
|
||||
|
||||
dprintf_graphics( stddeb, "ExtFloodFill "NPFMT" %d,%d %06lx %d\n",
|
||||
dprintf_graphics( stddeb, "ExtFloodFill %04x %d,%d %06lx %d\n",
|
||||
hdc, x, y, color, fillType );
|
||||
dc = (DC *) GDI_GetObjPtr(hdc, DC_MAGIC);
|
||||
if (!dc)
|
||||
|
|
|
@ -71,7 +71,7 @@ HANDLE HOOK_SetHook( short id, HOOKPROC proc, HINSTANCE hInst, HTASK hTask )
|
|||
if ((id < WH_FIRST_HOOK) || (id > WH_LAST_HOOK)) return 0;
|
||||
if (!(hInst = GetExePtr( hInst ))) return 0;
|
||||
|
||||
dprintf_hook( stddeb, "Setting hook %d: %08lx "NPFMT" "NPFMT"\n",
|
||||
dprintf_hook( stddeb, "Setting hook %d: %08lx %04x %04x\n",
|
||||
id, (DWORD)proc, hInst, hTask );
|
||||
|
||||
if (hTask) /* Task-specific hook */
|
||||
|
@ -84,7 +84,7 @@ HANDLE HOOK_SetHook( short id, HOOKPROC proc, HINSTANCE hInst, HTASK hTask )
|
|||
if (id == WH_JOURNALPLAYBACK || id == WH_CBT ||
|
||||
id == WH_DEBUG || id == WH_SHELL)
|
||||
{
|
||||
fprintf( stdnimp, "Unimplemented hook set: (%d,%08lx,"NPFMT","NPFMT")!\n",
|
||||
fprintf( stdnimp, "Unimplemented hook set: (%d,%08lx,%04x,%04x)!\n",
|
||||
id, (DWORD)proc, hInst, hTask );
|
||||
}
|
||||
|
||||
|
@ -97,7 +97,7 @@ HANDLE HOOK_SetHook( short id, HOOKPROC proc, HINSTANCE hInst, HTASK hTask )
|
|||
data->ownerQueue = hQueue;
|
||||
data->ownerModule = hInst;
|
||||
data->inHookProc = 0;
|
||||
dprintf_hook( stddeb, "Setting hook %d: ret="NPFMT"\n", id, handle );
|
||||
dprintf_hook( stddeb, "Setting hook %d: ret=%04x\n", id, handle );
|
||||
|
||||
/* Insert it in the correct linked list */
|
||||
|
||||
|
@ -126,7 +126,7 @@ static BOOL HOOK_RemoveHook( HANDLE hook )
|
|||
HOOKDATA *data;
|
||||
HANDLE *prevHook;
|
||||
|
||||
dprintf_hook( stddeb, "Removing hook "NPFMT"\n", hook );
|
||||
dprintf_hook( stddeb, "Removing hook %04x\n", hook );
|
||||
|
||||
if (!(data = (HOOKDATA *)USER_HEAP_LIN_ADDR(hook))) return FALSE;
|
||||
if (data->inHookProc)
|
||||
|
@ -187,10 +187,10 @@ static DWORD HOOK_CallHook( HANDLE hook, short code,
|
|||
queue->hCurHook = hook;
|
||||
data->inHookProc = 1;
|
||||
|
||||
dprintf_hook( stddeb, "Calling hook "NPFMT": %d %04lx %08lx\n",
|
||||
dprintf_hook( stddeb, "Calling hook %04x: %d %04lx %08lx\n",
|
||||
hook, code, (DWORD)wParam, lParam );
|
||||
ret = CallHookProc( data->proc, code, wParam, lParam );
|
||||
dprintf_hook( stddeb, "Ret hook "NPFMT" = %08lx\n", hook, ret );
|
||||
dprintf_hook( stddeb, "Ret hook %04x = %08lx\n", hook, ret );
|
||||
|
||||
data->inHookProc = 0;
|
||||
queue->hCurHook = prevHook;
|
||||
|
|
|
@ -86,7 +86,7 @@ WORD SetMapMode( HDC hdc, WORD mode )
|
|||
return 1;
|
||||
}
|
||||
|
||||
dprintf_gdi(stddeb, "SetMapMode: "NPFMT" %d\n", hdc, mode );
|
||||
dprintf_gdi(stddeb, "SetMapMode: %04x %d\n", hdc, mode );
|
||||
|
||||
prevMode = dc->w.MapMode;
|
||||
switch(mode)
|
||||
|
|
174
windows/mdi.c
174
windows/mdi.c
|
@ -32,9 +32,9 @@
|
|||
#include "stddebug.h"
|
||||
#include "debug.h"
|
||||
|
||||
void MDI_UpdateFrameText(HWND, HWND, BOOL, LPCSTR);
|
||||
BOOL MDI_AugmentFrameMenu(MDICLIENTINFO*, HWND, HWND);
|
||||
BOOL MDI_RestoreFrameMenu(HWND, HWND);
|
||||
void MDI_UpdateFrameText(WND *, HWND, BOOL, LPCSTR);
|
||||
BOOL MDI_AugmentFrameMenu(MDICLIENTINFO*, WND *, HWND);
|
||||
BOOL MDI_RestoreFrameMenu(WND *, HWND);
|
||||
|
||||
void ScrollChildren(HWND , UINT , WPARAM , LPARAM );
|
||||
void CalcChildScroll(HWND, WORD);
|
||||
|
@ -48,18 +48,11 @@ static LONG MDI_ChildActivate(WND* ,HWND );
|
|||
* MDI_GetChildByID
|
||||
*/
|
||||
|
||||
static HWND MDI_GetChildByID(WND* mdiClient,int id)
|
||||
static HWND MDI_GetChildByID(WND* wndPtr,int id)
|
||||
{
|
||||
HWND hWnd = mdiClient->hwndChild;
|
||||
WND* wndPtr = WIN_FindWndPtr( hWnd );
|
||||
|
||||
while( wndPtr )
|
||||
{
|
||||
if( wndPtr->wIDmenu == id ) return hWnd;
|
||||
wndPtr = WIN_FindWndPtr(hWnd = wndPtr->hwndNext);
|
||||
}
|
||||
|
||||
return 0;
|
||||
for (wndPtr = wndPtr->child; wndPtr; wndPtr = wndPtr->next)
|
||||
if (wndPtr->wIDmenu == id) return wndPtr->hwndSelf;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
|
@ -163,37 +156,32 @@ static BOOL MDI_MenuDeleteItem(WND* clientWnd, HWND hWndChild )
|
|||
*/
|
||||
HWND MDI_GetWindow(WND *clientWnd, HWND hWnd, WORD wTo )
|
||||
{
|
||||
HWND hWndNext;
|
||||
MDICLIENTINFO *clientInfo = (MDICLIENTINFO*)clientWnd->wExtra;
|
||||
WND *wndPtr;
|
||||
MDICLIENTINFO *clientInfo = (MDICLIENTINFO*)clientWnd->wExtra;
|
||||
WND *wndPtr, *pWnd, *pWndLast;
|
||||
|
||||
if( !hWnd ) hWnd = clientInfo->hwndActiveChild;
|
||||
|
||||
if( !hWnd ) hWnd = clientInfo->hwndActiveChild;
|
||||
if( !(wndPtr = WIN_FindWndPtr(hWnd)) ) return 0;
|
||||
|
||||
if( !(wndPtr = WIN_FindWndPtr(hWnd)) ) return 0;
|
||||
|
||||
hWndNext = hWnd;
|
||||
wTo = wTo ? GW_HWNDPREV : GW_HWNDNEXT;
|
||||
|
||||
while( hWndNext )
|
||||
pWnd = wndPtr;
|
||||
pWndLast = NULL;
|
||||
for (;;)
|
||||
{
|
||||
if( clientWnd->hwndChild == hWndNext && wTo == GW_HWNDPREV )
|
||||
hWndNext = GetWindow( hWndNext, GW_HWNDLAST);
|
||||
else if( wndPtr->hwndNext == 0 && wTo == GW_HWNDNEXT )
|
||||
hWndNext = clientWnd->hwndChild;
|
||||
else
|
||||
hWndNext = GetWindow( hWndNext, wTo );
|
||||
|
||||
wndPtr = WIN_FindWndPtr( hWndNext );
|
||||
|
||||
if( (wndPtr->dwStyle & WS_VISIBLE) &&
|
||||
!(wndPtr->dwStyle & WS_DISABLED) )
|
||||
break;
|
||||
|
||||
/* check if all windows were iterated through */
|
||||
if( hWndNext == hWnd ) break;
|
||||
pWnd = pWnd->next;
|
||||
if (!pWnd) pWnd = wndPtr->parent->child;
|
||||
if (pWnd == wndPtr) /* not found */
|
||||
{
|
||||
if (!wTo || !pWndLast) return 0;
|
||||
break;
|
||||
}
|
||||
if ((pWnd->dwStyle & WS_VISIBLE) &&
|
||||
!(pWnd->dwStyle & WS_DISABLED)) /* found one */
|
||||
{
|
||||
pWndLast = pWnd;
|
||||
if (!wTo) break;
|
||||
}
|
||||
}
|
||||
|
||||
return ( hWnd == hWndNext )? 0 : hWndNext;
|
||||
return pWndLast ? pWndLast->hwndSelf : 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -205,7 +193,7 @@ HMENU MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow)
|
|||
WND *w = WIN_FindWndPtr(hwnd);
|
||||
MDICLIENTINFO *ci;
|
||||
|
||||
dprintf_mdi(stddeb, "WM_MDISETMENU: "NPFMT" %04x "NPFMT" "NPFMT"\n",
|
||||
dprintf_mdi(stddeb, "WM_MDISETMENU: %04x %04x %04x %04x\n",
|
||||
hwnd, fRefresh, hmenuFrame, hmenuWindow);
|
||||
|
||||
ci = (MDICLIENTINFO *) w->wExtra;
|
||||
|
@ -216,7 +204,7 @@ HMENU MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow)
|
|||
HMENU oldFrameMenu = GetMenu(hwndFrame);
|
||||
|
||||
if( ci->flagChildMaximized && hmenuFrame && hmenuFrame!=oldFrameMenu )
|
||||
MDI_RestoreFrameMenu(w->hwndParent, ci->flagChildMaximized );
|
||||
MDI_RestoreFrameMenu(w->parent, ci->flagChildMaximized );
|
||||
|
||||
if( hmenuWindow && hmenuWindow!=ci->hWindowMenu )
|
||||
{
|
||||
|
@ -258,8 +246,7 @@ HMENU MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow)
|
|||
{
|
||||
SetMenu(hwndFrame, hmenuFrame);
|
||||
if( ci->flagChildMaximized )
|
||||
MDI_AugmentFrameMenu(ci,
|
||||
w->hwndParent, ci->flagChildMaximized );
|
||||
MDI_AugmentFrameMenu(ci, w->parent, ci->flagChildMaximized );
|
||||
return oldFrameMenu;
|
||||
}
|
||||
|
||||
|
@ -321,7 +308,7 @@ HWND MDICreateChild(WND *w, MDICLIENTINFO *ci, HWND parent, LPARAM lParam )
|
|||
if (hwnd)
|
||||
{
|
||||
MDI_MenuModifyItem(w ,hwnd);
|
||||
dprintf_mdi(stddeb, "MDICreateChild: created child - "NPFMT"\n",hwnd);
|
||||
dprintf_mdi(stddeb, "MDICreateChild: created child - %04x\n",hwnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -341,7 +328,7 @@ void MDI_ChildGetMinMaxInfo(WND* clientWnd, HWND hwnd, MINMAXINFO* lpMinMax )
|
|||
WND* childWnd = WIN_FindWndPtr(hwnd);
|
||||
RECT rect = clientWnd->rectClient;
|
||||
|
||||
MapWindowPoints(clientWnd->hwndParent,
|
||||
MapWindowPoints(clientWnd->parent->hwndSelf,
|
||||
((MDICLIENTINFO*)clientWnd->wExtra)->self, (LPPOINT)&rect, 2);
|
||||
AdjustWindowRectEx(&rect, childWnd->dwStyle, 0, childWnd->dwExStyle);
|
||||
|
||||
|
@ -372,7 +359,7 @@ void MDI_SwitchActiveChild(HWND clientHwnd, HWND childHwnd, BOOL wTo )
|
|||
|
||||
ci = (MDICLIENTINFO *) w->wExtra;
|
||||
|
||||
dprintf_mdi(stddeb, "MDI_SwitchActiveChild: from "NPFMT", to "NPFMT"\n",childHwnd,hwndTo);
|
||||
dprintf_mdi(stddeb, "MDI_SwitchActiveChild: from %04x, to %04x\n",childHwnd,hwndTo);
|
||||
|
||||
if ( !hwndTo ) return;
|
||||
|
||||
|
@ -421,9 +408,9 @@ HWND MDIDestroyChild(WND *w_parent, MDICLIENTINFO *ci, HWND parent,
|
|||
ShowWindow( child, SW_HIDE);
|
||||
if( child == ci->flagChildMaximized )
|
||||
{
|
||||
MDI_RestoreFrameMenu(w_parent->hwndParent, child);
|
||||
MDI_RestoreFrameMenu(w_parent->parent, child);
|
||||
ci->flagChildMaximized = 0;
|
||||
MDI_UpdateFrameText(w_parent->hwndParent,parent,TRUE,NULL);
|
||||
MDI_UpdateFrameText(w_parent->parent,parent,TRUE,NULL);
|
||||
}
|
||||
|
||||
MDI_ChildActivate(w_parent,0);
|
||||
|
@ -433,7 +420,7 @@ HWND MDIDestroyChild(WND *w_parent, MDICLIENTINFO *ci, HWND parent,
|
|||
|
||||
ci->nActiveChildren--;
|
||||
|
||||
dprintf_mdi(stddeb,"MDIDestroyChild: child destroyed - "NPFMT"\n",child);
|
||||
dprintf_mdi(stddeb,"MDIDestroyChild: child destroyed - %04x\n",child);
|
||||
|
||||
if (flagDestroy)
|
||||
{
|
||||
|
@ -465,9 +452,9 @@ LONG MDI_ChildActivate(WND *clientPtr, HWND hWndChild)
|
|||
if( wndPtr )
|
||||
if( wndPtr->dwStyle & WS_DISABLED ) return 0L;
|
||||
|
||||
dprintf_mdi(stddeb,"MDI_ChildActivate: "NPFMT"\n", hWndChild);
|
||||
dprintf_mdi(stddeb,"MDI_ChildActivate: %04x\n", hWndChild);
|
||||
|
||||
if( GetActiveWindow() == clientPtr->hwndParent )
|
||||
if( GetActiveWindow() == clientPtr->parent->hwndSelf )
|
||||
isActiveFrameWnd = TRUE;
|
||||
|
||||
/* deactivate prev. active child */
|
||||
|
@ -550,14 +537,14 @@ MDIWCL* MDI_BuildWCL(WND* clientWnd, int* iTotal)
|
|||
|
||||
if (!(listTop = (MDIWCL*)malloc( sizeof(MDIWCL) ))) return NULL;
|
||||
|
||||
listTop->hChild = clientWnd->hwndChild;
|
||||
listTop->hChild = clientWnd->child ? clientWnd->child->hwndSelf : 0;
|
||||
listTop->prev = NULL;
|
||||
*iTotal = 1;
|
||||
|
||||
/* build linked list from top child to bottom */
|
||||
|
||||
childWnd = WIN_FindWndPtr( listTop->hChild );
|
||||
while( childWnd && childWnd->hwndNext )
|
||||
while( childWnd && childWnd->next )
|
||||
{
|
||||
listNext = (MDIWCL*)xmalloc(sizeof(MDIWCL));
|
||||
|
||||
|
@ -569,12 +556,12 @@ MDIWCL* MDI_BuildWCL(WND* clientWnd, int* iTotal)
|
|||
(*iTotal)--;
|
||||
}
|
||||
|
||||
listNext->hChild = childWnd->hwndNext;
|
||||
listNext->hChild = childWnd->next->hwndSelf;
|
||||
listNext->prev = listTop;
|
||||
listTop = listNext;
|
||||
(*iTotal)++;
|
||||
|
||||
childWnd = WIN_FindWndPtr( childWnd->hwndNext );
|
||||
childWnd = childWnd->next;
|
||||
}
|
||||
|
||||
if( (childWnd->dwStyle & WS_DISABLED) ||
|
||||
|
@ -641,10 +628,8 @@ LONG MDICascade(HWND parent, MDICLIENTINFO *ci)
|
|||
ysize = rect.bottom - 8 * spacing;
|
||||
xsize = rect.right - 8 * spacing;
|
||||
|
||||
dprintf_mdi(stddeb,
|
||||
"MDICascade: Client wnd at (%ld,%ld) - (%ld,%ld), spacing %d\n",
|
||||
(LONG)rect.left, (LONG)rect.top, (LONG)rect.right, (LONG)rect.bottom,
|
||||
spacing);
|
||||
dprintf_mdi(stddeb, "MDICascade: Client wnd at (%d,%d) - (%d,%d), spacing %d\n",
|
||||
rect.left, rect.top, rect.right, rect.bottom, spacing);
|
||||
|
||||
clientWnd = WIN_FindWndPtr( parent );
|
||||
|
||||
|
@ -658,7 +643,7 @@ LONG MDICascade(HWND parent, MDICLIENTINFO *ci)
|
|||
/* walk list and move windows */
|
||||
while ( listTop )
|
||||
{
|
||||
dprintf_mdi(stddeb, "MDICascade: move "NPFMT" to (%d,%d) size [%d,%d]\n",
|
||||
dprintf_mdi(stddeb, "MDICascade: move %04x to (%d,%d) size [%d,%d]\n",
|
||||
listTop->hChild, x, y, xsize, ysize);
|
||||
|
||||
if( listTop->hChild )
|
||||
|
@ -786,19 +771,18 @@ LONG MDITile(HWND parent, MDICLIENTINFO *ci,WORD wParam)
|
|||
/**********************************************************************
|
||||
* MDI_AugmentFrameMenu
|
||||
*/
|
||||
BOOL MDI_AugmentFrameMenu(MDICLIENTINFO* ci, HWND hFrame, HWND hChild)
|
||||
BOOL MDI_AugmentFrameMenu(MDICLIENTINFO* ci, WND *frame, HWND hChild)
|
||||
{
|
||||
WND* frame = WIN_FindWndPtr(hFrame);
|
||||
WND* child = WIN_FindWndPtr(hChild);
|
||||
HMENU hSysPopup = 0;
|
||||
|
||||
dprintf_mdi(stddeb,"MDI_AugmentFrameMenu: frame "NPFMT",child "NPFMT"\n",hFrame,hChild);
|
||||
dprintf_mdi(stddeb,"MDI_AugmentFrameMenu: frame %p,child %04x\n",frame,hChild);
|
||||
|
||||
if( !frame->wIDmenu || !child->hSysMenu ) return 0;
|
||||
|
||||
hSysPopup = GetSystemMenu(hChild,FALSE);
|
||||
|
||||
dprintf_mdi(stddeb,"got popup "NPFMT"\n in sysmenu "NPFMT"",hSysPopup,child->hSysMenu);
|
||||
dprintf_mdi(stddeb,"got popup %04x\n in sysmenu %04x",hSysPopup,child->hSysMenu);
|
||||
|
||||
if( !InsertMenu(frame->wIDmenu,0,MF_BYPOSITION | MF_BITMAP | MF_POPUP,
|
||||
hSysPopup, (SEGPTR)(DWORD)ci->obmClose) )
|
||||
|
@ -818,7 +802,7 @@ BOOL MDI_AugmentFrameMenu(MDICLIENTINFO* ci, HWND hFrame, HWND hChild)
|
|||
child->dwStyle &= ~WS_SYSMENU;
|
||||
|
||||
/* redraw frame */
|
||||
SetWindowPos(hFrame, 0,0,0,0,0, SWP_FRAMECHANGED | SWP_NOSIZE |
|
||||
SetWindowPos(frame->hwndSelf, 0,0,0,0,0, SWP_FRAMECHANGED | SWP_NOSIZE |
|
||||
SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER );
|
||||
|
||||
return 1;
|
||||
|
@ -827,13 +811,12 @@ BOOL MDI_AugmentFrameMenu(MDICLIENTINFO* ci, HWND hFrame, HWND hChild)
|
|||
/**********************************************************************
|
||||
* MDI_RestoreFrameMenu
|
||||
*/
|
||||
BOOL MDI_RestoreFrameMenu(HWND hFrame, HWND hChild)
|
||||
BOOL MDI_RestoreFrameMenu( WND *frameWnd, HWND hChild)
|
||||
{
|
||||
WND* frameWnd = WIN_FindWndPtr(hFrame);
|
||||
WND* child = WIN_FindWndPtr(hChild);
|
||||
INT nItems = GetMenuItemCount(frameWnd->wIDmenu) - 1;
|
||||
|
||||
dprintf_mdi(stddeb,"MDI_RestoreFrameMenu: for child "NPFMT"\n",hChild);
|
||||
dprintf_mdi(stddeb,"MDI_RestoreFrameMenu: for child %04x\n",hChild);
|
||||
|
||||
if( GetMenuItemID(frameWnd->wIDmenu,nItems) != SC_RESTORE )
|
||||
return 0;
|
||||
|
@ -856,12 +839,11 @@ BOOL MDI_RestoreFrameMenu(HWND hFrame, HWND hChild)
|
|||
*
|
||||
* Note: lpTitle can be NULL
|
||||
*/
|
||||
void MDI_UpdateFrameText(HWND hFrame, HWND hClient, BOOL repaint, LPCSTR lpTitle)
|
||||
void MDI_UpdateFrameText(WND *frameWnd, HWND hClient, BOOL repaint, LPCSTR lpTitle)
|
||||
{
|
||||
char lpBuffer[MDI_MAXTITLELENGTH+1];
|
||||
LPSTR lpText = NULL;
|
||||
WND* clientWnd = WIN_FindWndPtr(hClient);
|
||||
WND* frameWnd = WIN_FindWndPtr(hFrame);
|
||||
|
||||
MDICLIENTINFO *ci = (MDICLIENTINFO *) clientWnd->wExtra;
|
||||
|
||||
|
@ -934,8 +916,8 @@ void MDI_UpdateFrameText(HWND hFrame, HWND hClient, BOOL repaint, LPCSTR lpTitle
|
|||
XStoreName( display, frameWnd->window, lpBuffer );
|
||||
|
||||
if( repaint == MDI_REPAINTFRAME)
|
||||
SetWindowPos(hFrame, 0,0,0,0,0, SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOMOVE |
|
||||
SWP_NOACTIVATE | SWP_NOZORDER );
|
||||
SetWindowPos(frameWnd->hwndSelf, 0,0,0,0,0, SWP_FRAMECHANGED |
|
||||
SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER );
|
||||
}
|
||||
|
||||
|
||||
|
@ -954,7 +936,7 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
MDICLIENTINFO *ci;
|
||||
RECT rect;
|
||||
WND *w = WIN_FindWndPtr(hwnd);
|
||||
WND *frameWnd = WIN_FindWndPtr( w->hwndParent );
|
||||
WND *frameWnd = w->parent;
|
||||
|
||||
ci = (MDICLIENTINFO *) w->wExtra;
|
||||
|
||||
|
@ -976,21 +958,20 @@ LRESULT MDIClientWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
w->dwStyle |= WS_CLIPCHILDREN;
|
||||
frameWnd->hText = 0; /* will be restored in UpdateFrameText */
|
||||
|
||||
MDI_UpdateFrameText( w->hwndParent, hwnd, MDI_NOFRAMEREPAINT, NULL);
|
||||
MDI_UpdateFrameText( frameWnd, hwnd, MDI_NOFRAMEREPAINT, NULL);
|
||||
|
||||
AppendMenu(ccs->hWindowMenu,MF_SEPARATOR,0,(SEGPTR)0);
|
||||
|
||||
GetClientRect(w->hwndParent, &rect);
|
||||
GetClientRect(frameWnd->hwndSelf, &rect);
|
||||
NC_HandleNCCalcSize(hwnd, (NCCALCSIZE_PARAMS*) &rect);
|
||||
w->rectClient = rect;
|
||||
|
||||
dprintf_mdi(stddeb,"MDI: Client created - hwnd = "NPFMT", idFirst = %u\n",hwnd,ci->idFirstChild);
|
||||
dprintf_mdi(stddeb,"MDI: Client created - hwnd = %04x, idFirst = %u\n",hwnd,ci->idFirstChild);
|
||||
|
||||
return 0;
|
||||
|
||||
case WM_DESTROY:
|
||||
if( ci->flagChildMaximized )
|
||||
MDI_RestoreFrameMenu(hwnd, w->hwndParent);
|
||||
if( ci->flagChildMaximized ) MDI_RestoreFrameMenu(w, frameWnd->hwndSelf);
|
||||
|
||||
if(ci->obmClose) DeleteObject(ci->obmClose);
|
||||
if(ci->obmRestore) DeleteObject(ci->obmRestore);
|
||||
|
@ -1164,7 +1145,7 @@ LRESULT DefFrameProc(HWND hwnd, HWND hwndMDIClient, UINT message,
|
|||
break;
|
||||
|
||||
case WM_SETTEXT:
|
||||
MDI_UpdateFrameText(hwnd, hwndMDIClient,
|
||||
MDI_UpdateFrameText(WIN_FindWndPtr(hwnd), hwndMDIClient,
|
||||
MDI_REPAINTFRAME,
|
||||
(LPCSTR)PTR_SEG_TO_LIN(lParam));
|
||||
return 0;
|
||||
|
@ -1205,7 +1186,7 @@ LRESULT DefMDIChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
DefWindowProc(hwnd, message, wParam, lParam);
|
||||
MDI_MenuModifyItem(clientWnd,hwnd);
|
||||
if( ci->flagChildMaximized == hwnd )
|
||||
MDI_UpdateFrameText( clientWnd->hwndParent, ci->self,
|
||||
MDI_UpdateFrameText( clientWnd->parent, ci->self,
|
||||
MDI_REPAINTFRAME, NULL );
|
||||
return 0;
|
||||
|
||||
|
@ -1223,7 +1204,7 @@ LRESULT DefMDIChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
return 0;
|
||||
|
||||
case WM_NCPAINT:
|
||||
dprintf_mdi(stddeb,"DefMDIChildProc: WM_NCPAINT for "NPFMT", active "NPFMT"\n",
|
||||
dprintf_mdi(stddeb,"DefMDIChildProc: WM_NCPAINT for %04x, active %04x\n",
|
||||
hwnd, ci->hwndActiveChild );
|
||||
break;
|
||||
|
||||
|
@ -1235,7 +1216,8 @@ LRESULT DefMDIChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
break;
|
||||
case SC_MAXIMIZE:
|
||||
if( ci->flagChildMaximized == hwnd)
|
||||
return SendMessage( clientWnd->hwndParent, message, wParam, lParam);
|
||||
return SendMessage( clientWnd->parent->hwndSelf,
|
||||
message, wParam, lParam);
|
||||
break;
|
||||
case SC_NEXTWINDOW:
|
||||
SendMessage( ci->self, WM_MDINEXT, 0, 0);
|
||||
|
@ -1265,8 +1247,8 @@ LRESULT DefMDIChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
ci->flagChildMaximized = 0;
|
||||
|
||||
MDI_RestoreFrameMenu( clientWnd->hwndParent, hwnd);
|
||||
MDI_UpdateFrameText( clientWnd->hwndParent, ci->self,
|
||||
MDI_RestoreFrameMenu( clientWnd->parent, hwnd);
|
||||
MDI_UpdateFrameText( clientWnd->parent, ci->self,
|
||||
MDI_REPAINTFRAME, NULL );
|
||||
}
|
||||
|
||||
|
@ -1280,7 +1262,7 @@ LRESULT DefMDIChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
SendMessage( hMaxChild, WM_SETREDRAW, FALSE, 0L );
|
||||
|
||||
MDI_RestoreFrameMenu( clientWnd->hwndParent, hMaxChild);
|
||||
MDI_RestoreFrameMenu( clientWnd->parent, hMaxChild);
|
||||
ShowWindow( hMaxChild, SW_SHOWNOACTIVATE);
|
||||
|
||||
SendMessage( hMaxChild, WM_SETREDRAW, TRUE, 0L );
|
||||
|
@ -1288,8 +1270,8 @@ LRESULT DefMDIChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
ci->flagChildMaximized = hwnd; /* !!! */
|
||||
|
||||
MDI_AugmentFrameMenu( ci, clientWnd->hwndParent, hwnd);
|
||||
MDI_UpdateFrameText( clientWnd->hwndParent, ci->self,
|
||||
MDI_AugmentFrameMenu( ci, clientWnd->parent, hwnd);
|
||||
MDI_UpdateFrameText( clientWnd->parent, ci->self,
|
||||
MDI_REPAINTFRAME, NULL );
|
||||
}
|
||||
|
||||
|
@ -1352,7 +1334,7 @@ BOOL TranslateMDISysAccel(HWND hwndClient, LPMSG msg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
dprintf_mdi(stddeb,"TranslateMDISysAccel: wParam = "NPFMT"\n", wParam);
|
||||
dprintf_mdi(stddeb,"TranslateMDISysAccel: wParam = %04x\n", wParam);
|
||||
|
||||
SendMessage(ci->hwndActiveChild,WM_SYSCOMMAND, wParam, (LPARAM)msg->wParam);
|
||||
return 1;
|
||||
|
@ -1365,17 +1347,13 @@ BOOL TranslateMDISysAccel(HWND hwndClient, LPMSG msg)
|
|||
void CalcChildScroll( HWND hwnd, WORD scroll )
|
||||
{
|
||||
RECT childRect, clientRect;
|
||||
HWND hwndChild;
|
||||
WND *pWnd;
|
||||
|
||||
if (!(pWnd = WIN_FindWndPtr( hwnd ))) return;
|
||||
GetClientRect( hwnd, &clientRect );
|
||||
SetRectEmpty( &childRect );
|
||||
hwndChild = GetWindow( hwnd, GW_CHILD );
|
||||
while (hwndChild)
|
||||
{
|
||||
WND *wndPtr = WIN_FindWndPtr( hwndChild );
|
||||
UnionRect( &childRect, &wndPtr->rectWindow, &childRect );
|
||||
hwndChild = wndPtr->hwndNext;
|
||||
}
|
||||
for (pWnd = pWnd->child; pWnd; pWnd = pWnd->next)
|
||||
UnionRect( &childRect, &pWnd->rectWindow, &childRect );
|
||||
UnionRect( &childRect, &clientRect, &childRect );
|
||||
|
||||
if ((scroll == SB_HORZ) || (scroll == SB_BOTH))
|
||||
|
|
|
@ -50,6 +50,7 @@ static WORD doubleClickSpeed = 452;
|
|||
*/
|
||||
static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove )
|
||||
{
|
||||
WND *pWnd;
|
||||
BOOL eatMsg = FALSE;
|
||||
INT hittest;
|
||||
static DWORD lastClickTime = 0;
|
||||
|
@ -75,9 +76,10 @@ static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove )
|
|||
msg->message, (LPARAM)MAKE_SEGPTR(&hook));
|
||||
}
|
||||
|
||||
if ((hittest = WINPOS_WindowFromPoint( msg->pt, &msg->hwnd )) != HTERROR)
|
||||
hittest = WINPOS_WindowFromPoint( msg->pt, &pWnd );
|
||||
msg->hwnd = pWnd->hwndSelf;
|
||||
if (hittest != HTERROR)
|
||||
{
|
||||
|
||||
/* Send the WM_PARENTNOTIFY message */
|
||||
|
||||
if (mouseClick) WIN_SendParentNotify( msg->hwnd, msg->message, 0,
|
||||
|
@ -126,9 +128,7 @@ static BOOL MSG_TranslateMouseMsg( MSG *msg, BOOL remove )
|
|||
if (dbl_click && (hittest == HTCLIENT))
|
||||
{
|
||||
/* Check whether window wants the double click message. */
|
||||
WND * wndPtr = WIN_FindWndPtr( msg->hwnd );
|
||||
if (!wndPtr || !(WIN_CLASS_STYLE(wndPtr) & CS_DBLCLKS))
|
||||
dbl_click = FALSE;
|
||||
dbl_click = (WIN_CLASS_STYLE(pWnd) & CS_DBLCLKS) != 0;
|
||||
}
|
||||
|
||||
if (dbl_click) switch(msg->message)
|
||||
|
@ -576,20 +576,20 @@ BOOL PostMessage( HWND hwnd, WORD message, WORD wParam, LONG lParam )
|
|||
return TRUE;
|
||||
#endif /* CONFIG_IPC */
|
||||
|
||||
if (hwnd == HWND_BROADCAST) {
|
||||
dprintf_msg(stddeb,"PostMessage // HWND_BROADCAST !\n");
|
||||
hwnd = GetTopWindow(GetDesktopWindow());
|
||||
while (hwnd) {
|
||||
if (!(wndPtr = WIN_FindWndPtr(hwnd))) break;
|
||||
if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION) {
|
||||
dprintf_msg(stddeb,"BROADCAST Message to hWnd="NPFMT" m=%04X w=%04X l=%08lX !\n",
|
||||
hwnd, message, wParam, lParam);
|
||||
PostMessage(hwnd, message, wParam, lParam);
|
||||
}
|
||||
hwnd = wndPtr->hwndNext;
|
||||
}
|
||||
dprintf_msg(stddeb,"PostMessage // End of HWND_BROADCAST !\n");
|
||||
return TRUE;
|
||||
if (hwnd == HWND_BROADCAST)
|
||||
{
|
||||
dprintf_msg(stddeb,"PostMessage // HWND_BROADCAST !\n");
|
||||
for (wndPtr = WIN_GetDesktop()->child; wndPtr; wndPtr = wndPtr->next)
|
||||
{
|
||||
if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION)
|
||||
{
|
||||
dprintf_msg(stddeb,"BROADCAST Message to hWnd=%04x m=%04X w=%04X l=%08lX !\n",
|
||||
wndPtr->hwndSelf, message, wParam, lParam);
|
||||
PostMessage( wndPtr->hwndSelf, message, wParam, lParam );
|
||||
}
|
||||
}
|
||||
dprintf_msg(stddeb,"PostMessage // End of HWND_BROADCAST !\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
wndPtr = WIN_FindWndPtr( hwnd );
|
||||
|
@ -641,17 +641,14 @@ LRESULT SendMessage( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
|||
if (hwnd == HWND_BROADCAST)
|
||||
{
|
||||
dprintf_msg(stddeb,"SendMessage // HWND_BROADCAST !\n");
|
||||
hwnd = GetTopWindow(GetDesktopWindow());
|
||||
while (hwnd)
|
||||
{
|
||||
if (!(wndPtr = WIN_FindWndPtr(hwnd))) break;
|
||||
for (wndPtr = WIN_GetDesktop()->child; wndPtr; wndPtr = wndPtr->next)
|
||||
{
|
||||
if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION)
|
||||
{
|
||||
dprintf_msg(stddeb,"BROADCAST Message to hWnd="NPFMT" m=%04X w=%04lX l=%08lX !\n",
|
||||
hwnd, msg, (DWORD)wParam, lParam);
|
||||
ret |= SendMessage( hwnd, msg, wParam, lParam );
|
||||
dprintf_msg(stddeb,"BROADCAST Message to hWnd=%04x m=%04X w=%04lX l=%08lX !\n",
|
||||
wndPtr->hwndSelf, msg, (DWORD)wParam, lParam);
|
||||
ret |= SendMessage( wndPtr->hwndSelf, msg, wParam, lParam );
|
||||
}
|
||||
hwnd = wndPtr->hwndNext;
|
||||
}
|
||||
dprintf_msg(stddeb,"SendMessage // End of HWND_BROADCAST !\n");
|
||||
return TRUE;
|
||||
|
@ -732,7 +729,7 @@ LONG DispatchMessage( const MSG* msg )
|
|||
{
|
||||
if (msg->lParam)
|
||||
{
|
||||
#ifndef WINELIB32
|
||||
#ifndef WINELIB
|
||||
HINSTANCE ds = msg->hwnd ? WIN_GetWindowInstance( msg->hwnd )
|
||||
: (HINSTANCE)CURRENT_DS;
|
||||
#endif
|
||||
|
@ -753,7 +750,7 @@ LONG DispatchMessage( const MSG* msg )
|
|||
if (painting && (wndPtr = WIN_FindWndPtr( msg->hwnd )) &&
|
||||
(wndPtr->flags & WIN_NEEDS_BEGINPAINT) && wndPtr->hrgnUpdate)
|
||||
{
|
||||
fprintf(stderr, "BeginPaint not called on WM_PAINT for hwnd "NPFMT"!\n",
|
||||
fprintf(stderr, "BeginPaint not called on WM_PAINT for hwnd %04x!\n",
|
||||
msg->hwnd);
|
||||
wndPtr->flags &= ~WIN_NEEDS_BEGINPAINT;
|
||||
/* Validate the update region to avoid infinite WM_PAINT loop */
|
||||
|
@ -768,7 +765,7 @@ LONG DispatchMessage( const MSG* msg )
|
|||
*/
|
||||
WORD RegisterWindowMessage( SEGPTR str )
|
||||
{
|
||||
dprintf_msg(stddeb, "RegisterWindowMessage: '"SPFMT"'\n", str );
|
||||
dprintf_msg(stddeb, "RegisterWindowMessage: %08lx\n", (DWORD)str );
|
||||
return GlobalAddAtom( str );
|
||||
}
|
||||
|
||||
|
|
|
@ -110,9 +110,9 @@ BOOL AdjustWindowRectEx( LPRECT rect, DWORD style, BOOL menu, DWORD exStyle )
|
|||
style |= WS_CAPTION;
|
||||
if (exStyle & WS_EX_DLGMODALFRAME) style &= ~WS_THICKFRAME;
|
||||
|
||||
dprintf_nonclient(stddeb, "AdjustWindowRectEx: (%ld,%ld)-(%ld,%ld) %08lx %d %08lx\n",
|
||||
(LONG)rect->left, (LONG)rect->top, (LONG)rect->right, (LONG)rect->bottom,
|
||||
style, menu, exStyle );
|
||||
dprintf_nonclient(stddeb, "AdjustWindowRectEx: (%d,%d)-(%d,%d) %08lx %d %08lx\n",
|
||||
rect->left, rect->top, rect->right, rect->bottom,
|
||||
style, menu, exStyle );
|
||||
|
||||
NC_AdjustRect( rect, style, menu, exStyle );
|
||||
return TRUE;
|
||||
|
@ -268,8 +268,8 @@ LONG NC_HandleNCHitTest( HWND hwnd, POINT pt )
|
|||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
if (!wndPtr) return HTERROR;
|
||||
|
||||
dprintf_nonclient(stddeb, "NC_HandleNCHitTest: hwnd="NPFMT" pt=%ld,%ld\n",
|
||||
hwnd, (LONG)pt.x, (LONG)pt.y );
|
||||
dprintf_nonclient(stddeb, "NC_HandleNCHitTest: hwnd=%04x pt=%d,%d\n",
|
||||
hwnd, pt.x, pt.y );
|
||||
|
||||
GetWindowRect( hwnd, &rect );
|
||||
if (!PtInRect( &rect, pt )) return HTNOWHERE;
|
||||
|
@ -627,7 +627,7 @@ void NC_DoNCPaint( HWND hwnd, BOOL active, BOOL suppress_menupaint )
|
|||
|
||||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
|
||||
dprintf_nonclient(stddeb, "NC_DoNCPaint: "NPFMT" %d\n", hwnd, active );
|
||||
dprintf_nonclient(stddeb, "NC_DoNCPaint: %04x %d\n", hwnd, active );
|
||||
if (!wndPtr || !(wndPtr->dwStyle & WS_VISIBLE)) return; /* Nothing to do */
|
||||
|
||||
if (!(hdc = GetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW ))) return;
|
||||
|
@ -826,7 +826,7 @@ static void NC_TrackSysMenu( HWND hwnd, HDC hdc, POINT pt )
|
|||
NC_GetInsideRect( hwnd, &rect );
|
||||
OffsetRect( &rect, wndPtr->rectWindow.left, wndPtr->rectWindow.top );
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
ClientToScreen( wndPtr->hwndParent, (POINT *)&rect );
|
||||
ClientToScreen( wndPtr->parent->hwndSelf, (POINT *)&rect );
|
||||
rect.right = rect.left + SYSMETRICS_CXSIZE;
|
||||
rect.bottom = rect.top + SYSMETRICS_CYSIZE;
|
||||
if (!iconic) NC_DrawSysButton( hwnd, hdc, TRUE );
|
||||
|
@ -864,7 +864,7 @@ static LONG NC_StartSizeMove( HWND hwnd, WPARAM wParam, POINT *capturePoint )
|
|||
pt.x = wndPtr->rectWindow.left + (rect.right - rect.left) / 2;
|
||||
pt.y = wndPtr->rectWindow.top + rect.top + SYSMETRICS_CYSIZE/2;
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
ClientToScreen( wndPtr->hwndParent, &pt );
|
||||
ClientToScreen( wndPtr->parent->hwndSelf, &pt );
|
||||
hittest = HTCAPTION;
|
||||
}
|
||||
else /* SC_SIZE */
|
||||
|
@ -969,7 +969,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT pt )
|
|||
NC_GetMinMaxInfo( hwnd, NULL, NULL, &minTrack, &maxTrack );
|
||||
sizingRect = wndPtr->rectWindow;
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
GetClientRect( wndPtr->hwndParent, &mouseRect );
|
||||
GetClientRect( wndPtr->parent->hwndSelf, &mouseRect );
|
||||
else SetRect( &mouseRect, 0, 0, SYSMETRICS_CXSCREEN, SYSMETRICS_CYSCREEN );
|
||||
if (ON_LEFT_BORDER(hittest))
|
||||
{
|
||||
|
@ -998,7 +998,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT pt )
|
|||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
{
|
||||
/* Retrieve a default cache DC (without using the window style) */
|
||||
hdc = GetDCEx( wndPtr->hwndParent, 0, DCX_CACHE );
|
||||
hdc = GetDCEx( wndPtr->parent->hwndSelf, 0, DCX_CACHE );
|
||||
}
|
||||
else
|
||||
{ /* Grab the server only when moving top-level windows without desktop */
|
||||
|
@ -1023,7 +1023,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT pt )
|
|||
|
||||
pt = msg.pt;
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
ScreenToClient( wndPtr->hwndParent, &pt );
|
||||
ScreenToClient( wndPtr->parent->hwndSelf, &pt );
|
||||
|
||||
|
||||
if (msg.message == WM_KEYDOWN) switch(msg.wParam)
|
||||
|
@ -1066,7 +1066,7 @@ static void NC_DoSizeMove( HWND hwnd, WORD wParam, POINT pt )
|
|||
NC_DrawMovingFrame( hdc, &sizingRect, thickframe );
|
||||
ReleaseCapture();
|
||||
|
||||
if (wndPtr->dwStyle & WS_CHILD) ReleaseDC( wndPtr->hwndParent, hdc );
|
||||
if (wndPtr->dwStyle & WS_CHILD) ReleaseDC( wndPtr->parent->hwndSelf, hdc );
|
||||
else
|
||||
{
|
||||
ReleaseDC( 0, hdc );
|
||||
|
@ -1294,10 +1294,11 @@ LONG NC_HandleSysCommand( HWND hwnd, WPARAM wParam, POINT pt )
|
|||
{
|
||||
WND *wndPtr = WIN_FindWndPtr( hwnd );
|
||||
|
||||
dprintf_nonclient(stddeb, "Handling WM_SYSCOMMAND %lx %ld,%ld\n",
|
||||
(DWORD)wParam, (LONG)pt.x, (LONG)pt.y );
|
||||
dprintf_nonclient(stddeb, "Handling WM_SYSCOMMAND %x %d,%d\n",
|
||||
wParam, pt.x, pt.y );
|
||||
|
||||
if (wndPtr->dwStyle & WS_CHILD) ScreenToClient( wndPtr->hwndParent, &pt );
|
||||
if (wndPtr->dwStyle & WS_CHILD)
|
||||
ScreenToClient( wndPtr->parent->hwndSelf, &pt );
|
||||
|
||||
switch (wParam & 0xfff0)
|
||||
{
|
||||
|
|
|
@ -49,7 +49,7 @@ HDC BeginPaint( HWND hwnd, LPPAINTSTRUCT lps )
|
|||
DeleteObject( hrgnUpdate );
|
||||
if (!lps->hdc)
|
||||
{
|
||||
fprintf( stderr, "GetDCEx() failed in BeginPaint(), hwnd="NPFMT"\n", hwnd );
|
||||
fprintf(stderr, "GetDCEx() failed in BeginPaint(), hwnd=%04x\n", hwnd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -144,13 +144,13 @@ BOOL RedrawWindow( HWND hwnd, LPRECT rectUpdate, HRGN hrgnUpdate, UINT flags )
|
|||
|
||||
if (rectUpdate)
|
||||
{
|
||||
dprintf_win( stddeb, "RedrawWindow: "NPFMT" %ld,%ld-%ld,%ld "NPFMT" flags=%04x\n",
|
||||
hwnd, (LONG)rectUpdate->left, (LONG)rectUpdate->top,
|
||||
(LONG)rectUpdate->right, (LONG)rectUpdate->bottom, hrgnUpdate, flags);
|
||||
dprintf_win(stddeb, "RedrawWindow: %04x %d,%d-%d,%d %04x flags=%04x\n",
|
||||
hwnd, rectUpdate->left, rectUpdate->top,
|
||||
rectUpdate->right, rectUpdate->bottom, hrgnUpdate, flags );
|
||||
}
|
||||
else
|
||||
{
|
||||
dprintf_win( stddeb, "RedrawWindow: "NPFMT" NULL "NPFMT" flags=%04x\n",
|
||||
dprintf_win( stddeb, "RedrawWindow: %04x NULL %04x flags=%04x\n",
|
||||
hwnd, hrgnUpdate, flags);
|
||||
}
|
||||
GetClientRect( hwnd, &rectClient );
|
||||
|
@ -265,30 +265,28 @@ BOOL RedrawWindow( HWND hwnd, LPRECT rectUpdate, HRGN hrgnUpdate, UINT flags )
|
|||
{
|
||||
HRGN hrgn = CreateRectRgn( 0, 0, 0, 0 );
|
||||
if (!hrgn) return TRUE;
|
||||
for (hwnd = wndPtr->hwndChild; (hwnd); hwnd = wndPtr->hwndNext)
|
||||
for (wndPtr = wndPtr->child; wndPtr; wndPtr = wndPtr->next)
|
||||
{
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) break;
|
||||
CombineRgn( hrgn, hrgnUpdate, 0, RGN_COPY );
|
||||
OffsetRgn( hrgn, -wndPtr->rectClient.left,
|
||||
-wndPtr->rectClient.top );
|
||||
RedrawWindow( hwnd, NULL, hrgn, flags );
|
||||
RedrawWindow( wndPtr->hwndSelf, NULL, hrgn, flags );
|
||||
}
|
||||
DeleteObject( hrgn );
|
||||
}
|
||||
else
|
||||
{
|
||||
RECT rect;
|
||||
for (hwnd = wndPtr->hwndChild; (hwnd); hwnd = wndPtr->hwndNext)
|
||||
for (wndPtr = wndPtr->child; wndPtr; wndPtr = wndPtr->next)
|
||||
{
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) break;
|
||||
if (rectUpdate)
|
||||
{
|
||||
rect = *rectUpdate;
|
||||
OffsetRect( &rect, -wndPtr->rectClient.left,
|
||||
-wndPtr->rectClient.top );
|
||||
RedrawWindow( hwnd, &rect, 0, flags );
|
||||
RedrawWindow( wndPtr->hwndSelf, &rect, 0, flags );
|
||||
}
|
||||
else RedrawWindow( hwnd, NULL, 0, flags );
|
||||
else RedrawWindow( wndPtr->hwndSelf, NULL, 0, flags );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,8 @@ BOOL SetProp( HWND hwnd, SEGPTR str, HANDLE hData )
|
|||
PROPERTY *prop;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "SetProp: "NPFMT" "SPFMT" "NPFMT"\n", hwnd, str, hData );
|
||||
dprintf_prop( stddeb, "SetProp: %04x %08lx %04x\n",
|
||||
hwnd, (DWORD)str, hData );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return FALSE;
|
||||
hProp = USER_HEAP_ALLOC( sizeof(PROPERTY) +
|
||||
(HIWORD(str) ? strlen(PTR_SEG_TO_LIN(str)) : 0 ));
|
||||
|
@ -62,7 +63,7 @@ HANDLE GetProp( HWND hwnd, SEGPTR str )
|
|||
HANDLE hProp;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "GetProp: "NPFMT" "SPFMT"\n", hwnd, str );
|
||||
dprintf_prop( stddeb, "GetProp: %04x %08lx\n", hwnd, (DWORD)str );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
|
||||
hProp = wndPtr->hProp;
|
||||
while (hProp)
|
||||
|
@ -88,7 +89,7 @@ HANDLE RemoveProp( HWND hwnd, SEGPTR str )
|
|||
HANDLE *hProp;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "RemoveProp: "NPFMT" "SPFMT"\n", hwnd, str );
|
||||
dprintf_prop( stddeb, "RemoveProp: %04x %08lx\n", hwnd, (DWORD)str );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
|
||||
hProp = &wndPtr->hProp;
|
||||
while (*hProp)
|
||||
|
@ -119,14 +120,14 @@ INT EnumProps( HWND hwnd, PROPENUMPROC func )
|
|||
HANDLE hProp;
|
||||
WND *wndPtr;
|
||||
|
||||
dprintf_prop( stddeb, "EnumProps: "NPFMT" %08lx\n", hwnd, (LONG)func );
|
||||
dprintf_prop( stddeb, "EnumProps: %04x %08lx\n", hwnd, (LONG)func );
|
||||
if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0;
|
||||
hProp = wndPtr->hProp;
|
||||
while (hProp)
|
||||
{
|
||||
PROPERTY *prop = (PROPERTY *)USER_HEAP_LIN_ADDR(hProp);
|
||||
|
||||
dprintf_prop( stddeb, " Callback: atom=%04x data="NPFMT" str='%s'\n",
|
||||
dprintf_prop( stddeb, " Callback: atom=%04x data=%04x str='%s'\n",
|
||||
prop->atom, prop->hData, prop->string );
|
||||
|
||||
/* Already get the next in case the callback */
|
||||
|
@ -134,7 +135,7 @@ INT EnumProps( HWND hwnd, PROPENUMPROC func )
|
|||
hProp = prop->next;
|
||||
ret = CallEnumPropProc( func, hwnd,
|
||||
prop->atom ?
|
||||
(LONG)MAKELONG( prop->atom, 0 )
|
||||
(LONG)MAKELONG( prop->atom, 0 )
|
||||
:
|
||||
(LONG)(USER_HEAP_SEG_ADDR(hProp) +
|
||||
((int)prop->string - (int)prop)),
|
||||
|
|
|
@ -28,7 +28,7 @@ void QUEUE_DumpQueue( HQUEUE hQueue )
|
|||
if (!(pq = (MESSAGEQUEUE*) GlobalLock( hQueue )) ||
|
||||
GlobalSize(hQueue) < sizeof(MESSAGEQUEUE) + pq->queueSize*sizeof(QMSG))
|
||||
{
|
||||
fprintf( stderr, NPFMT " is not a queue handle\n", hQueue );
|
||||
fprintf( stderr, "%04x is not a queue handle\n", hQueue );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ void QUEUE_WalkQueues(void)
|
|||
MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock( hQueue );
|
||||
if (!queue)
|
||||
{
|
||||
fprintf( stderr, "*** Bad queue handle "NPFMT"\n", hQueue );
|
||||
fprintf( stderr, "*** Bad queue handle %04x\n", hQueue );
|
||||
return;
|
||||
}
|
||||
fprintf( stderr, "%04x %5d %4d %04x %s\n",
|
||||
|
@ -198,7 +198,7 @@ int QUEUE_FindMsg( MESSAGEQUEUE * msgQueue, HWND hwnd, int first, int last )
|
|||
{
|
||||
int i, pos = msgQueue->nextMessage;
|
||||
|
||||
dprintf_msg(stddeb,"MSG_FindMsg: hwnd=0x"NPFMT"\n\n", hwnd );
|
||||
dprintf_msg(stddeb,"MSG_FindMsg: hwnd=%04x\n\n", hwnd );
|
||||
|
||||
if (!msgQueue->msgCount) return -1;
|
||||
if (!hwnd && !first && !last) return pos;
|
||||
|
|
|
@ -78,32 +78,26 @@ HRGN SCROLL_TraceChildren( HWND hScroll, short dx, short dy, WORD dcx)
|
|||
BOOL SCROLL_ScrollChildren( HWND hScroll, short dx, short dy)
|
||||
{
|
||||
WND *wndPtr = WIN_FindWndPtr(hScroll);
|
||||
HWND hWnd = wndPtr->hwndChild;
|
||||
HRGN hUpdateRgn;
|
||||
BOOL b = 0;
|
||||
|
||||
if( !wndPtr || ( !dx && !dy )) return 0;
|
||||
|
||||
dprintf_scroll(stddeb,"SCROLL_ScrollChildren: hwnd "NPFMT" dx=%i dy=%i\n",hScroll,dx,dy);
|
||||
dprintf_scroll(stddeb,"SCROLL_ScrollChildren: hwnd %04x dx=%i dy=%i\n",hScroll,dx,dy);
|
||||
|
||||
/* get a region in client rect invalidated by siblings and ansectors */
|
||||
hUpdateRgn = SCROLL_TraceChildren(hScroll, dx , dy, DCX_CLIPSIBLINGS);
|
||||
|
||||
/* update children coordinates */
|
||||
while( hWnd )
|
||||
{
|
||||
wndPtr = WIN_FindWndPtr( hWnd );
|
||||
|
||||
/* update children coordinates */
|
||||
for (wndPtr = wndPtr->child; wndPtr; wndPtr = wndPtr->next)
|
||||
{
|
||||
/* we can check if window intersects with clipRect parameter
|
||||
* and do not move it if not - just a thought. - AK
|
||||
*/
|
||||
|
||||
SetWindowPos(hWnd,0,wndPtr->rectWindow.left + dx,
|
||||
wndPtr->rectWindow.top + dy, 0,0, SWP_NOZORDER |
|
||||
SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOREDRAW |
|
||||
SWP_DEFERERASE );
|
||||
|
||||
hWnd = wndPtr->hwndNext;
|
||||
SetWindowPos(wndPtr->hwndSelf, 0, wndPtr->rectWindow.left + dx,
|
||||
wndPtr->rectWindow.top + dy, 0,0, SWP_NOZORDER |
|
||||
SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOREDRAW |
|
||||
SWP_DEFERERASE );
|
||||
}
|
||||
|
||||
/* invalidate uncovered region and paint frames */
|
||||
|
@ -209,11 +203,9 @@ BOOL ScrollDC(HDC hdc, short dx, short dy, LPRECT rc, LPRECT cliprc,
|
|||
short width, height;
|
||||
DC *dc = (DC *)GDI_GetObjPtr(hdc, DC_MAGIC);
|
||||
|
||||
dprintf_scroll(stddeb,"ScrollDC: dx=%d dy=%d, hrgnUpdate="NPFMT" rc=%i %i %i %i\n",
|
||||
dx,dy,hrgnUpdate,(int)((rc)?rc->left:0),
|
||||
(int)((rc)?rc->top:0),
|
||||
(int)((rc)?rc->right:0),
|
||||
(int)((rc)?rc->bottom:0));
|
||||
dprintf_scroll(stddeb,"ScrollDC: dx=%d dy=%d, hrgnUpdate=%04x rc=%d %d %d %d\n",
|
||||
dx,dy,hrgnUpdate,((rc)?rc->left:0), ((rc)?rc->top:0),
|
||||
((rc)?rc->right:0), ((rc)?rc->bottom:0));
|
||||
|
||||
if (rc == NULL)
|
||||
return FALSE;
|
||||
|
|
|
@ -114,7 +114,7 @@ BOOL TIMER_CheckTimer( LONG *next, MSG *msg, HWND hwnd, BOOL remove )
|
|||
TIMER_RestartTimer( pTimer, curTime );
|
||||
}
|
||||
|
||||
dprintf_timer(stddeb, "Timer expired: %p, "NPFMT", %04x, %04x, %08lx\n",
|
||||
dprintf_timer(stddeb, "Timer expired: %p, %04x, %04x, %04x, %08lx\n",
|
||||
pTimer, pTimer->hwnd, pTimer->msg, pTimer->id, (DWORD)pTimer->proc);
|
||||
/* Build the message */
|
||||
msg->hwnd = pTimer->hwnd;
|
||||
|
@ -170,7 +170,7 @@ static WORD TIMER_SetTimer( HWND hwnd, WORD id, WORD timeout,
|
|||
pTimer->timeout = timeout;
|
||||
pTimer->expires = GetTickCount() + timeout;
|
||||
pTimer->proc = proc;
|
||||
dprintf_timer(stddeb, "Timer added: %p, "NPFMT", %04x, %04x, %08lx\n",
|
||||
dprintf_timer(stddeb, "Timer added: %p, %04x, %04x, %04x, %08lx\n",
|
||||
pTimer, pTimer->hwnd, pTimer->msg, pTimer->id, (DWORD)pTimer->proc);
|
||||
TIMER_InsertTimer( pTimer );
|
||||
QUEUE_IncTimerCount( GetTaskQueue(0) );
|
||||
|
@ -217,7 +217,7 @@ static BOOL TIMER_KillTimer( HWND hwnd, WORD id, BOOL sys )
|
|||
*/
|
||||
WORD SetTimer( HWND hwnd, WORD id, WORD timeout, FARPROC proc )
|
||||
{
|
||||
dprintf_timer(stddeb, "SetTimer: "NPFMT" %d %d %08lx\n", hwnd, id, timeout, (LONG)proc );
|
||||
dprintf_timer(stddeb, "SetTimer: %04x %d %d %08lx\n", hwnd, id, timeout, (LONG)proc );
|
||||
return TIMER_SetTimer( hwnd, id, timeout, proc, FALSE );
|
||||
}
|
||||
|
||||
|
@ -227,7 +227,7 @@ WORD SetTimer( HWND hwnd, WORD id, WORD timeout, FARPROC proc )
|
|||
*/
|
||||
WORD SetSystemTimer( HWND hwnd, WORD id, WORD timeout, FARPROC proc )
|
||||
{
|
||||
dprintf_timer(stddeb, "SetSystemTimer: "NPFMT" %d %d %08lx\n",
|
||||
dprintf_timer(stddeb, "SetSystemTimer: %04x %d %d %08lx\n",
|
||||
hwnd, id, timeout, (LONG)proc );
|
||||
return TIMER_SetTimer( hwnd, id, timeout, proc, TRUE );
|
||||
}
|
||||
|
@ -238,7 +238,7 @@ WORD SetSystemTimer( HWND hwnd, WORD id, WORD timeout, FARPROC proc )
|
|||
*/
|
||||
BOOL KillTimer( HWND hwnd, WORD id )
|
||||
{
|
||||
dprintf_timer(stddeb, "KillTimer: "NPFMT" %d\n", hwnd, id );
|
||||
dprintf_timer(stddeb, "KillTimer: %04x %d\n", hwnd, id );
|
||||
return TIMER_KillTimer( hwnd, id, FALSE );
|
||||
}
|
||||
|
||||
|
@ -248,6 +248,6 @@ BOOL KillTimer( HWND hwnd, WORD id )
|
|||
*/
|
||||
BOOL KillSystemTimer( HWND hwnd, WORD id )
|
||||
{
|
||||
dprintf_timer(stddeb, "KillSystemTimer: "NPFMT" %d\n", hwnd, id );
|
||||
dprintf_timer(stddeb, "KillSystemTimer: %04x %d\n", hwnd, id );
|
||||
return TIMER_KillTimer( hwnd, id, TRUE );
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue