در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

چگونه از Scintilla در ویندوز استفاده کنیم ؟

به نام یزدان پاک ، درود خدای یکتا را که زمانی دوباره داد تا در کنار شما باشم , اگر بخاطر داشته باشید در مقاله قبل با عنوان “ Scintilla چیست و چه کاربرد هایی دارد .” در بخش مقدمه اعلام کردم که میخواهم کتابی آموزشی برای Scintilla بنویسم اما به دلیل مشغله زیاد از آن منصرف شدم ولی پس از کمی تامل در نبود منابع فارسی Scintilla و مشاهده بازخورد خوب مقاله بر آن شدم تا بخش اسناد Scintilla رو ترجمه و منتشر کنم تا قدم کوچکی در گسترش دانش برداشته باشم. چگونه از Scintilla در ویندوز استفاده کنیم ؟ در زیر بصورت قدم به قدم نحوه استفاده از Scintilla آورده شده است . اول از همه باید فایل DLL بارگزاری شود .

hmod = LoadLibrary(“DLL”);

if (hmod==NULL)

{

MessageBox(hwndParent,

“The Scintilla DLL could not be loaded.”,

“Error loading Scintilla”,

MB_OK | MB_ICONERROR);

}

اگر DLL با موفقیت Load شود . یک کلاس جدید ثبت میشود . این کلاس جدید “Scintilla” نام دارد .حالا شما میتوانید همانند دیگر کنترل های ویندوز از این کنترل استفاده کنید :

hwndScintilla = CreateWindowEx(0,”Scintilla”,””, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_CLIPCHILDREN,10,10,500,400,hwndParent,(HMENU)GuiID, hInstance,NULL);

توجه داشته باشید که نام کلاس جدید “Scintilla” است . چگونه Scintilla را کنترل کنیم ؟ شما میتوانید دستوراتی را برای Scintilla ارسال کنید . برای این کار دو روش وجود دارد که در زیر آمده است .

راه ساده کنترل Scintilla : این را ه دقیقا همانند استفاده از دیگر کنترل ها در ویندوز می باشد . در این راه شما دستورات خود را به Scintilla ارسال می کنید و Scintilla Edit Control اطلاعات مورد نظر شما را بر می گرداند .

ساختار ارسال دستورات :

SendMessage(hwndScintilla,sci_command,wparam,lparam);

مثال :

SendMessage(hwndScintilla,SCI_CREATEDOCUMENT, 0, 0);

بعضی از دستورات مقادیری را برمیگردانند و از پارامترها استفاده نمیکنند برای همین پارامتر ها باید NULL باشد.

راه سریع کنترل Scintilla : راه سریع استفاده از Scintilla استفاده از یک تابع دست نویس است . شما میتوانید با استفاده از یک پوینتر (اشاره گر) به طور مستقیم از فرمان ها استفاده کنید . این روش بسیار سریع تر از SendMessage() عادی میباشد . اول از همه شما باید از دستورات SCI__GETDIRECTFUNCTION و SCI__GETDIRECTPOINTER استفاده کنید و همچنین یک پوینتر برای بازگشت مقادیر به تابع و یک اشاره گر باید پارامتر اول را برای تابع بازیابی کند . که این کارباید توسط روش SendMessage انجام شود .

مثال :

int (*fn)(void*,int,int,int);

void * ptr;

int canundo;

fn = (int (__cdecl *)(void *,int,int,int))SendMessage(

hwndScintilla,SCI_GETDIRECTFUNCTION,0,0);

ptr = (void *)SendMessage(hwndScintilla,SCI_GETDIRECTPOINTER,0,0);

canundo = fn(ptr,SCI_CANUNDO,0,0);

چگونگی دریافت اطلاعیه ها ؟ هرگاه رویدادی رخ میدهد Scintilla آن را توسط WM__NOTIFY به پنجره والد میفرستد . پس شما برای خواندن طالاعیه از پنجره والد از کدی مثل کد زیر استفاده میکنید .

NMHDR *lpnmhdr;

[…]

case WM_NOTIFY:

lpnmhdr = (LPNMHDR) lParam;

if(lpnmhdr->hwndFrom==hwndScintilla)

{

switch(lpnmhdr->code)

{

case SCN_CHARADDED:

/* Hey, Scintilla just told me that a new */

/* character was added to the Edit Control.*/

/* Now i do something cool with that char. */

break;

}

}

break;

نویسنده : محمد حسین(گشتاسب) مظفریان

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#راه_سریع_کنترل_scintilla #چگونگی_دریافت_اطلاعیه_ها_در_scintilla #چگونه #راه_ساده_کنترل_scintilla #چگونه_scintilla_را_کنترل_کنیم_؟ #استفاده
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....