50% OFF!!!

Tuesday, August 19, 2008

Making control RTL or LTR

As many people asked me for making rtl or ltr controls on the compactframework.
My best solution for this question is:

public const int GWL_EXSTYLE = (-20);
public const int WS_EX_LAYOUTRTL = 0x400000;
public static void SetControlDirection(Control c, bool p_isRTL)
{
int style = GetWindowLong(c.Handle, GWL_EXSTYLE);

// set default to ltr (clear rtl bit)
style &= ~WS_EX_LAYOUTRTL;

if (p_isRTL == true)
{
// rtl
style = WS_EX_LAYOUTRTL;
}

SetWindowLong(c.Handle, GWL_EXSTYLE, style);
c.Invalidate();
}


[DllImport("coredll.dll")]
static extern int GetWindowLong(IntPtr hWnd, int cmd);

[DllImport("coredll.dll")]
static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);





CE OS supported:

I tried on "Windows Mobile 6 Classic" emulator and it worked. (CE OS = 5.2)

On "Windows Mobile 5.0 Pocket PC" emulator, also worked. (CE OS = 5.1)


On "Pocket PC 2003 SE" emulator, it did NOT worked! (CE OS = 4.21)


Free Image Hosting at www.ImageShack.us

Download sample test





I hope it will be helpful for you... :)

11 comments:

  1. לא הולך.
    ניסיתי להפעיל את זה על DATAGRID
    LISTBOX ו FORM .

    שמתי את הקריאה אחרי InitializeComponent();


    יש לי NET COMPACT 2.0

    ReplyDelete
  2. It is working.

    I also tested on Checkbox & radiobutton and it works.
    i am working under cf 3.5,
    maybe this is the difference but i don't think.

    ReplyDelete
  3. לדעתי, אולי זה ה 3.5 מול ה 2.0..
    אבל הלוואי שאני מפספס משהו.

    יש דרך ליצור איתך קשר ?

    הדבר הזה מטריד אותי המון זמן..
    במיוחד ב LISTBOX .


    אני מתכנת בNET COMPACT כ 3 שנים.

    תודה מראש.

    ReplyDelete
  4. דבר נוסף .
    אני משתמש במערכת הפעלה :
    WIN.CE NET 4.2

    אולי זו הסיבה ?

    ReplyDelete
  5. I don't thinks its about 2.0 / 3.5

    maybe is about: WIN.CE 4.2

    try please the checkbox/radiobutton
    and i will check RTL for ListBox.

    ReplyDelete
  6. indeed.

    the answer:
    ----------------
    I tried on "Windows Mobile 6 Classic" emulator and it worked. (CE OS = 5.2)

    On "Windows Mobile 5.0 Pocket PC" emulator, also worked. (CE OS = 5.1)

    On "Pocket PC 2003 SE" emulator, it did NOT worked! (CE OS = 4.21)

    ReplyDelete
  7. תודה.

    היתה לי הרגשה שזו מערכת ההפעלה.

    יש דרך ליצור איתך קשר ? מסנג'ר ?
    אשמח להחליף מידע בענייני NET COMPACT ותיכנות בכלל.

    ReplyDelete
  8. כיצד ניתן לראות עברית באמולטור??

    ReplyDelete
  9. יש להתקין קובץ עברית על האמולטור.
    יש כל מיני חברות המפיצות את התקנת העברית.

    זה דורש רשיון :)

    ReplyDelete
  10. how to do this..explain me more detail

    ReplyDelete
  11. download the attached example

    ReplyDelete