الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن تحريك صوره bitblt

مغلق
بدأه thekingofc في 6 سبتمبر 2005 · 6 رد · 719 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب كيف يمكن تحريك صوره bitblt على ال client area لقد استعملت الاسلوب التالي

اولا في بداية البرنامج قمت بتعريف

Static UINT xx= 10;

ثانيا قمت باضافة بعض الامور في ال LRESULT CALLBACK WndProc ستجدونها في الكود في الاسفل لكن الطريقة لم تنجح :(

ارجو توضيح ال طريقة الصحيحة

#include<windows.h>

static  UINT xx;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
       PSTR szCmdLine,int nShowCmd)
{
	static TCHAR szAppName[]=("HolloWin");
	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;

	wndclass.style        = (CS_HREDRAW|CS_VREDRAW);
	wndclass.lpfnWndProc  = WndProc;
	wndclass.cbClsExtra   = 0;
	wndclass.cbWndExtra   = 0;
	wndclass.hInstance    = hInstance;
	wndclass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.hIcon        = LoadIcon(NULL,IDI_APPLICATION);
	wndclass.hCursor      = LoadCursor(NULL,IDC_ARROW);
	wndclass.lpszMenuName = NULL;
	wndclass.lpszClassName= szAppName;

	if(!RegisterClass(&wndclass))
	{
  MessageBox(NULL,"this programm reqwire windows NT",
 	 szAppName,NULL);
  return 0;
	}

	hwnd= CreateWindow(szAppName,"the hello program",
  WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT
  ,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
	ShowWindow(hwnd,SW_MAXIMIZE);
	UpdateWindow(hwnd);

	while(GetMessage(&msg,NULL,0,0))
	{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
	}
	return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam
       ,LPARAM lParam)
{
	HDC hdc,hdcmem;

	switch ( message)
	{
	case WM_PAINT:
  hdc=GetDC(hwnd);
  HBITMAP hbitmap;
  hbitmap =(HBITMAP)LoadImage(GetModuleHandle(NULL),"photo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
  hdcmem =CreateCompatibleDC(hdc);
  SelectObject(hdcmem,hbitmap);
  BitBlt(hdc,xx,10,300,400,hdcmem,0,0,SRCCOPY);
  DeleteDC(hdcmem);
  DeleteDC(hdc);
  return 0;

	case WM_KEYDOWN:
  switch(wParam)
  {
  case VK_LEFT:
 	 xx=xx+10;
 	 SendMessage(NULL,WM_PAINT,wParam,lParam);

 	 return 0;
  }
  
	return 0;



	case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}
#2

قم بجعل المتغير UNIT فقط بدلاً من static

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

لم يتغير شيء

عند بدا تشغيل البرنامج تتحرك الصوره لكن تترك وراها اثر يعني الصوره اللي قبلها لا تمسح

اما اذا تاخرت قليلا يتوقف البرنامج عن الاستجابة لموضوع التحريك نهائيا

يعني لو حولت هذا البرنامج الى لعبة لن يكون بمقدور المستخدم اللعب اكثر من نصف دقيقة

قد تكون فكرة جيدة لايام الامتحانات :D حيث يرجع الطالب الى المذاكرة سريعا لكن لا انوي الاستفادة منها

الان :rolleyes:

شوفولي حل الله لا يضيعلكم تعب

#4

مشروع و مترجم و شغال

dd.zip

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#5

عندما سحبت الملف وفكيت الضغط عنه وجدت ان الكود غير موصل مع المشروع فقمت بتوصيله

واشتغل البرنامج لكن المشكله لاتزال قائمة اذا تاخرت في ضغط السهم الايسر مدة دقيقة واحدة فلن

يستجيب بعدها البرنامج ولن تتحرك الصوره

#6

ممكن تاخرتشوي ..

لاحظ هنا

case WM_KEYDOWN:
 switch(wParam)
 {
 case VK_LEFT:
  xx=xx+10;
  SendMessage(NULL,WM_PAINT,wParam,lParam);

  return 0;
 }

بدلا من كتابة الدالة

  SendMessage(NULL,WM_PAINT,wParam,lParam);

اكتب

InvalidateRect(hwnd,0,TRUE);

البارمتر الثاني يطلب منك عنوان RECT انشئ RECT وضع له الاحداثيات المناسبة ...

يمكن مش واضح .. لكن ان شاء الله اجهز مثال .....

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

ياخي انت دائما تاتي في الوقت المناسب .

مشكور اخي على الجواب

لدي سؤال اخر حبيت اسالك كيف اقدر استعمل صور gif بدل صور bmp وكيف ممكن اشغل موسيقة midi بدل ال wav

هذا الموضوع مغلق.

مواضيع مشابهة