Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

كيفية عمل نافذة متحركة في win32 ++C

السلام عليكم و رحمة الله و بركاته.

قمت بعمل برنامج بسيط باستخدام لغة ++C و win32، و هو عبارة عن نافذة بسيطة فيها زر كبير، قررت أنه عندما يتم ضغط الزر الكبير يتم تغيير موقع النافذة.

المشكلة أن لا شيئ يحدث عندما أضغط على الزر مع أن البرنامج لا يظهر لي خطأ.

هذا هو الكود:

#include<windows.h>
#define BUTTON_MOVE 1
int positionX;
int positionY;
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hpreventInst, LPSTR args,
int ncmdshow) {
WNDCLASSW wc = {0};
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hInstance = hInst;
wc.lpszClassName = L"myWindows";
wc.lpfnWndProce = WindowProcedure;
if (!RegisterClassW(&wc)) {
return -1;
}
CreatWindowW(L"myWindows", L"Window", WS_VISIBLE | WS_OVERLAPPEDWINDOW,
positionX, positionY, 500, 500, NULL, NULL, NULL, NULL);
MSG msg = {0};
while (GetMessageW(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_COMMAND:
switch (wp) {
case BUTTON_MOVE:
positionX += 50;
break;
}
break;
case WM_CREATE:
CreateWindowW(L"myWindows", L"MOVE",
WS_VISIBLE | WS_OVERLAPPEDWINDOW, 200, 200, 200, 200,
hWnd, (HMENU)BUTTON_MOVE, NULL, NULL, NULL);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProcW(hWnd, msg, wp, lp);
break;
}
}
#include<windows.h> #define BUTTON_MOVE 1 int positionX; int positionY; LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hpreventInst, LPSTR args, int ncmdshow) { WNDCLASSW wc = {0}; wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hInstance = hInst; wc.lpszClassName = L"myWindows"; wc.lpfnWndProce = WindowProcedure; if (!RegisterClassW(&wc)) { return -1; } CreatWindowW(L"myWindows", L"Window", WS_VISIBLE | WS_OVERLAPPEDWINDOW, positionX, positionY, 500, 500, NULL, NULL, NULL, NULL); MSG msg = {0}; while (GetMessageW(&msg, NULL, NULL, NULL)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_COMMAND: switch (wp) { case BUTTON_MOVE: positionX += 50; break; } break; case WM_CREATE: CreateWindowW(L"myWindows", L"MOVE", WS_VISIBLE | WS_OVERLAPPEDWINDOW, 200, 200, 200, 200, hWnd, (HMENU)BUTTON_MOVE, NULL, NULL, NULL); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProcW(hWnd, msg, wp, lp); break; } }

المشكلة أن النافذة لا تتحرك عندما أضغط على الزر.

أرجو المساعدة.

تعليقات 1

أضف تعليق

يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.