ورود

View Full Version : سوال: تغییر فونت و تغییر مکان ( جابه جا کردن ) CEdit Control در هنگام اجرای برنامه



hamid13257
یک شنبه 12 آذر 1391, 12:29 عصر
سلام خدمت اساتید محترم.
من یک ویو دارم که داخلش یک لیست قرار داره.(به دلایلی از کلاسهای آماده در mfc استفاده نکردم) برای تغییر نام هر یک از node های داخل لیست باید روی نام آن راست کلیک کنید و گزینه ی تغییر نام رو انتخاب کنید.
حالا مشکل از اینجا شروع میشه: بعد از انتخاب تغییر نام من میخوام یک CEdit control روی نام مورد نظر رو بگیره تا کاربر نام جدید رو وارد کنه.برای تغییر مکان هرباره ی کنترل من از این روش استفاده میکنم:



void CCustomTreeView::OnmenuRename()
{
CFont font;
font.CreateFontW(14,0,0,0,100,0,0,0,ANSI_CHARSET,O UT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS
,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,_T("Arial"));
CString str = GetCurrentNodeName();
delete myEdit;
myEdit = new CmyEdit;

myEdit->Create( WS_CHILD|WS_VISIBLE,GetCurrentNodeRect(),this,1);


myEdit->SetFont( &font );
myEdit->SetWindowText( str );

}


همونطور که میبینید من کنترل رو هر بار که تغییر نام انتخاب میشه با اندازه و مکان جدید ایجاد میکنم. آیا این راه حل مناسبه؟
و با استفاده از تابع SetFont سعی میکنم فونت کنترل رو عوض کنم اما کار نمیکنه!!! مشکل کجاست؟

hamid13257
یک شنبه 12 آذر 1391, 15:09 عصر
خدا این CodeProject رو واسه ما نگه داره.
جواب این بود(واسه کسایی که همین مشکل رو دارن میزارم)
An object will be destoried after it works down. So you should use a point of object.

CFont *m_pFont = new CFont;
m_pFont->CreateFont(...);
myEdit->SetFont(m_pFont);