اصول عملکرد رابط کاربری سیستم عامل های خانواده ویندوز بر اساس مفهوم یک پنجره است. دسک تاپ ، نوار وظیفه ، لیست ها ، گفتگوها ، دکمه ها ، منوها همه ویندوز هستند. بنابراین ، در واقع ، برای نمایش هر عنصر رابط ، باید یک پنجره windows ایجاد کنید.
ضروری است
- - کامپایلر
- - Windows Platform SDK.
دستورالعمل ها
مرحله 1
در صورت نیاز کلاس پنجره ایجاد شده را ثبت کنید. با توابع API RegisterClass ، RegisterClassEx تماس بگیرید یا از عملکرد مناسب چارچوب استفاده شده استفاده کنید.
توابع RegisterClass و RegisterClassEx نشانگرهایی را به ترتیب از ساختار WNDCLASS و WNDCLASSEX به عنوان تنها پارامتر خود می پذیرند. هنگام ایجاد یک پنجره می توان از مقدار برگشتی نوع ATOM به جای نام کلاس استفاده کرد. اگر فراخوانی عملکرد از کار بیفتد ، مقدار بازگشتی 0 است.
ساختاری از نوع WNDCLASS یا WNDCLASSEX را مثال بزنید. تمام قسمتهای لازم را پر کنید. به طور خاص ، مقادیر صحیح باید در موارد زیر قرار گیرد:
- cbSize - اندازه ساختار در بایت؛
- سبک - مجموعه ای از سبک ها برای کلاس پنجره ؛
- lpfnWndProc - نشانگر روش پنجره ؛
- hInstance دسته ماژولی است که کلاس پنجره در آن ثبت شده است.
- lpszClassName نام نمادین کلاس است.
بقیه قسمت ها را می توان با مقادیر NULL نوشت. برای ثبت کلاس پنجره یک فراخوانی ایجاد کنید. نتیجه برگشتی را بررسی کنید.
گام 2
در صورت لزوم کلاس پنجره موجود را انتخاب کنید. شما باید نام کلاس نمادین (چیزی که هنگام ثبت آن از نشانگر lpszClassName عبور کرده است) یا مقدار ATOM مربوطه را بدانید. کلاس می تواند در سطح برنامه محلی ، در سطح برنامه جهانی (ثبت شده با پرچم CS_GLOBALCLASS) یا کلاس سیستم باشد. نوع آخر شامل کلاسهایی از ویندوز با نامهای: دکمه ، ComboBox ، ویرایش ، ListBox ، MDIClient ، ScrollBar ، Static است. کلاسهایی مانند RichEdit20W یا SysListView32 هنگام بارگیری کتابخانه های مربوطه ثبت می شوند.
مرحله 3
یک پنجره ویندوز ایجاد کنید. از توابع API CreateWindow ، CreateWindowEx یا روش های مناسب بسته بندی برای اشیا class کلاس از چارچوب یا کتابخانه ای که استفاده می کنید استفاده کنید. نمونه اولیه تابع CreateWindowEx به این شکل است:
HWND CreateWindowEx (DWORD dwExStyle ،
LPCTSTR lpClassName ،
LPCTSTR lpWindowName ،
DWORD dwStyle ،
int x ،
بین شما ،
عرض n عرض
int ارتفاع ،
HWND hWndParent ،
HMENU hMenu ،
HINSTANCE hIstance ،
LPVOID lpParam);
تابع CreateWindow فقط در غیاب پارامتر dwExStyle با CreateWindowEx متفاوت است.
با CreateWindow یا CreateWindowEx تماس بگیرید. در پارامتر lpClassName نام یا مقدار ATOM کلاس پنجره ای را که در مرحله اول یا دوم تعریف کردید ، منتقل کنید. پارامترهای x، y، nWidth، nHeight می توانند مختصات و اندازه های پنجره ایجاد شده باشند. دسته پنجره والدین (در صورت وجود) از طریق hWndParent منتقل می شود.
مقدار برگردانده شده توسط CreateWindow یا CreateWindowEx را ذخیره و تجزیه کنید. در صورت موفقیت ، آنها یک دسته را به پنجره جدید باز می گردانند ؛ در صورت شکست ، NULL.