Vahid_Mohammadi
دوشنبه 14 مرداد 1392, 19:04 عصر
سلام ، این اولین پست من هست و اگه نا آشنا هستم عذر میخوام.
احتیاج به یک برنامه نمونه در مورد uniscribe دارم که به صورت win32 باشه تا بتونم سوالات خودم در مورد برنامه نویسی جهت فارسی نویسی رو جواب بدم. برنامه ایی که خودم نوشتم و البته <usp10.h> رو Include کردم error لینک میده و علتش رو نمیدونم و همچنین uniscribe یه کم پیچیده است و یه برنامه نمونه که error نده میتونه خیلی سودمند باشه.
تشکر میکنم.
Vahid_Mohammadi
پنج شنبه 17 مرداد 1392, 12:29 عصر
تشکر میکنم ، از یه جا گیر آوردم و دوباره نویسی اش کردم.
case WM_PAINT:
WCHAR str[10];
wcscpy(str,L"وحید");
int len;
len = (int)wcslen(str);
HRESULT rslt;
//SCRIPT_CONTROL *psControl; //*psControl = (SCRIPT_CONTROL )NULL;
//SCRIPT_STATE *psState; //*psState = (SCRIPT_STATE )NULL;
int cMaxItems; cMaxItems = 500;
SCRIPT_ITEM items[500];
int cItems;
SCRIPT_CACHE ssc; ssc=NULL;
int mx_glyph; mx_glyph=len*2+16;
int glyph_cnt; glyph_cnt = 0;
int i;
int dx , dy; dx=0; dy=0;
rslt = ScriptItemize(str, len,cMaxItems,NULL, NULL,items, &cItems);
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
for(i=0;i<cItems;i++)
{
WORD *clusts; clusts = (WORD*)malloc(sizeof(WORD)*mx_glyph);
WORD *glyphs; glyphs = (WORD*)malloc(sizeof(WORD)*mx_glyph);
SCRIPT_VISATTR *sva; sva = (SCRIPT_VISATTR*)malloc(sizeof(SCRIPT_VISATTR)*mx_ glyph);
ScriptShape(hdc,&ssc,str,len,mx_glyph,&items[i].a,glyphs,clusts,sva,&glyph_cnt);
ABC abc;
int *adv;// *adv= NULL;
GOFFSET *offs;
offs = (GOFFSET*)malloc(sizeof(GOFFSET)*mx_glyph);
adv = (int*)malloc(sizeof(int)*mx_glyph);
ScriptPlace(hdc, &ssc, glyphs, glyph_cnt, sva, &items[i].a,adv, offs, &abc);
ScriptTextOut(hdc, &ssc, dx, dy, 0/*ETO_CLIPPED*/, NULL/*&lprc*/,&items[i].a, NULL, 0,glyphs, glyph_cnt, adv, NULL, //const int *piJustify
offs);
dx += abc.abcA + abc.abcB + abc.abcC;
}
EndPaint(hWnd, &ps);
break;
Vahid_Mohammadi
یک شنبه 20 مرداد 1392, 11:40 صبح
این هم یه جور دیگش
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
SCRIPT_STRING_ANALYSIS ssa;
int x,y; x=0; y=0;
RECT rct; rct.top=0; rct.left=0; rct.bottom=100; rct.right=100;
HRESULT rslt;
WCHAR str[10];
wcscpy(str,L"وحید");
int len; len= wcslen(str);
rslt = ScriptStringAnalyse(
hdc,
str, len,
2 * len + 16,
-1,//ARABIC_CHARSET,
SSA_GLYPHS,
0,
NULL, // control
NULL, // state
NULL, // piDx
NULL,
NULL, // pbInClass
&ssa);
rslt = ScriptStringOut(
ssa, x, y, 0,//ETO_OPAQUE
&rct,
0, 0, FALSE);
ScriptStringFree(&ssa);
EndPaint(hWnd, &ps);
break;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.