Merge remote-tracking branch 'offical/master'

This commit is contained in:
2025-02-13 15:43:19 -05:00
199 changed files with 93927 additions and 1117 deletions
+2
View File
@@ -13,6 +13,8 @@ _load_library :: proc(path: string, global_symbols: bool, allocator: runtime.All
flags := posix.RTLD_Flags{.NOW}
if global_symbols {
flags += {.GLOBAL}
} else {
flags += posix.RTLD_LOCAL
}
cpath := strings.clone_to_cstring(path, allocator)
+13 -3
View File
@@ -209,13 +209,23 @@ marshal_to_writer :: proc(w: io.Writer, v: any, opt: ^Marshal_Options) -> (err:
opt_write_end(w, opt, ']') or_return
case runtime.Type_Info_Enumerated_Array:
opt_write_start(w, opt, '[') or_return
index_type := reflect.type_info_base(info.index)
enum_type := index_type.variant.(reflect.Type_Info_Enum)
opt_write_start(w, opt, '{') or_return
for i in 0..<info.count {
value := cast(runtime.Type_Info_Enum_Value)i
index, found := slice.linear_search(enum_type.values, value)
if !found {
continue
}
opt_write_iteration(w, opt, i == 0) or_return
opt_write_key(w, opt, enum_type.names[index]) or_return
data := uintptr(v.data) + uintptr(i*info.elem_size)
marshal_to_writer(w, any{rawptr(data), info.elem.id}, opt) or_return
}
opt_write_end(w, opt, ']') or_return
opt_write_end(w, opt, '}') or_return
case runtime.Type_Info_Dynamic_Array:
opt_write_start(w, opt, '[') or_return
@@ -667,4 +677,4 @@ cast_any_int_to_u128 :: proc(any_int_value: any) -> u128 {
}
return u
}
}
+2 -2
View File
@@ -126,7 +126,7 @@ _i64_err :: #force_inline proc "contextless" (n: int, err: Error) -> (i64, Error
}
// read reads up to len(p) bytes into s. It returns the number of bytes read and any error if occurred.
// read reads up to len(p) bytes into p. It returns the number of bytes read and any error if occurred.
//
// When read encounters an .EOF or error after successfully reading n > 0 bytes, it returns the number of
// bytes read along with the error.
@@ -142,7 +142,7 @@ read :: proc(s: Reader, p: []byte, n_read: ^int = nil) -> (n: int, err: Error) {
return
}
// write writes up to len(p) bytes into s. It returns the number of bytes written and any error if occurred.
// write writes up to len(p) bytes into p. It returns the number of bytes written and any error if occurred.
write :: proc(s: Writer, p: []byte, n_written: ^int = nil) -> (n: int, err: Error) {
if s.procedure != nil {
n64: i64
+1 -1
View File
@@ -468,7 +468,7 @@ Example:
Possible Output:
15.312
673.130
273.130
*/
@(require_results) float32_range :: proc(low, high: f32, gen := context.random_generator) -> (val: f32) {
+1 -1
View File
@@ -260,7 +260,7 @@ adjust_request_size :: proc(size, align: uint) -> (adjusted: uint) {
// aligned size must not exceed `BLOCK_SIZE_MAX`, or we'll go out of bounds on `sl_bitmap`.
if aligned := align_up(size, align); aligned < BLOCK_SIZE_MAX {
adjusted = min(aligned, BLOCK_SIZE_MAX)
adjusted = max(aligned, BLOCK_SIZE_MIN)
}
return
}
+18 -8
View File
@@ -50,9 +50,12 @@ init_dns_configuration :: proc() {
dns_configuration.hosts_file, _ = replace_environment_path(dns_configuration.hosts_file)
}
@(fini, private)
destroy_dns_configuration :: proc() {
delete(dns_configuration.resolv_conf)
dns_configuration.resolv_conf = ""
delete(dns_configuration.hosts_file)
dns_configuration.hosts_file = ""
}
dns_configuration := DEFAULT_DNS_CONFIGURATION
@@ -533,18 +536,21 @@ decode_hostname :: proc(packet: []u8, start_idx: int, allocator := context.alloc
return
}
if packet[cur_idx] > 63 && packet[cur_idx] != 0xC0 {
return
}
switch {
switch packet[cur_idx] {
// This is a offset to more data in the packet, jump to it
case 0xC0:
// A pointer is when the two higher bits are set.
case packet[cur_idx] & 0xC0 == 0xC0:
if len(packet[cur_idx:]) < 2 {
return
}
pkt := packet[cur_idx:cur_idx+2]
val := (^u16be)(raw_data(pkt))^
offset := int(val & 0x3FFF)
if offset > len(packet) {
// RFC 9267 a ptr should only point backwards, enough to avoid infinity.
// "The offset at which this octet is located must be smaller than the offset
// at which the compression pointer is located". Still keep iteration_max to
// avoid tiny jumps.
if offset > len(packet) || offset >= cur_idx {
return
}
@@ -555,6 +561,10 @@ decode_hostname :: proc(packet: []u8, start_idx: int, allocator := context.alloc
level += 1
}
// Validate label len
case packet[cur_idx] > LABEL_MAX:
return
// This is a label, insert it into the hostname
case:
label_size := int(packet[cur_idx])
+35 -22
View File
@@ -34,23 +34,12 @@ any_socket_to_socket :: proc "contextless" (socket: Any_Socket) -> Socket {
Expects both hostname and port to be present in the `hostname_and_port` parameter, either as:
`a.host.name:9999`, or as `1.2.3.4:9999`, or IP6 equivalent.
Calls `parse_hostname_or_endpoint` and `resolve`, then `dial_tcp_from_endpoint`.
Calls `parse_hostname_or_endpoint` and `dial_tcp_from_host_or_endpoint`.
*/
dial_tcp_from_hostname_and_port_string :: proc(hostname_and_port: string, options := default_tcp_options) -> (socket: TCP_Socket, err: Network_Error) {
target := parse_hostname_or_endpoint(hostname_and_port) or_return
switch t in target {
case Endpoint:
return dial_tcp_from_endpoint(t, options)
case Host:
if t.port == 0 {
return 0, .Port_Required
}
ep4, ep6 := resolve(t.hostname) or_return
ep := ep4 if ep4.address != nil else ep6 // NOTE(tetra): We don't know what family the server uses, so we just default to IP4.
ep.port = t.port
return dial_tcp_from_endpoint(ep, options)
}
unreachable()
return dial_tcp_from_host_or_endpoint(target, options)
}
/*
@@ -61,17 +50,39 @@ dial_tcp_from_hostname_and_port_string :: proc(hostname_and_port: string, option
*/
dial_tcp_from_hostname_with_port_override :: proc(hostname: string, port: int, options := default_tcp_options) -> (socket: TCP_Socket, err: Network_Error) {
target := parse_hostname_or_endpoint(hostname) or_return
switch &t in target {
case Endpoint:
t.port = port
case Host:
t.port = port
}
return dial_tcp_from_host_or_endpoint(target, options)
}
/*
Expects the `host` as Host.
*/
dial_tcp_from_host :: proc(host: Host, options := default_tcp_options) -> (socket: TCP_Socket, err: Network_Error) {
if host.port == 0 {
return 0, .Port_Required
}
ep4, ep6 := resolve(host.hostname) or_return
ep := ep4 if ep4.address != nil else ep6 // NOTE(tetra): We don't know what family the server uses, so we just default to IP4.
ep.port = host.port
return dial_tcp_from_endpoint(ep, options)
}
/*
Expects the `target` as a Host_OrEndpoint.
Unwraps the underlying type and calls `dial_tcp_from_host` or `dial_tcp_from_endpoint`.
*/
dial_tcp_from_host_or_endpoint :: proc(target: Host_Or_Endpoint, options := default_tcp_options) -> (socket: TCP_Socket, err: Network_Error) {
switch t in target {
case Endpoint:
return dial_tcp_from_endpoint({t.address, port}, options)
return dial_tcp_from_endpoint(t, options)
case Host:
if port == 0 {
return 0, .Port_Required
}
ep4, ep6 := resolve(t.hostname) or_return
ep := ep4 if ep4.address != nil else ep6 // NOTE(tetra): We don't know what family the server uses, so we just default to IP4.
ep.port = port
return dial_tcp_from_endpoint(ep, options)
return dial_tcp_from_host(t, options)
}
unreachable()
}
@@ -90,6 +101,8 @@ dial_tcp :: proc{
dial_tcp_from_address_and_port,
dial_tcp_from_hostname_and_port_string,
dial_tcp_from_hostname_with_port_override,
dial_tcp_from_host,
dial_tcp_from_host_or_endpoint,
}
create_socket :: proc(family: Address_Family, protocol: Socket_Protocol) -> (socket: Any_Socket, err: Network_Error) {
+9 -6
View File
@@ -1031,14 +1031,17 @@ Returns:
*/
@private
_split_iterator :: proc(s: ^string, sep: string, sep_save: int) -> (res: string, ok: bool) {
m: int
if sep == "" {
res = s[:]
ok = true
s^ = s[len(s):]
return
if len(s) == 0 {
m = -1
} else {
_, w := utf8.decode_rune_in_string(s^)
m = w
}
} else {
m = index(s^, sep)
}
m := index(s^, sep)
if m < 0 {
// not found
res = s[:]
+3 -3
View File
@@ -10,10 +10,10 @@ SavePanel_runModal :: proc "c" (self: ^SavePanel) -> ModalResponse {
@(objc_type=SavePanel, objc_name="savePanel", objc_is_class_method=true)
SavePanel_savePanel :: proc "c" () -> ^SavePanel {
return msgSend(^SavePanel, SavePanel, "savePanel")
return msgSend(^SavePanel, SavePanel, "savePanel")
}
@(objc_type=SavePanel, objc_name="URL")
SavePanel_URL :: proc "c" (self: ^SavePanel) -> ^Array {
return msgSend(^Array, self, "URL")
}
return msgSend(^Array, self, "URL")
}
+5
View File
@@ -134,6 +134,11 @@ String_isEqualToString :: proc "c" (self, other: ^String) -> BOOL {
return msgSend(BOOL, self, "isEqualToString:", other)
}
@(objc_type=String, objc_name="stringByAppendingString")
String_stringByAppendingString :: proc "c" (self, other: ^String) -> ^String {
return msgSend(^String, self, "stringByAppendingString:", other)
}
@(objc_type=String, objc_name="rangeOfString")
String_rangeOfString :: proc "c" (self, other: ^String, options: StringCompareOptions) -> Range {
return msgSend(Range, self, "rangeOfString:options:", other, options)
+1
View File
@@ -1329,6 +1329,7 @@ Socket_Option :: enum {
ACCEPTCONN = 30,
PEERSEC = 31,
PASSSEC = 34,
IP_ADD_MEMBERSHIP = 35,
MARK = 36,
PROTOCOL = 38,
DOMAIN = 39,
+2 -2
View File
@@ -2010,10 +2010,10 @@ statfs :: proc "contextless" (path: cstring, statfs: ^Stat_FS) -> (Errno) {
*/
fstatfs :: proc "contextless" (fd: Fd, statfs: ^Stat_FS) -> (Errno) {
when size_of(int) == 8 {
ret := syscall(SYS_statfs, fd, statfs)
ret := syscall(SYS_fstatfs, fd, statfs)
return Errno(-ret)
} else {
ret := syscall(SYS_statfs64, fd, size_of(Stat_FS), statfs)
ret := syscall(SYS_fstatfs64, fd, size_of(Stat_FS), statfs)
return Errno(-ret)
}
}
+22 -9
View File
@@ -352,15 +352,28 @@ when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS
// The highest reserved port number.
IPPORT_RESERVED :: 1024
addrinfo :: struct {
ai_flags: Addrinfo_Flags, /* [PSX] input flags */
ai_family: AF, /* [PSX] address family of socket */
ai_socktype: Sock, /* [PSX] socket type */
ai_protocol: Protocol, /* [PSX] protocol of socket */
ai_addrlen: socklen_t, /* [PSX] length of socket address */
ai_canonname: cstring, /* [PSX] canonical name of service location */
ai_addr: ^sockaddr, /* [PSX] binary address */
ai_next: ^addrinfo, /* [PSX] pointer to next in list */
when ODIN_OS == .Linux || ODIN_OS == .OpenBSD {
addrinfo :: struct {
ai_flags: Addrinfo_Flags, /* [PSX] input flags */
ai_family: AF, /* [PSX] address family of socket */
ai_socktype: Sock, /* [PSX] socket type */
ai_protocol: Protocol, /* [PSX] protocol of socket */
ai_addrlen: socklen_t, /* [PSX] length of socket address */
ai_addr: ^sockaddr, /* [PSX] binary address */
ai_canonname: cstring, /* [PSX] canonical name of service location */
ai_next: ^addrinfo, /* [PSX] pointer to next in list */
}
} else {
addrinfo :: struct {
ai_flags: Addrinfo_Flags, /* [PSX] input flags */
ai_family: AF, /* [PSX] address family of socket */
ai_socktype: Sock, /* [PSX] socket type */
ai_protocol: Protocol, /* [PSX] protocol of socket */
ai_addrlen: socklen_t, /* [PSX] length of socket address */
ai_canonname: cstring, /* [PSX] canonical name of service location */
ai_addr: ^sockaddr, /* [PSX] binary address */
ai_next: ^addrinfo, /* [PSX] pointer to next in list */
}
}
when ODIN_OS == .Darwin {
+211 -171
View File
@@ -899,7 +899,7 @@ CS :: enum c.int {
}
PC :: enum c.int {
_2_SYMLINK = _PC_2_SYMLINK,
_2_SYMLINKS = _PC_2_SYMLINKS,
_ALLOC_SIZE_MIN = _PC_ALLOC_SIZE_MIN,
_ASYNC_IO = _PC_ASYNC_IO,
_CHOWN_RESTRICTED = _PC_CHOWN_RESTRICTED,
@@ -1099,7 +1099,7 @@ when ODIN_OS == .Darwin {
_PC_CHOWN_RESTRICTED :: 7
_PC_NO_TRUNC :: 8
_PC_VDISABLE :: 9
_PC_2_SYMLINK :: 15
_PC_2_SYMLINKS :: 15
_PC_ALLOC_SIZE_MIN :: 16
_PC_ASYNC_IO :: 17
_PC_FILESIZEBITS :: 18
@@ -1280,7 +1280,7 @@ when ODIN_OS == .Darwin {
_PC_CHOWN_RESTRICTED :: 7
_PC_NO_TRUNC :: 8
_PC_VDISABLE :: 9
_PC_2_SYMLINK :: 13 // NOTE: not in headers (freebsd)
_PC_2_SYMLINKS :: 13 // NOTE: not in headers (freebsd)
_PC_ALLOC_SIZE_MIN :: 10
_PC_ASYNC_IO :: 53
_PC_FILESIZEBITS :: 12
@@ -1461,7 +1461,7 @@ when ODIN_OS == .Darwin {
_PC_CHOWN_RESTRICTED :: 7
_PC_NO_TRUNC :: 8
_PC_VDISABLE :: 9
_PC_2_SYMLINK :: 13 // NOTE: not in headers
_PC_2_SYMLINKS :: 13 // NOTE: not in headers
_PC_ALLOC_SIZE_MIN :: 10 // NOTE: not in headers
_PC_ASYNC_IO :: 53 // NOTE: not in headers
_PC_FILESIZEBITS :: 11
@@ -1646,7 +1646,7 @@ when ODIN_OS == .Darwin {
_PC_CHOWN_RESTRICTED :: 7
_PC_NO_TRUNC :: 8
_PC_VDISABLE :: 9
_PC_2_SYMLINK :: 10
_PC_2_SYMLINKS :: 10
_PC_ALLOC_SIZE_MIN :: 11
_PC_ASYNC_IO :: 12
_PC_FILESIZEBITS :: 13
@@ -1816,176 +1816,216 @@ when ODIN_OS == .Darwin {
F_TLOCK :: 2
F_ULOCK :: 0
_CS_PATH :: 1
_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS :: 2
_CS_PATH :: 0
_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS :: 1
_CS_GNU_LIBC_VERSION :: 2
_CS_GNU_LIBPTHREAD_VERSION :: 3
_CS_POSIX_V5_WIDTH_RESTRICTED_ENVS :: 4
_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS :: 5
_CS_POSIX_V6_ILP32_OFF32_CFLAGS :: 1116
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS :: 1117
_CS_POSIX_V6_ILP32_OFF32_LIBS :: 1118
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS :: 1120
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS :: 1121
_CS_POSIX_V6_ILP32_OFFBIG_LIBS :: 1122
_CS_POSIX_V6_LP64_OFF64_CFLAGS :: 1124
_CS_POSIX_V6_LP64_OFF64_LDFLAGS :: 1125
_CS_POSIX_V6_LP64_OFF64_LIBS :: 1126
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS :: 1128
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS :: 1129
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS :: 1130
_CS_POSIX_V6_ILP32_OFF32_CFLAGS :: 1116
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS :: 1117
_CS_POSIX_V6_ILP32_OFF32_LIBS :: 1118
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS :: 1119
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS :: 1120
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS :: 1121
_CS_POSIX_V6_ILP32_OFFBIG_LIBS :: 1122
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS :: 1123
_CS_POSIX_V6_LP64_OFF64_CFLAGS :: 1124
_CS_POSIX_V6_LP64_OFF64_LDFLAGS :: 1125
_CS_POSIX_V6_LP64_OFF64_LIBS :: 1126
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS :: 1127
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS :: 1128
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS :: 1129
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS :: 1130
_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS :: 1131
_CS_POSIX_V7_ILP32_OFF32_CFLAGS :: 1132
_CS_POSIX_V7_ILP32_OFF32_LDFLAGS :: 1133
_CS_POSIX_V7_ILP32_OFF32_LIBS :: 1134
_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS :: 1135
_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS :: 1136
_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS :: 1137
_CS_POSIX_V7_ILP32_OFFBIG_LIBS :: 1138
_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS :: 1139
_CS_POSIX_V7_LP64_OFF64_CFLAGS :: 1140
_CS_POSIX_V7_LP64_OFF64_LDFLAGS :: 1141
_CS_POSIX_V7_LP64_OFF64_LIBS :: 1142
_CS_POSIX_V7_LP64_OFF64_LINTFLAGS :: 1143
_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS :: 1144
_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS :: 1145
_CS_POSIX_V7_LPBIG_OFFBIG_LIBS :: 1146
_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS :: 1147
_CS_V6_ENV :: 1148
_CS_V7_ENV :: 1149
_CS_POSIX_V7_THREADS_CFLAGS :: 1150
_CS_POSIX_V7_THREADS_LDFLAGS :: 1151
_PC_LINK_MAX :: 1
_PC_MAX_CANON :: 2
_PC_MAX_INPUT :: 3
_PC_NAME_MAX :: 4
_PC_PATH_MAX :: 5
_PC_PIPE_BUF :: 6
_PC_CHOWN_RESTRICTED :: 7
_PC_NO_TRUNC :: 8
_PC_VDISABLE :: 9
_PC_SYNC_IO :: 10
_PC_ASYNC_IO :: 11
_PC_PRIO_IO :: 12
_PC_FILESIZEBITS :: 14
_PC_REC_INCR_XFER_SIZE :: 15
_PC_REC_MAX_XFER_SIZE :: 16
_PC_REC_MIN_XFER_SIZE :: 17
_PC_REC_XFER_ALIGN :: 18
_PC_ALLOC_SIZE_MIN :: 19
_PC_SYMLINK_MAX :: 20
_PC_2_SYMLINK :: 21
_SC_ARG_MAX :: 1
_SC_CHILD_MAX :: 2
_SC_CLK_TCK :: 3
_SC_NGROUPS_MAX :: 4
_SC_OPEN_MAX :: 5
_SC_STREAM_MAX :: 6
_SC_TZNAME_MAX :: 7
_SC_JOB_CONTROL :: 8
_SC_SAVED_IDS :: 9
_SC_REALTIME_SIGNALS :: 10
_SC_PRIORITY_SCHEDULING :: 11
_SC_TIMERS :: 12
_SC_ASYNCHRONOUS_IO :: 13
_SC_PRIORITIZED_IO :: 14
_SC_SYNCHRONIZED_IO :: 15
_SC_FSYNC :: 16
_SC_MAPPED_FILES :: 17
_SC_MEMLOCK :: 18
_SC_MEMLOCK_RANGE :: 19
_SC_MEMORY_PROTECTION :: 20
_SC_MESSAGE_PASSING :: 21
_SC_SEMAPHORES :: 22
_SC_SHARED_MEMORY_OBJECTS :: 23
_SC_AIO_LISTIO_MAX :: 24
_SC_AIO_MAX :: 25
_SC_AIO_PRIO_DELTA_MAX :: 26
_SC_DELAYTIMER_MAX :: 27
_SC_MQ_OPEN_MAX :: 28
_SC_MQ_PRIO_MAX :: 29
_SC_VERSION :: 30
_SC_PAGESIZE :: 31
_SC_PAGE_SIZE :: _SC_PAGESIZE
_SC_RTSIG_MAX :: 32
_SC_SEM_NSEMS_MAX :: 33
_SC_SEM_VALUE_MAX :: 34
_SC_SIGQUEUE_MAX :: 35
_SC_TIMER_MAX :: 36
_SC_BC_BASE_MAX :: 37
_SC_BC_DIM_MAX :: 38
_SC_BC_SCALE_MAX :: 39
_SC_BC_STRING_MAX :: 40
_SC_COLL_WEIGHTS_MAX :: 41
_SC_EXPR_NEST_MAX :: 43
_SC_LINE_MAX :: 44
_SC_RE_DUP_MAX :: 45
_SC_2_VERSION :: 47
_SC_2_C_BIND :: 48
_SC_2_C_DEV :: 49
_SC_2_FORT_DEV :: 50
_SC_2_FORT_RUN :: 51
_SC_2_SW_DEV :: 52
_SC_2_LOCALEDEF :: 53
_PC_LINK_MAX :: 0
_PC_MAX_CANON :: 1
_PC_MAX_INPUT :: 2
_PC_NAME_MAX :: 3
_PC_PATH_MAX :: 4
_PC_PIPE_BUF :: 5
_PC_CHOWN_RESTRICTED :: 6
_PC_NO_TRUNC :: 7
_PC_VDISABLE :: 8
_PC_SYNC_IO :: 9
_PC_ASYNC_IO :: 10
_PC_PRIO_IO :: 11
_PC_SOCK_MAXBUF :: 12
_PC_FILESIZEBITS :: 13
_PC_REC_INCR_XFER_SIZE :: 14
_PC_REC_MAX_XFER_SIZE :: 15
_PC_REC_MIN_XFER_SIZE :: 16
_PC_REC_XFER_ALIGN :: 17
_PC_ALLOC_SIZE_MIN :: 18
_PC_SYMLINK_MAX :: 19
_PC_2_SYMLINKS :: 20
_SC_IOV_MAX :: 62
_SC_THREADS :: 69
_SC_THREAD_SAFE_FUNCTIONS :: 70
_SC_GETGR_R_SIZE_MAX :: 71
_SC_GETPW_R_SIZE_MAX :: 72
_SC_LOGIN_NAME_MAX :: 73
_SC_TTY_NAME_MAX :: 74
_SC_THREAD_DESTRUCTOR_ITERATIONS :: 75
_SC_THREAD_KEYS_MAX :: 76
_SC_THREAD_STACK_MIN :: 77
_SC_THREAD_THREADS_MAX :: 78
_SC_THREAD_ATTR_STACKADDR :: 79
_SC_THREAD_ATTR_STACKSIZE :: 80
_SC_THREAD_PRIORITY_SCHEDULING :: 81
_SC_THREAD_PRIO_INHERIT :: 82
_SC_THREAD_PRIO_PROTECT :: 83
_SC_THREAD_PROCESS_SHARED :: 84
_SC_NPROCESSORS_CONF :: 85
_SC_NPROCESSORS_ONLN :: 86
_SC_PHYS_PAGES :: 87
_SC_AVPHYS_PAGES :: 88
_SC_ATEXIT_MAX :: 89
_SC_PASS_MAX :: 90
_SC_XOPEN_VERSION :: 91
_SC_XOPEN_UNIX :: 92
_SC_XOPEN_CRYPT :: 93
_SC_XOPEN_ENH_I18N :: 94
_SC_XOPEN_SHM :: 95
_SC_2_CHAR_TERM :: 96
_SC_ARG_MAX :: 0
_SC_CHILD_MAX :: 1
_SC_CLK_TCK :: 2
_SC_NGROUPS_MAX :: 3
_SC_OPEN_MAX :: 4
_SC_STREAM_MAX :: 5
_SC_TZNAME_MAX :: 6
_SC_JOB_CONTROL :: 7
_SC_SAVED_IDS :: 8
_SC_REALTIME_SIGNALS :: 9
_SC_PRIORITY_SCHEDULING :: 10
_SC_TIMERS :: 11
_SC_ASYNCHRONOUS_IO :: 12
_SC_PRIORITIZED_IO :: 13
_SC_SYNCHRONIZED_IO :: 14
_SC_FSYNC :: 15
_SC_MAPPED_FILES :: 16
_SC_MEMLOCK :: 17
_SC_MEMLOCK_RANGE :: 18
_SC_MEMORY_PROTECTION :: 19
_SC_MESSAGE_PASSING :: 20
_SC_SEMAPHORES :: 21
_SC_SHARED_MEMORY_OBJECTS :: 22
_SC_AIO_LISTIO_MAX :: 23
_SC_AIO_MAX :: 24
_SC_AIO_PRIO_DELTA_MAX :: 25
_SC_DELAYTIMER_MAX :: 26
_SC_MQ_OPEN_MAX :: 27
_SC_MQ_PRIO_MAX :: 28
_SC_VERSION :: 29
_SC_PAGE_SIZE :: 30
_SC_PAGESIZE :: _SC_PAGE_SIZE
_SC_RTSIG_MAX :: 31
_SC_SEM_NSEMS_MAX :: 32
_SC_SEM_VALUE_MAX :: 33
_SC_SIGQUEUE_MAX :: 34
_SC_TIMER_MAX :: 35
_SC_BC_BASE_MAX :: 36
_SC_BC_DIM_MAX :: 37
_SC_BC_SCALE_MAX :: 38
_SC_BC_STRING_MAX :: 39
_SC_COLL_WEIGHTS_MAX :: 40
_SC_EXPR_NEST_MAX :: 42
_SC_LINE_MAX :: 43
_SC_RE_DUP_MAX :: 44
_SC_2_VERSION :: 46
_SC_2_C_BIND :: 47
_SC_2_C_DEV :: 48
_SC_2_FORT_DEV :: 49
_SC_2_FORT_RUN :: 50
_SC_2_SW_DEV :: 51
_SC_2_LOCALEDEF :: 52
_SC_UIO_MAXIOV :: 60
_SC_IOV_MAX :: _SC_UIO_MAXIOV
_SC_THREADS :: 67
_SC_THREAD_SAFE_FUNCTIONS :: 68
_SC_GETGR_R_SIZE_MAX :: 69
_SC_GETPW_R_SIZE_MAX :: 70
_SC_LOGIN_NAME_MAX :: 71
_SC_TTY_NAME_MAX :: 72
_SC_THREAD_DESTRUCTOR_ITERATIONS :: 73
_SC_THREAD_KEYS_MAX :: 74
_SC_THREAD_STACK_MIN :: 75
_SC_THREAD_THREADS_MAX :: 76
_SC_THREAD_ATTR_STACKADDR :: 77
_SC_THREAD_ATTR_STACKSIZE :: 78
_SC_THREAD_PRIORITY_SCHEDULING :: 79
_SC_THREAD_PRIO_INHERIT :: 80
_SC_THREAD_PRIO_PROTECT :: 81
_SC_THREAD_PROCESS_SHARED :: 82
_SC_NPROCESSORS_CONF :: 83
_SC_NPROCESSORS_ONLN :: 84
_SC_PHYS_PAGES :: 85
_SC_AVPHYS_PAGES :: 86
_SC_ATEXIT_MAX :: 87
_SC_PASS_MAX :: 88
_SC_XOPEN_VERSION :: 89
_SC_XOPEN_XCU_VERSION :: 90
_SC_XOPEN_UNIX :: 91
_SC_XOPEN_CRYPT :: 92
_SC_XOPEN_ENH_I18N :: 93
_SC_XOPEN_SHM :: 94
_SC_2_CHAR_TERM :: 95
_SC_2_UPE :: 97
_SC_XOPEN_XPG2 :: 98
_SC_XOPEN_XPG3 :: 99
_SC_XOPEN_XPG4 :: 100
_SC_NZERO :: 109
_SC_XBS5_ILP32_OFF32 :: 125
_SC_XBS5_ILP32_OFFBIG :: 126
_SC_XBS5_LP64_OFF64 :: 127
_SC_XBS5_LPBIG_OFFBIG :: 128
_SC_XOPEN_LEGACY :: 129
_SC_XOPEN_REALTIME :: 130
_SC_XOPEN_REALTIME_THREADS :: 131
_SC_ADVISORY_INFO :: 132
_SC_BARRIERS :: 133
_SC_CLOCK_SELECTION :: 137
_SC_CPUTIME :: 138
_SC_THREAD_CPUTIME :: 139
_SC_MONOTONIC_CLOCK :: 149
_SC_READER_WRITER_LOCKS :: 153
_SC_SPIN_LOCKS :: 154
_SC_REGEXP :: 155
_SC_SHELL :: 157
_SC_SPAWN :: 159
_SC_SPORADIC_SERVER :: 160
_SC_THREAD_SPORADIC_SERVER :: 161
_SC_TIMEOUTS :: 164
_SC_TYPED_MEMORY_OBJECTS :: 165
_SC_2_PBS :: 168
_SC_2_PBS_ACCOUNTING :: 169
_SC_2_PBS_LOCATE :: 170
_SC_2_PBS_MESSAGE :: 171
_SC_2_PBS_TRACK :: 172
_SC_SYMLOOP_MAX :: 173
_SC_STREAMS :: 174
_SC_2_PBS_CHECKPOINT :: 175
_SC_V6_ILP32_OFF32 :: 176
_SC_V6_ILP32_OFFBIG :: 177
_SC_V6_LP64_OFF64 :: 178
_SC_V6_LPBIG_OFFBIG :: 179
_SC_HOST_NAME_MAX :: 180
_SC_TRACE :: 181
_SC_TRACE_EVENT_FILTER :: 182
_SC_TRACE_INHERIT :: 183
_SC_TRACE_LOG :: 184
_SC_XOPEN_LEGACY :: 129
_SC_XOPEN_REALTIME :: 130
_SC_XOPEN_REALTIME_THREADS :: 131
_SC_ADVISORY_INFO :: 132
_SC_BARRIERS :: 133
_SC_CLOCK_SELECTION :: 137
_SC_CPUTIME :: 138
_SC_THREAD_CPUTIME :: 139
_SC_MONOTONIC_CLOCK :: 149
_SC_READER_WRITER_LOCKS :: 153
_SC_SPIN_LOCKS :: 154
_SC_REGEXP :: 155
_SC_SHELL :: 157
_SC_SPAWN :: 159
_SC_SPORADIC_SERVER :: 160
_SC_THREAD_SPORADIC_SERVER :: 161
_SC_TIMEOUTS :: 164
_SC_TYPED_MEMORY_OBJECTS :: 165
_SC_2_PBS :: 168
_SC_2_PBS_ACCOUNTING :: 169
_SC_2_PBS_LOCATE :: 170
_SC_2_PBS_MESSAGE :: 171
_SC_2_PBS_TRACK :: 172
_SC_SYMLOOP_MAX :: 173
_SC_2_PBS_CHECKPOINT :: 174
_SC_V6_ILP32_OFF32 :: 175
_SC_V6_ILP32_OFFBIG :: 176
_SC_V6_LP64_OFF64 :: 177
_SC_V6_LPBIG_OFFBIG :: 178
_SC_HOST_NAME_MAX :: 179
_SC_TRACE :: 180
_SC_TRACE_EVENT_FILTER :: 181
_SC_TRACE_INHERIT :: 182
_SC_TRACE_LOG :: 183
_SC_IPV6 :: 234
_SC_RAW_SOCKETS :: 235
_SC_V7_ILP32_OFF32 :: 236
_SC_V7_ILP32_OFFBIG :: 237
_SC_V7_LP64_OFF64 :: 238
_SC_V7_LPBIG_OFFBIG :: 239
_SC_SS_REPL_MAX :: 240
_SC_TRACE_EVENT_NAME_MAX :: 241
_SC_TRACE_NAME_MAX :: 242
_SC_TRACE_SYS_MAX :: 243
_SC_TRACE_USER_EVENT_MAX :: 244
_SC_XOPEN_STREAMS :: 245
_SC_THREAD_ROBUST_PRIO_INHERIT :: 246
_SC_THREAD_ROBUST_PRIO_PROTECT :: 247
_SC_IPV6 :: 235
_SC_RAW_SOCKETS :: 236
_SC_V7_ILP32_OFF32 :: 237
_SC_V7_ILP32_OFFBIG :: 238
_SC_V7_LP64_OFF64 :: 239
_SC_V7_LPBIG_OFFBIG :: 240
_SC_SS_REPL_MAX :: 241
_SC_TRACE_EVENT_NAME_MAX :: 242
_SC_TRACE_NAME_MAX :: 243
_SC_TRACE_SYS_MAX :: 244
_SC_TRACE_USER_EVENT_MAX :: 245
_SC_XOPEN_STREAMS :: 246
_SC_THREAD_ROBUST_PRIO_INHERIT :: 247
_SC_THREAD_ROBUST_PRIO_PROTECT :: 248
_SC_MINSIGSTKSZ :: 249
_SC_SIGSTKSZ :: 250
// NOTE: Not implemented.
_SC_XOPEN_UUCP :: 0
@@ -2046,7 +2086,7 @@ when ODIN_OS == .Darwin {
_PC_REC_XFER_ALIGN :: 34
_PC_ALLOC_SIZE_MIN :: 35
_PC_SYMLINK_MAX :: 36
_PC_2_SYMLINK :: 37
_PC_2_SYMLINKS :: 37
_SC_ARG_MAX :: 15
_SC_CHILD_MAX :: 16
File diff suppressed because it is too large Load Diff
+481 -1
View File
@@ -66,6 +66,7 @@ PULONG_PTR :: ^ULONG_PTR
LPULONG_PTR :: ^ULONG_PTR
DWORD_PTR :: ULONG_PTR
LONG_PTR :: int
INT_PTR :: int
UINT_PTR :: uintptr
ULONG :: c_ulong
ULONGLONG :: c_ulonglong
@@ -542,6 +543,44 @@ COLOR_3DHIGHLIGHT :: COLOR_BTNHIGHLIGHT
COLOR_3DHILIGHT :: COLOR_BTNHIGHLIGHT
COLOR_BTNHILIGHT :: COLOR_BTNHIGHLIGHT
// Common Control Notification Code Ranges
NM_FIRST :: 0
NM_LAST :: ~DWORD(99 - 1)
LVN_FIRST :: ~DWORD(100 - 1)
LVN_LAST :: ~DWORD(199 - 1)
HDN_FIRST :: ~DWORD(300 - 1)
HDN_LAST :: ~DWORD(399 - 1)
TVN_FIRST :: ~DWORD(400 - 1)
TVN_LAST :: ~DWORD(499 - 1)
TTN_FIRST :: ~DWORD(520 - 1)
TTN_LAST :: ~DWORD(549 - 1)
TCN_FIRST :: ~DWORD(550 - 1)
TCN_LAST :: ~DWORD(580 - 1)
CDN_FIRST :: ~DWORD(601 - 1)
CDN_LAST :: ~DWORD(699 - 1)
TBN_FIRST :: ~DWORD(700 - 1)
TBN_LAST :: ~DWORD(720 - 1)
UDN_FIRST :: ~DWORD(721 - 1)
UDN_LAST :: ~DWORD(740 - 1)
MCN_FIRST :: ~DWORD(750 - 1)
MCN_LAST :: ~DWORD(759 - 1)
DTN_FIRST :: ~DWORD(760 - 1)
DTN_LAST :: ~DWORD(799 - 1)
CBEN_FIRST :: ~DWORD(800 - 1)
CBEN_LAST :: ~DWORD(830 - 1)
RBN_FIRST :: ~DWORD(831 - 1)
RBN_LAST :: ~DWORD(859 - 1)
IPN_FIRST :: ~DWORD(860 - 1)
IPN_LAST :: ~DWORD(879 - 1)
SBN_FIRST :: ~DWORD(880 - 1)
SBN_LAST :: ~DWORD(899 - 1)
PGN_FIRST :: ~DWORD(900 - 1)
PGN_LAST :: ~DWORD(950 - 1)
WMN_FIRST :: ~DWORD(1000 - 1)
WMN_LAST :: ~DWORD(1200 - 1)
BCN_FIRST :: ~DWORD(1250 - 1)
BCN_LAST :: ~DWORD(1350 - 1)
// Combo Box Notification Codes
CBN_ERRSPACE :: -1
CBN_SELCHANGE :: 1
@@ -624,6 +663,10 @@ BST_INDETERMINATE :: 0x0002
BST_PUSHED :: 0x0004
BST_FOCUS :: 0x0008
// Button Control Notification Codes
BCN_HOTITEMCHANGE :: (BCN_FIRST + 0x0001)
BCN_DROPDOWN :: (BCN_FIRST + 0x0002)
// Static Control Constants
SS_LEFT :: 0x00000000
SS_CENTER :: 0x00000001
@@ -686,6 +729,416 @@ EN_VSCROLL :: 0x0602
EN_ALIGN_LTR_EC :: 0x0700
EN_ALIGN_RTL_EC :: 0x0701
// Toolbar Styles
TBS_AUTOTICKS :: 0x001
TBS_VERT :: 0x002
TBS_HORZ :: 0x000
TBS_TOP :: 0x004
TBS_BOTTOM :: 0x000
TBS_LEFT :: 0x004
TBS_RIGHT :: 0x000
TBS_BOTH :: 0x008
TBS_NOTICKS :: 0x010
TBS_ENABLESELRANGE :: 0x020
TBS_FIXEDLENGTH :: 0x040
TBS_NOTHUMB :: 0x080
TBS_TOOLTIPS :: 0x100
TBS_REVERSED :: 0x200
TBS_DOWNISLEFT :: 0x400
// Toolbar Button Styles
TBSTYLE_BUTTON :: 0x0000
TBSTYLE_SEP :: 0x0001
TBSTYLE_CHECK :: 0x0002
TBSTYLE_GROUP :: 0x0004
TBSTYLE_CHECKGROUP :: (TBSTYLE_GROUP | TBSTYLE_CHECK)
TBSTYLE_DROPDOWN :: 0x0008
TBSTYLE_AUTOSIZE :: 0x0010
TBSTYLE_NOPREFIX :: 0x0020
TBSTYLE_TOOLTIPS :: 0x0100
TBSTYLE_WRAPABLE :: 0x0200
TBSTYLE_ALTDRAG :: 0x0400
TBSTYLE_FLAT :: 0x0800
TBSTYLE_LIST :: 0x1000
TBSTYLE_CUSTOMERASE :: 0x2000
TBSTYLE_REGISTERDROP :: 0x4000
TBSTYLE_TRANSPARENT :: 0x8000
// Toolbar Button Styles (Aliases)
BTNS_BUTTON :: TBSTYLE_BUTTON
BTNS_SEP :: TBSTYLE_SEP
BTNS_CHECK :: TBSTYLE_CHECK
BTNS_GROUP :: TBSTYLE_GROUP
BTNS_CHECKGROUP :: TBSTYLE_CHECKGROUP
BTNS_DROPDOWN :: TBSTYLE_DROPDOWN
BTNS_AUTOSIZE :: TBSTYLE_AUTOSIZE
BTNS_NOPREFIX :: TBSTYLE_NOPREFIX
BTNS_SHOWTEXT :: 0x40
BTNS_WHOLEDROPDOWN :: 0x80
// Toolbar Extended Styles
TBSTYLE_EX_DRAWDDARROWS :: 0x01
TBSTYLE_EX_MIXEDBUTTONS :: 0x08
TBSTYLE_EX_HIDECLIPPEDBUTTONS :: 0x10
TBSTYLE_EX_DOUBLEBUFFER :: 0x80
// Toolbar Item State Codes
TBSTATE_CHECKED :: 0x01
TBSTATE_PRESSED :: 0x02
TBSTATE_ENABLED :: 0x04
TBSTATE_HIDDEN :: 0x08
TBSTATE_INDETERMINATE :: 0x10
TBSTATE_WRAP :: 0x20
TBSTATE_ELLIPSES :: 0x40
TBSTATE_MARKED :: 0x80
// Toolbar Constants
TBCDRF_NOEDGES :: 0x010000
TBCDRF_HILITEHOTTRACK :: 0x020000
TBCDRF_NOOFFSET :: 0x040000
TBCDRF_NOMARK :: 0x080000
TBCDRF_NOETCHEDEFFECT :: 0x100000
TBCDRF_BLENDICON :: 0x200000
TBCDRF_NOBACKGROUND :: 0x400000
TBBF_LARGE :: 0x1
TBIF_IMAGE :: 0x00000001
TBIF_TEXT :: 0x00000002
TBIF_STATE :: 0x00000004
TBIF_STYLE :: 0x00000008
TBIF_LPARAM :: 0x00000010
TBIF_COMMAND :: 0x00000020
TBIF_SIZE :: 0x00000040
TBIF_BYINDEX :: 0x80000000
TBMF_PAD :: 0x1
TBMF_BARPAD :: 0x2
TBMF_BUTTONSPACING :: 0x4
IDB_STD_SMALL_COLOR :: 0
IDB_STD_LARGE_COLOR :: 1
IDB_VIEW_SMALL_COLOR :: 4
IDB_VIEW_LARGE_COLOR :: 5
IDB_HIST_SMALL_COLOR :: 8
IDB_HIST_LARGE_COLOR :: 9
STD_CUT :: 0
STD_COPY :: 1
STD_PASTE :: 2
STD_UNDO :: 3
STD_REDOW :: 4
STD_DELETE :: 5
STD_FILENEW :: 6
STD_FILEOPEN :: 7
STD_FILESAVE :: 8
STD_PRINTPRE :: 9
STD_PROPERTIES :: 10
STD_HELP :: 11
STD_FIND :: 12
STD_REPLACE :: 13
STD_PRINT :: 14
VIEW_LARGEICONS :: 0
VIEW_SMALLICONS :: 1
VIEW_LIST :: 2
VIEW_DETAILS :: 3
VIEW_SORTNAME :: 4
VIEW_SORTSIZE :: 5
VIEW_SORTDATE :: 6
VIEW_SORTTYPE :: 7
VIEW_PARENTFOLDER :: 8
VIEW_NETCONNECT :: 9
VIEW_NETDISCONNECT :: 10
VIEW_NEWFOLDER :: 11
VIEW_VIEWMENU :: 12
HIST_BACK :: 0
HIST_FORWARD :: 1
HIST_FAVORITES :: 2
HIST_ADDTOFAVORITES :: 3
HIST_VIEWTREE :: 4
// Header Control Styles
HDS_HORZ :: 0x000
HDS_BUTTONS :: 0x002
HDS_HOTTRACK :: 0x004
HDS_HIDDEN :: 0x008
HDS_DRAGDROP :: 0x040
HDS_FULLDRAG :: 0x080
HDS_FILTERBAR :: 0x100
HDS_FLAT :: 0x200
// Header Control Notifications
HDN_ITEMCHANGINGA :: (HDN_FIRST-0)
HDN_ITEMCHANGEDA :: (HDN_FIRST-1)
HDN_ITEMCLICKA :: (HDN_FIRST-2)
HDN_ITEMDBLCLICKA :: (HDN_FIRST-3)
HDN_DIVIDERDBLCLICKA :: (HDN_FIRST-5)
HDN_BEGINTRACKA :: (HDN_FIRST-6)
HDN_ENDTRACKA :: (HDN_FIRST-7)
HDN_TRACKA :: (HDN_FIRST-8)
HDN_GETDISPINFOA :: (HDN_FIRST-9)
HDN_BEGINDRAG :: (HDN_FIRST-10)
HDN_ENDDRAG :: (HDN_FIRST-11)
HDN_FILTERCHANGE :: (HDN_FIRST-12)
HDN_FILTERBTNCLICK :: (HDN_FIRST-13)
HDN_ITEMCHANGINGW :: (HDN_FIRST-20)
HDN_ITEMCHANGEDW :: (HDN_FIRST-21)
HDN_ITEMCLICKW :: (HDN_FIRST-22)
HDN_ITEMDBLCLICKW :: (HDN_FIRST-23)
HDN_DIVIDERDBLCLICKW :: (HDN_FIRST-25)
HDN_BEGINTRACKW :: (HDN_FIRST-26)
HDN_ENDTRACKW :: (HDN_FIRST-27)
HDN_TRACKW :: (HDN_FIRST-28)
HDN_GETDISPINFOW :: (HDN_FIRST-29)
// Header Control Constants
HDFT_ISSTRING :: 0x0000
HDFT_ISNUMBER :: 0x0001
HDFT_HASNOVALUE :: 0x8000
HDI_WIDTH :: 0x001
HDI_HEIGHT :: HDI_WIDTH
HDI_TEXT :: 0x002
HDI_FORMAT :: 0x004
HDI_LPARAM :: 0x008
HDI_BITMAP :: 0x010
HDI_IMAGE :: 0x020
HDI_DI_SETITEM :: 0x040
HDI_ORDER :: 0x080
HDI_FILTER :: 0x100
HDF_LEFT :: 0x0000000
HDF_RIGHT :: 0x0000001
HDF_CENTER :: 0x0000002
HDF_JUSTIFYMASK :: 0x0000003
HDF_RTLREADING :: 0x0000004
HDF_CHECKBOX :: 0x0000040
HDF_CHECKED :: 0x0000080
HDF_FIXEDWIDTH :: 0x0000100
HDF_SORTDOWN :: 0x0000200
HDF_SORTUP :: 0x0000400
HDF_IMAGE :: 0x0000800
HDF_BITMAP_ON_RIGHT :: 0x0001000
HDF_BITMAP :: 0x0002000
HDF_STRING :: 0x0004000
HDF_OWNERDRAW :: 0x0008000
HDF_SPLITBUTTON :: 0x1000000
HHT_NOWHERE :: 0x001
HHT_ONHEADER :: 0x002
HHT_ONDIVIDER :: 0x004
HHT_ONDIVOPEN :: 0x008
HHT_ONFILTER :: 0x010
HHT_ONFILTERBUTTON :: 0x020
HHT_ABOVE :: 0x100
HHT_BELOW :: 0x200
HHT_TORIGHT :: 0x400
HHT_TOLEFT :: 0x800
// Rebar Control Styles
RBS_TOOLTIPS :: 0x0100
RBS_VARHEIGHT :: 0x0200
RBS_BANDBORDERS :: 0x0400
RBS_FIXEDORDER :: 0x0800
RBS_REGISTERDROP :: 0x1000
RBS_AUTOSIZE :: 0x2000
RBS_VERTICALGRIPPER :: 0x4000
RBS_DBLCLKTOGGLE :: 0x8000
// Tooltip Control Styles
TTS_ALWAYSTIP :: 0x01
TTS_NOPREFIX :: 0x02
TTS_NOANIMATE :: 0x10
TTS_NOFADE :: 0x20
TTS_BALLOON :: 0x40
TTS_CLOSE :: 0x80
// Statusbar Control Styles
SBARS_SIZEGRIP :: 0x100
SBARS_TOOLTIPS :: 0x800
// Statusbar Control Constants
SBT_TOOLTIPS :: 0x800
// Up-Down Control Styles
UDS_WRAP :: 0x001
UDS_SETBUDDYINT :: 0x002
UDS_ALIGNRIGHT :: 0x004
UDS_ALIGNLEFT :: 0x008
UDS_AUTOBUDDY :: 0x010
UDS_ARROWKEYS :: 0x020
UDS_HORZ :: 0x040
UDS_NOTHOUSANDS :: 0x080
UDS_HOTTRACK :: 0x100
// Common Control Styles
CCS_TOP :: 0x01
CCS_NOMOVEY :: 0x02
CCS_BOTTOM :: 0x03
CCS_NORESIZE :: 0x04
CCS_NOPARENTALIGN :: 0x08
CCS_ADJUSTABLE :: 0x20
CCS_NODIVIDER :: 0x40
CCS_VERT :: 0x80
CCS_LEFT :: (CCS_VERT | CCS_TOP)
CCS_RIGHT :: (CCS_VERT | CCS_BOTTOM)
CCS_NOMOVEX :: (CCS_VERT | CCS_NOMOVEY)
// List-View Control Styles
LVS_ICON :: 0x0000
LVS_REPORT :: 0x0001
LVS_SMALLICON :: 0x0002
LVS_LIST :: 0x0003
LVS_TYPEMASK :: 0x0003
LVS_SINGLESEL :: 0x0004
LVS_SHOWSELALWAYS :: 0x0008
LVS_SORTASCENDING :: 0x0010
LVS_SORTDESCENDING :: 0x0020
LVS_SHAREIMAGELISTS :: 0x0040
LVS_NOLABELWRAP :: 0x0080
LVS_AUTOARRANGE :: 0x0100
LVS_EDITLABELS :: 0x0200
LVS_OWNERDATA :: 0x1000
LVS_NOSCROLL :: 0x2000
LVS_TYPESTYLEMASK :: 0xFC00
LVS_ALIGNTOP :: 0x0000
LVS_ALIGNLEFT :: 0x0800
LVS_ALIGNMASK :: 0x0C00
LVS_OWNERDRAWFIXED :: 0x0400
LVS_NOCOLUMNHEADER :: 0x4000
LVS_NOSORTHEADER :: 0x8000
// Tree-View Control Styles
TVS_HASBUTTONS :: 0x0001
TVS_HASLINES :: 0x0002
TVS_LINESATROOT :: 0x0004
TVS_EDITLABELS :: 0x0008
TVS_DISABLEDRAGDROP :: 0x0010
TVS_SHOWSELALWAYS :: 0x0020
TVS_RTLREADING :: 0x0040
TVS_NOTOOLTIPS :: 0x0080
TVS_CHECKBOXES :: 0x0100
TVS_TRACKSELECT :: 0x0200
TVS_SINGLEEXPAND :: 0x0400
TVS_INFOTIP :: 0x0800
TVS_FULLROWSELECT :: 0x1000
TVS_NOSCROLL :: 0x2000
TVS_NONEVENHEIGHT :: 0x4000
TVS_NOHSCROLL :: 0x8000
// Tree-View Control Constants
TVE_COLLAPSE :: 0x0001
TVE_EXPAND :: 0x0002
TVE_TOGGLE :: 0x0003
TVE_EXPANDPARTIAL :: 0x4000
TVE_COLLAPSERESET :: 0x8000
TVSIL_NORMAL :: 0
TVSIL_STATE :: 2
TVGN_ROOT :: 0x0
TVGN_NEXT :: 0x1
TVGN_PREVIOUS :: 0x2
TVGN_PARENT :: 0x3
TVGN_CHILD :: 0x4
TVGN_FIRSTVISIBLE :: 0x5
TVGN_NEXTVISIBLE :: 0x6
TVGN_PREVIOUSVISIBLE :: 0x7
TVGN_DROPHILITE :: 0x8
TVGN_CARET :: 0x9
TVGN_LASTVISIBLE :: 0xA
TVSI_NOSINGLEEXPAND :: 0x8000
TVHT_NOWHERE :: 0x001
TVHT_ONITEMICON :: 0x002
TVHT_ONITEMLABEL :: 0x004
TVHT_ONITEM :: (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
TVHT_ONITEMINDENT :: 0x008
TVHT_ONITEMBUTTON :: 0x010
TVHT_ONITEMRIGHT :: 0x020
TVHT_ONITEMSTATEICON :: 0x040
TVHT_ABOVE :: 0x100
TVHT_BELOW :: 0x200
TVHT_TORIGHT :: 0x400
TVHT_TOLEFT :: 0x800
// Tab Control Styles
TCS_SCROLLOPPOSITE :: 0x0001
TCS_BOTTOM :: 0x0002
TCS_RIGHT :: 0x0002
TCS_MULTISELECT :: 0x0004
TCS_FLATBUTTONS :: 0x0008
TCS_FORCEICONLEFT :: 0x0010
TCS_FORCELABELLEFT :: 0x0020
TCS_HOTTRACK :: 0x0040
TCS_VERTICAL :: 0x0080
TCS_TABS :: 0x0000
TCS_BUTTONS :: 0x0100
TCS_SINGLELINE :: 0x0000
TCS_MULTILINE :: 0x0200
TCS_RIGHTJUSTIFY :: 0x0000
TCS_FIXEDWIDTH :: 0x0400
TCS_RAGGEDRIGHT :: 0x0800
TCS_FOCUSONBUTTONDOWN :: 0x1000
TCS_OWNERDRAWFIXED :: 0x2000
TCS_TOOLTIPS :: 0x4000
TCS_FOCUSNEVER :: 0x8000
// Tab Control Constants
TCIF_TEXT :: 0x01
TCIF_IMAGE :: 0x02
TCIF_RTLREADING :: 0x04
TCIF_PARAM :: 0x08
TCIF_STATE :: 0x10
TCIS_BUTTONPRESSED :: 0x1
TCIS_HIGHLIGHTED :: 0x2
TCHT_NOWHERE :: 0x1
TCHT_ONITEMICON :: 0x2
TCHT_ONITEMLABEL :: 0x4
TCHT_ONITEM :: (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
// Animation Control Styles
ACS_CENTER :: 0x1
ACS_TRANSPARENT :: 0x2
ACS_AUTOPLAY :: 0x4
ACS_TIMER :: 0x8
// Month-Calendar Control Styles
MCS_DAYSTATE :: 0x01
MCS_MULTISELECT :: 0x02
MCS_WEEKNUMBERS :: 0x04
MCS_NOTODAYCIRCLE :: 0x08
MCS_NOTODAY :: 0x10
// Date-and-Time Picker Control Styles
DTS_UPDOWN :: 0x01
DTS_SHOWNONE :: 0x02
DTS_SHORTDATEFORMAT :: 0x00
DTS_LONGDATEFORMAT :: 0x04
DTS_SHORTDATECENTURYFORMAT :: 0x0C
DTS_TIMEFORMAT :: 0x09
DTS_APPCANPARSE :: 0x10
DTS_RIGHTALIGN :: 0x20
// Pager Control Styles
PGS_VERT :: 0x0
PGS_HORZ :: 0x1
PGS_AUTOSCROLL :: 0x2
PGS_DRAGNDROP :: 0x4
// Native Font Control Styles
NFS_EDIT :: 0x01
NFS_STATIC :: 0x02
NFS_LISTCOMBO :: 0x04
NFS_BUTTON :: 0x08
NFS_ALL :: 0x10
NFS_USEFONTASSOC :: 0x20
// Font Weights
FW_DONTCARE :: 0
FW_THIN :: 100
@@ -1206,6 +1659,16 @@ NMHDR :: struct {
code: UINT, // NM_ code
}
NMCUSTOMDRAW :: struct {
hdr: NMHDR,
dwDrawStage: DWORD,
hdc: HDC,
rc: RECT,
dwItemSpec: DWORD_PTR,
uItemState: UINT,
lItemlParam: LPARAM,
}
NCCALCSIZE_PARAMS :: struct {
rgrc: [3]RECT,
lppos: PWINDOWPOS,
@@ -2204,7 +2667,24 @@ DUPLICATE_SAME_ACCESS: DWORD : 0x00000002
CONDITION_VARIABLE_INIT :: CONDITION_VARIABLE{}
SRWLOCK_INIT :: SRWLOCK{}
STARTF_USESTDHANDLES: DWORD : 0x00000100
// Flags in STARTUPINFOW.dwFlags.
STARTF_USESHOWWINDOW: DWORD : 0x00000001
STARTF_USESIZE: DWORD : 0x00000002
STARTF_USEPOSITION: DWORD : 0x00000004
STARTF_USECOUNTCHARS: DWORD : 0x00000008
STARTF_USEFILLATTRIBUTE: DWORD : 0x00000010
STARTF_RUNFULLSCREEN: DWORD : 0x00000020 // ignored for non-x86 platforms
STARTF_FORCEONFEEDBACK: DWORD : 0x00000040
STARTF_FORCEOFFFEEDBACK: DWORD : 0x00000080
STARTF_USESTDHANDLES: DWORD : 0x00000100
// WINVER >= 0x400
STARTF_USEHOTKEY: DWORD : 0x00000200
STARTF_TITLEISLINKNAME: DWORD : 0x00000800
STARTF_TITLEISAPPID: DWORD : 0x00001000
STARTF_PREVENTPINNING: DWORD : 0x00002000
// WINVER >= 0x600
STARTF_UNTRUSTEDSOURCE: DWORD : 0x00008000
VOLUME_NAME_DOS: DWORD : 0x0
+23
View File
@@ -63,6 +63,8 @@ foreign user32 {
UpdateWindow :: proc(hWnd: HWND) -> BOOL ---
SetActiveWindow :: proc(hWnd: HWND) -> HWND ---
GetActiveWindow :: proc() -> HWND ---
SetFocus :: proc(hWnd: HWND) -> HWND ---
GetFocus :: proc() -> HWND ---
RedrawWindow :: proc(hwnd: HWND, lprcUpdate: LPRECT, hrgnUpdate: HRGN, flags: RedrawWindowFlags) -> BOOL ---
SetParent :: proc(hWndChild: HWND, hWndNewParent: HWND) -> HWND ---
SetPropW :: proc(hWnd: HWND, lpString: LPCWSTR, hData: HANDLE) -> BOOL ---
@@ -211,6 +213,7 @@ foreign user32 {
EnumDisplayMonitors :: proc(hdc: HDC, lprcClip: LPRECT, lpfnEnum: Monitor_Enum_Proc, dwData: LPARAM) -> BOOL ---
EnumWindows :: proc(lpEnumFunc: Window_Enum_Proc, lParam: LPARAM) -> BOOL ---
EnumChildWindows :: proc(hWndParent: HWND, lpEnumFunc: Window_Enum_Proc, lParam: LPARAM) -> BOOL ---
IsProcessDPIAware :: proc() -> BOOL ---
SetProcessDPIAware :: proc() -> BOOL ---
@@ -846,3 +849,23 @@ FKF_CONFIRMHOTKEY :: 0x8
FKF_HOTKEYSOUND :: 0x10
FKF_INDICATOR :: 0x20
FKF_CLICKON :: 0x40
NONCLIENTMETRICSW :: struct {
cbSize: UINT,
iBorderWidth: i32,
iScrollWidth: i32,
iScrollHeight: i32,
iCaptionWidth: i32,
iCaptionHeight: i32,
lfCaptionFont: LOGFONTW,
iSmCaptionWidth: i32,
iSmCaptionHeight: i32,
lfSmCaptionFont: LOGFONTW,
iMenuWidth: i32,
iMenuHeight: i32,
lfMenuFont: LOGFONTW,
lfStatusFont: LOGFONTW,
lfMessageFont: LOGFONTW,
iPaddedBorderWidth: i32,
}
LPNONCLIENTMETRICSW :: ^NONCLIENTMETRICSW
+1
View File
@@ -9,4 +9,5 @@ PMARGINS :: ^MARGINS
@(default_calling_convention="system")
foreign uxtheme {
IsThemeActive :: proc() -> BOOL ---
SetWindowTheme :: proc(hWnd: HWND, pszSubAppName, pszSubIdList: LPCWSTR) -> HRESULT ---
}
+170
View File
@@ -687,10 +687,14 @@ EM_GETAUTOURLDETECT :: 0x045c
TB_GETSTRINGA :: 0x045c
EM_SETPALETTE :: 0x045d
EM_GETTEXTEX :: 0x045e
TB_SETHOTITEM2 :: 0x045e
EM_GETTEXTLENGTHEX :: 0x045f
EM_SHOWSCROLLBAR :: 0x0460
TB_SETLISTGAP :: 0x0460
EM_SETTEXTEX :: 0x0461
TB_GETIMAGELISTCOUNT :: 0x0462
TAPI_REPLY :: 0x0463
TB_GETIDEALSIZE :: 0x0463
ACM_OPENA :: 0x0464
BFFM_SETSTATUSTEXTA :: 0x0464
CDM_FIRST :: 0x0464
@@ -704,6 +708,7 @@ CDM_GETFILEPATH :: 0x0465
EM_GETPUNCTUATION :: 0x0465
IPM_SETADDRESS :: 0x0465
PSM_SETCURSEL :: 0x0465
TB_GETMETRICS :: 0x0465
UDM_SETRANGE :: 0x0465
WM_CHOOSEFONT_SETLOGFONT :: 0x0465
ACM_STOP :: 0x0466
@@ -712,6 +717,7 @@ CDM_GETFOLDERPATH :: 0x0466
EM_SETWORDWRAPMODE :: 0x0466
IPM_GETADDRESS :: 0x0466
PSM_REMOVEPAGE :: 0x0466
TB_SETMETRICS :: 0x0466
UDM_GETRANGE :: 0x0466
WM_CAP_SET_CALLBACK_ERRORW :: 0x0466
WM_CHOOSEFONT_SETFLAGS :: 0x0466
@@ -721,6 +727,7 @@ CDM_GETFOLDERIDLIST :: 0x0467
EM_GETWORDWRAPMODE :: 0x0467
IPM_SETRANGE :: 0x0467
PSM_ADDPAGE :: 0x0467
TB_GETITEMDROPDOWNRECT :: 0x0467
UDM_SETPOS :: 0x0467
WM_CAP_SET_CALLBACK_STATUSW :: 0x0467
BFFM_SETSTATUSTEXTW :: 0x0468
@@ -728,11 +735,13 @@ CDM_SETCONTROLTEXT :: 0x0468
EM_SETIMECOLOR :: 0x0468
IPM_SETFOCUS :: 0x0468
PSM_CHANGED :: 0x0468
TB_SETPRESSEDIMAGELIST :: 0x0468
UDM_GETPOS :: 0x0468
CDM_HIDECONTROL :: 0x0469
EM_GETIMECOLOR :: 0x0469
IPM_ISBLANK :: 0x0469
PSM_RESTARTWINDOWS :: 0x0469
TB_GETPRESSEDIMAGELIST :: 0x0469
UDM_SETBUDDY :: 0x0469
CDM_SETDEFEXT :: 0x046a
EM_SETIMEOPTIONS :: 0x046a
@@ -915,6 +924,10 @@ FM_GETDRIVEINFOW :: 0x0611
FM_GETFILESELW :: 0x0614
FM_GETFILESELLFNW :: 0x0615
WLX_WM_SAS :: 0x0659
LM_HITTEST :: 0x0700
LM_GETIDEALHEIGHT :: 0x0701
LM_SETITEM :: 0x0702
LM_GETITEM :: 0x0703
SM_GETSELCOUNT :: 0x07e8
UM_GETSELCOUNT :: 0x07e8
WM_CPL_LAUNCH :: 0x07e8
@@ -1011,6 +1024,7 @@ LVM_GETITEMW :: 0x104b
LVM_SETITEMW :: 0x104c
LVM_INSERTITEMW :: 0x104d
LVM_GETTOOLTIPS :: 0x104e
LVM_SORTITEMSEX :: 0x1051
LVM_FINDITEMW :: 0x1053
LVM_GETSTRINGWIDTHW :: 0x1057
LVM_GETCOLUMNW :: 0x105f
@@ -1065,7 +1079,143 @@ LVM_GETFOOTERITEM :: 0x10d0
LVM_GETITEMINDEXRECT :: 0x10d1
LVM_SETITEMINDEXSTATE :: 0x10d2
LVM_GETNEXTITEMINDEX :: 0x10d3
TV_FIRST :: 0x1100
TVM_INSERTITEMA :: (TV_FIRST+0)
TVM_DELETEITEM :: (TV_FIRST+1)
TVM_EXPAND :: (TV_FIRST+2)
TVM_GETITEMRECT :: (TV_FIRST+4)
TVM_GETCOUNT :: (TV_FIRST+5)
TVM_GETINDENT :: (TV_FIRST+6)
TVM_SETINDENT :: (TV_FIRST+7)
TVM_GETIMAGELIST :: (TV_FIRST+8)
TVM_SETIMAGELIST :: (TV_FIRST+9)
TVM_GETNEXTITEM :: (TV_FIRST+10)
TVM_SELECTITEM :: (TV_FIRST+11)
TVM_GETITEMA :: (TV_FIRST+12)
TVM_SETITEMA :: (TV_FIRST+13)
TVM_EDITLABELA :: (TV_FIRST+14)
TVM_GETEDITCONTROL :: (TV_FIRST+15)
TVM_GETVISIBLECOUNT :: (TV_FIRST+16)
TVM_HITTEST :: (TV_FIRST+17)
TVM_CREATEDRAGIMAGE :: (TV_FIRST+18)
TVM_SORTCHILDREN :: (TV_FIRST+19)
TVM_ENSUREVISIBLE :: (TV_FIRST+20)
TVM_SORTCHILDRENCB :: (TV_FIRST+21)
TVM_ENDEDITLABELNOW :: (TV_FIRST+22)
TVM_GETISEARCHSTRINGA :: (TV_FIRST+23)
TVM_SETTOOLTIPS :: (TV_FIRST+24)
TVM_GETTOOLTIPS :: (TV_FIRST+25)
TVM_SETINSERTMARK :: (TV_FIRST+26)
TVM_SETUNICODEFORMAT :: CCM_SETUNICODEFORMAT
TVM_GETUNICODEFORMAT :: CCM_GETUNICODEFORMAT
TVM_SETITEMHEIGHT :: (TV_FIRST+27)
TVM_GETITEMHEIGHT :: (TV_FIRST+28)
TVM_SETBKCOLOR :: (TV_FIRST+29)
TVM_SETTEXTCOLOR :: (TV_FIRST+30)
TVM_GETBKCOLOR :: (TV_FIRST+31)
TVM_GETTEXTCOLOR :: (TV_FIRST+32)
TVM_SETSCROLLTIME :: (TV_FIRST+33)
TVM_GETSCROLLTIME :: (TV_FIRST+34)
TVM_SETINSERTMARKCOLOR :: (TV_FIRST+37)
TVM_GETINSERTMARKCOLOR :: (TV_FIRST+38)
TVM_GETITEMSTATE :: (TV_FIRST+39)
TVM_SETLINECOLOR :: (TV_FIRST+40)
TVM_GETLINECOLOR :: (TV_FIRST+41)
TVM_MAPACCIDTOHTREEITEM :: (TV_FIRST+42)
TVM_MAPHTREEITEMTOACCID :: (TV_FIRST+43)
TVM_INSERTITEMW :: (TV_FIRST+50)
TVM_GETITEMW :: (TV_FIRST+62)
TVM_SETITEMW :: (TV_FIRST+63)
TVM_GETISEARCHSTRINGW :: (TV_FIRST+64)
TVM_EDITLABELW :: (TV_FIRST+65)
HDM_FIRST :: 0x1200
HDM_GETITEMCOUNT :: (HDM_FIRST+0)
HDM_INSERTITEMA :: (HDM_FIRST+1)
HDM_DELETEITEM :: (HDM_FIRST+2)
HDM_GETITEMA :: (HDM_FIRST+3)
HDM_SETITEMA :: (HDM_FIRST+4)
HDM_LAYOUT :: (HDM_FIRST+5)
HDM_HITTEST :: (HDM_FIRST+6)
HDM_GETITEMRECT :: (HDM_FIRST+7)
HDM_SETIMAGELIST :: (HDM_FIRST+8)
HDM_GETIMAGELIST :: (HDM_FIRST+9)
HDM_INSERTITEMW :: (HDM_FIRST+10)
HDM_GETITEMW :: (HDM_FIRST+11)
HDM_SETITEMW :: (HDM_FIRST+12)
HDM_ORDERTOINDEX :: (HDM_FIRST+15)
HDM_CREATEDRAGIMAGE :: (HDM_FIRST+16)
HDM_GETORDERARRAY :: (HDM_FIRST+17)
HDM_SETORDERARRAY :: (HDM_FIRST+18)
HDM_SETHOTDIVIDER :: (HDM_FIRST+19)
HDM_SETBITMAPMARGIN :: (HDM_FIRST+20)
HDM_GETBITMAPMARGIN :: (HDM_FIRST+21)
HDM_SETFILTERCHANGETIMEOUT :: (HDM_FIRST+22)
HDM_SETUNICODEFORMAT :: CCM_SETUNICODEFORMAT
HDM_GETUNICODEFORMAT :: CCM_GETUNICODEFORMAT
HDM_EDITFILTER :: (HDM_FIRST+23)
HDM_CLEARFILTER :: (HDM_FIRST+24)
TCM_FIRST :: 0x1300
TCM_GETIMAGELIST :: (TCM_FIRST+2)
TCM_SETIMAGELIST :: (TCM_FIRST+3)
TCM_GETITEMCOUNT :: (TCM_FIRST+4)
TCM_GETITEMA :: (TCM_FIRST+5)
TCM_SETITEMA :: (TCM_FIRST+6)
TCM_INSERTITEMA :: (TCM_FIRST+7)
TCM_DELETEITEM :: (TCM_FIRST+8)
TCM_DELETEALLITEMS :: (TCM_FIRST+9)
TCM_GETITEMRECT :: (TCM_FIRST+10)
TCM_GETCURSEL :: (TCM_FIRST+11)
TCM_SETCURSEL :: (TCM_FIRST+12)
TCM_HITTEST :: (TCM_FIRST+13)
TCM_SETITEMEXTRA :: (TCM_FIRST+14)
TCM_ADJUSTRECT :: (TCM_FIRST+40)
TCM_SETITEMSIZE :: (TCM_FIRST+41)
TCM_REMOVEIMAGE :: (TCM_FIRST+42)
TCM_SETPADDING :: (TCM_FIRST+43)
TCM_GETROWCOUNT :: (TCM_FIRST+44)
TCM_GETTOOLTIPS :: (TCM_FIRST+45)
TCM_SETTOOLTIPS :: (TCM_FIRST+46)
TCM_GETCURFOCUS :: (TCM_FIRST+47)
TCM_SETCURFOCUS :: (TCM_FIRST+48)
TCM_SETMINTABWIDTH :: (TCM_FIRST+49)
TCM_DESELECTALL :: (TCM_FIRST+50)
TCM_HIGHLIGHTITEM :: (TCM_FIRST+51)
TCM_SETEXTENDEDSTYLE :: (TCM_FIRST+52)
TCM_GETEXTENDEDSTYLE :: (TCM_FIRST+53)
TCM_SETUNICODEFORMAT :: CCM_SETUNICODEFORMAT
TCM_GETUNICODEFORMAT :: CCM_GETUNICODEFORMAT
TCM_GETITEMW :: (TCM_FIRST+60)
TCM_SETITEMW :: (TCM_FIRST+61)
TCM_INSERTITEMW :: (TCM_FIRST+62)
PGM_FIRST :: 0x1400
PGM_SETCHILD :: (PGM_FIRST+1)
PGM_RECALCSIZE :: (PGM_FIRST+2)
PGM_FORWARDMOUSE :: (PGM_FIRST+3)
PGM_SETBKCOLOR :: (PGM_FIRST+4)
PGM_GETBKCOLOR :: (PGM_FIRST+5)
PGM_SETBORDER :: (PGM_FIRST+6)
PGM_GETBORDER :: (PGM_FIRST+7)
PGM_SETPOS :: (PGM_FIRST+8)
PGM_GETPOS :: (PGM_FIRST+9)
PGM_SETBUTTONSIZE :: (PGM_FIRST+10)
PGM_GETBUTTONSIZE :: (PGM_FIRST+11)
PGM_GETBUTTONSTATE :: (PGM_FIRST+12)
PGM_GETDROPTARGET :: CCM_GETDROPTARGET
ECM_FIRST :: 0x1500
EM_SETCUEBANNER :: ECM_FIRST + 0x0001
EM_GETCUEBANNER :: ECM_FIRST + 0x0002
EM_SHOWBALLOONTIP :: ECM_FIRST + 0x0003
EM_HIDEBALLOONTIP :: ECM_FIRST + 0x0004
EM_SETHILITE :: ECM_FIRST + 0x0005
EM_GETHILITE :: ECM_FIRST + 0x0006
EM_NOSETFOCUS :: ECM_FIRST + 0x0007
EM_TAKEFOCUS :: ECM_FIRST + 0x0008
BCM_FIRST :: 0x1600
BCM_GETIDEALSIZE :: BCM_FIRST + 0x0001
BCM_SETIMAGELIST :: BCM_FIRST + 0x0002
BCM_GETIMAGELIST :: BCM_FIRST + 0x0003
BCM_SETTEXTMARGIN :: BCM_FIRST + 0x0004
BCM_GETTEXTMARGIN :: BCM_FIRST + 0x0005
BCM_SETDROPDOWNSTATE :: BCM_FIRST + 0x0006
BCM_SETSPLITINFO :: BCM_FIRST + 0x0007
BCM_GETSPLITINFO :: BCM_FIRST + 0x0008
@@ -1073,9 +1223,29 @@ BCM_SETNOTE :: BCM_FIRST + 0x0009
BCM_GETNOTE :: BCM_FIRST + 0x000A
BCM_GETNOTELENGTH :: BCM_FIRST + 0x000B
BCM_SETSHIELD :: BCM_FIRST + 0x000C
CBM_FIRST :: 0x1700
CB_SETMINVISIBLE :: CBM_FIRST + 0x0001
CB_GETMINVISIBLE :: CBM_FIRST + 0x0002
CCM_FIRST :: 0x2000
CCM_LAST :: (CCM_FIRST+0x200)
CCM_SETBKCOLOR :: (CCM_FIRST+1)
CCM_SETCOLORSCHEME :: (CCM_FIRST+2)
CCM_GETCOLORSCHEME :: (CCM_FIRST+3)
CCM_GETDROPTARGET :: (CCM_FIRST+4)
CCM_SETUNICODEFORMAT :: (CCM_FIRST+5)
CCM_GETUNICODEFORMAT :: (CCM_FIRST+6)
CCM_SETVERSION :: (CCM_FIRST+7)
CCM_GETVERSION :: (CCM_FIRST+8)
CCM_SETNOTIFYWINDOW :: (CCM_FIRST+9)
CCM_SETWINDOWTHEME :: (CCM_FIRST+11)
CCM_DPISCALE :: (CCM_FIRST+12)
OCM__BASE :: 0x2000
LVM_SETUNICODEFORMAT :: 0x2005
SB_SETUNICODEFORMAT :: 0x2005
LVM_GETUNICODEFORMAT :: 0x2006
SB_GETUNICODEFORMAT :: 0x2006
CBEM_SETWINDOWTHEME :: 0x200b
TB_SETWINDOWTHEME :: 0x200b
OCM_CTLCOLOR :: 0x2019
OCM_DRAWITEM :: 0x202b
OCM_MEASUREITEM :: 0x202c