PDA

View Full Version : سوال: دو تا مشکل کلی با ++VC



hamed.aftabi
پنج شنبه 03 بهمن 1387, 14:18 عصر
من دو سوال خیلی کلی دارم که ممنون میشم اگه تو این یکی دو روز جوابمو بدین :
1 - چطوری میتونم با کلیک رو button یا bimap یه bitmap دیگه رو جایگزین کنم.
(فکر میکنم باید از BitBlt استفاده کنم ولی نحوه کارشو نمیدونم)
2- چطوری یه سری کد رو با باز شدن برنامه و قبل کلیک کردن اجرا کنم.

Cave_Man
پنج شنبه 10 بهمن 1387, 14:28 عصر
یعنی کسی نمیتونه مشکل این دوستمون رو حل کنه؟این سوال من هم هست آخه

Nima_NF
جمعه 11 بهمن 1387, 16:42 عصر
1- اول باید مشخص کنید که این عکس در کجا نمایش داده شود. اگر در پشت زمینه یک پینجره است به صورت زیر در قسمت پیام WM_PAINT (یا همان OnDraw) به این شکل می توانید عمل کنید:



CBitmap Yourbmp;

if (Yourbmp.LoadBitmap(IDB_BITMAP1))
{
DIBSECTION ds;
Yourbmp.GetObject (sizeof (DIBSECTION), &ds);


CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);

CBitmap* pOldBitmap = dcMemory.SelectObject(&Yourbmp);

pDC->BitBlt(0, 0, ds.dsBm.bmWidth, ds.dsBm.bmHeight,
&dcMemory, 0, 0, SRCCOPY);

dcMemory.SelectObject(pOldBitmap);
}

- عکس را هم به صورت resource به برنامه اضافه کنید.
pDC همان ورودی DC پنجره است.

- اگر می خواهید سایر فرمت ها به غیر از bmp را نشان دهید از تابع StretchDIBits استفاده کنید.

- اگر می خواهید از ورودی مسیر یک عکس را بگیرید باید خودتان با استفاده از BITMAPFILEHEADER و سایر موارد مشابه فایل را بازکنید و اطلاعات data را در یک بافر بریزید و سپس از StretchDIBits استفاده کنید.


2- چطوری یه سری کد رو با باز شدن برنامه و قبل کلیک کردن اجرا کنم. از پیام WM_CREATE استفاده کنید یا همان متد OnCreate ساخته شده را .