ฟังก์ชันSetWindowLongเปลี่ยนแอตทริบิวต์ของหน้าต่างที่ระบุ ฟังก์ชันสามารถตั้งค่าค่า (long) 32-บิตที่ออฟเซตที่ระบุลงในหน่วยความจำเพิ่มหน้าต่างของหน้าต่าง.
(SetWindowLongยาว HWND hWnd, / / จัดการของหน้าต่างintnIndex, / / ออฟเซ็ตค่าการตั้งค่าความยาวdwNewLong / / ใหม่ค่า);
| ค่า | กระทำ |
|---|---|
| GWL_EXSTYLE | ตั้งค่าใหม่ขยายหน้าต่างลักษณะ. |
| GWL_STYLE | กำหนดลักษณะหน้าต่างใหม่. |
| GWL_WNDPROC | การตั้งค่าอยู่ใหม่สำหรับกระบวนงานทางหน้าต่าง. |
| GWL_HINSTANCE | การตั้งค่าตัวจัดการอินสแตนซ์ของแอพลิเคชันใหม่. |
| GWL_ID | การตั้งค่าตัวบ่งชี้ใหม่ของหน้าต่าง. |
| GWL_USERDATA | ตั้งค่า 32 บิตเกี่ยวข้องกับหน้าต่าง หน้าต่างแต่ละบานมีไว้สำหรับใช้งาน โดยโปรแกรมประยุกต์ที่สร้างหน้าต่างค่า 32 บิตที่สอดคล้องกัน. |
ค่าต่อไปนี้จะพร้อมใช้งานเมื่อกล่องโต้ตอบระบุพารามิเตอร์hWnd:
| ค่า | กระทำ |
|---|---|
| DWL_DLGPROC | อยู่ใหม่ของกระบวนงานกล่องโต้ตอบการตั้งค่า. |
| DWL_MSGRESULT | การตั้งค่าส่งกลับค่าของข้อความในกล่องโต้ตอบกระบวนการประมวลผล. |
| DWL_USER | ชุดใหม่เพิ่มเติมข้อมูลที่เป็นส่วนตัวกับแอพลิเคชัน เช่นจับหรือตัวชี้. |
ถ้าฟังก์ชันสำเร็จ ค่าส่งกลับเป็นค่าก่อนหน้านี้ของ 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 ไม่.
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