SetWindowLong

ฟังก์ชันSetWindowLongเปลี่ยนแอตทริบิวต์ของหน้าต่างที่ระบุ ฟังก์ชันสามารถตั้งค่าค่า (long) 32-บิตที่ออฟเซตที่ระบุลงในหน่วยความจำเพิ่มหน้าต่างของหน้าต่าง.

(SetWindowLongยาว HWND  hWnd, / / จัดการของหน้าต่างintnIndex, / / ออฟเซ็ตค่าการตั้งค่าความยาวdwNewLong / / ใหม่ค่า);
 

พารามิเตอร์

hWnd
จัดการหน้าต่างและ ทางอ้อม ชั้นที่หน้าต่างที่เป็นสมาชิก.
nIndex
ระบุเป็นค่าถูกตั้งค่าออฟเซต zero-based ค่าที่ถูกต้องอยู่ในช่วงศูนย์ถึงจำนวนไบต์ของหน่วยความจำเพิ่มหน้าต่าง ลบ 4 ตัวอย่างเช่น ถ้าคุณระบุอย่าง น้อย 12 ไบต์ของหน่วยความจำพิเศษ ค่า 8 จะดัชนีเป็นจำนวนเต็มที่ 32 บิตที่สาม เมื่อต้องการตั้งค่าอื่น ๆ ระบุหนึ่งในค่าต่อไปนี้:
ค่า กระทำ
GWL_EXSTYLE ตั้งค่าใหม่ขยายหน้าต่างลักษณะ.
GWL_STYLE กำหนดลักษณะหน้าต่างใหม่.
GWL_WNDPROC การตั้งค่าอยู่ใหม่สำหรับกระบวนงานทางหน้าต่าง.
GWL_HINSTANCE การตั้งค่าตัวจัดการอินสแตนซ์ของแอพลิเคชันใหม่.
GWL_ID การตั้งค่าตัวบ่งชี้ใหม่ของหน้าต่าง.
GWL_USERDATA ตั้งค่า 32 บิตเกี่ยวข้องกับหน้าต่าง หน้าต่างแต่ละบานมีไว้สำหรับใช้งาน โดยโปรแกรมประยุกต์ที่สร้างหน้าต่างค่า 32 บิตที่สอดคล้องกัน.

ค่าต่อไปนี้จะพร้อมใช้งานเมื่อกล่องโต้ตอบระบุพารามิเตอร์hWnd:
ค่า กระทำ
DWL_DLGPROC อยู่ใหม่ของกระบวนงานกล่องโต้ตอบการตั้งค่า.
DWL_MSGRESULT การตั้งค่าส่งกลับค่าของข้อความในกล่องโต้ตอบกระบวนการประมวลผล.
DWL_USER ชุดใหม่เพิ่มเติมข้อมูลที่เป็นส่วนตัวกับแอพลิเคชัน เช่นจับหรือตัวชี้.

dwNewLong
ระบุค่าทดแทน.

ส่งกลับค่า

ถ้าฟังก์ชันสำเร็จ ค่าส่งกลับเป็นค่าก่อนหน้านี้ของ 32 บิตจำนวนเต็มที่ระบุ.

ถ้าฟังก์ชันล้มเหลว ส่งคืนค่าเป็นศูนย์ การขอเพิ่มเติมข้อมูลข้อผิดพลาด โทร GetLastError.

ถ้าค่าก่อนหน้านี้ของ 32 บิตจำนวนเต็มที่ระบุเป็นศูนย์ และฟังก์ชันสำเร็จ ส่งคืนค่าเป็นศูนย์ แต่ฟังก์ชันไม่สามารถล้างข้อมูลผิดพลาดล่าสุด ซึ่งทำให้มันยากที่จะกำหนดความสำเร็จหรือความล้มเหลว กระดูกนี้ คุณควรล้างข้อมูลผิดพลาดล่าสุด โดยโทร SetLastError(0) ก่อนการเรียกSetWindowLong แล้ว ความล้มเหลวของฟังก์ชันจะระบุ ด้วยค่าที่ส่งกลับของศูนย์และGetLastErrorผลลัพธ์ที่ไม่ใช่ศูนย์.

หมายเหตุ

ฟังก์ชันSetWindowLongจะล้มเหลวถ้าหน้าต่างที่ระบุ โดยพารามิเตอร์hWndใช่กระบวนการเดียวกับเธรดการโทร.

ข้อมูลบางหน้าต่างถูกแคช เพื่อทำการเปลี่ยนแปลงที่ทำโดยใช้SetWindowLongจะไม่มีผลจนกว่าคุณเรียกใช้ฟังก์ชันSetWindowPos.

ถ้าคุณใช้SetWindowLongกับ GWL_WNDPROC ดัชนีการแทนกระบวนการหน้าต่าง กระบวนการหน้าต่างต้องสอดคล้องกับแนวทางระบุไว้ในคำอธิบายของฟังก์ชันการเรียกกลับWindowProc.

ถ้า คุณใช้SetWindowLongกับดัชนี DWL_MSGRESULT เพื่อตั้งค่าส่งคืนสำหรับข้อความถูกประมวลผล โดยขั้นตอนการโต้ตอบ คุณควรกลับ TRUE โดยตรงภายหลัง มิฉะนั้น ถ้าคุณเรียกใช้ฟังก์ชันใด ๆ ที่เป็นผลในขั้นตอนการโต้ตอบของคุณได้รับข้อความหน้าต่าง ซ้อนหน้าต่างข้อความไม่สามารถแทนค่าส่งคืนคุณตั้งค่าโดยใช้ DWL_MSGRESULT.

เรียกSetWindowLong GWL_WNDPROC ดัชนีสร้างเป็นระดับชั้นย่อยของคลาสหน้าต่างที่ใช้ในการสร้างหน้าต่าง แอปพลิเคชันสามารถซับคลาสคลาสที่ระบบ แต่ควรซับคลาสคลาสหน้าต่างที่สร้างโดยกระบวนการอื่น ฟังก์ชันSetWindowLongสร้างระดับชั้นย่อยในหน้าต่าง ด้วยการเปลี่ยนกระบวนการหน้าต่างที่เกี่ยวข้องกับคลาสหน้าต่างเฉพาะ การก่อให้เกิดระบบการเรียกกระบวนงานหน้าต่างใหม่แทนที่เป็นของก่อนหน้านี้ โปรแกรมประยุกต์ต้องผ่านข้อความที่ไม่ถูกประมวลผล โดยหน้าต่างวิธีการใหม่ลงในกระบวนงานหน้าต่างก่อนหน้า โดยการเรียกCallWindowProc นี้ทำให้โปรแกรมประยุกต์ที่สร้างแบบลูกโซ่ของกระบวนงานที่หน้าต่าง.

จองหน่วยความจำเพิ่มหน้าต่าง ด้วยการระบุค่าไม่ใช่ศูนย์ในสมาชิกcbWndExtraของโครงสร้างของWNDCLASSEXที่ใช้กับฟังก์ชันRegisterClassEx.

นอกจากนี้คุณไม่ต้องเรียกSetWindowLongกับดัชนี GWL_HWNDPARENT การเปลี่ยนแปลงการปกครองของหน้าต่างลูก ใช้ฟังก์ชันSetParentแทน.

Windows CE: พารามิเตอร์nIndexต้องเป็นตัวคูณ 4 ไบต์.

ไม่สนับสนุนการเข้าถึงที่ไม่.

ไม่มีสนับสนุนค่าพารามิเตอร์ต่อไปนี้nIndex:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

รุ่น Windows CE 2.0 และรุ่นที่ใหม่กว่าสนับสนุนค่า DWL_DLGPROC ในพารามิเตอร์nIndexแต่ Windows CE 1.0 ไม่.

QuickInfo

nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ต้องการเวอร์ชัน 1.0 หรือรุ่นใหม่กว่า
หัวข้อ:ประกาศใน winuser.h
ไลบรารีที่นำเข้า:ใช้ user32.lib
Unicode:นำมาใช้เป็น Unicode และ ANSI รุ่นบน Windows NT.

ดูเพิ่มเติม

หน้าต่างชั้นรวมหน้าต่างคลาสฟังก์ชัน CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

Index