Как создать окно внутри главного окна..
Все, что я хотел сказать, это ... . как создать дочернее окно, которое можно перемещать только внутри главного окна, а не за его пределами. Вот часть моего кода, которая относится к созданию окна и циклу.
///Headers #include <windows.h> #include <mmsystem.h> #include <commctrl.h> #include <stdio.h> #include "resource.h" #define FILE_MENU_OPEN 1 #define FILE_MENU_EXIT 2 #define FILE_MENU_HELP 3 #define FILE_MENU_SAVE 4 #define FILE_MENU_ABOUT 5 /// --> Window Procedure callback function the placeholder, /// for the application-defined function name. LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); void AddMenus(HWND); void AddControls(HWND); void registerDialogClass(HINSTANCE); void displayDialog(HWND); void registerACWClass(HINSTANCE); void displayACW(HWND); void loadImages(); HWND hMainWindow, hEdit, hStatic, aLogo, hLogo, hHelp; HMENU hMenu; HBITMAP aLogoImage, hLogoImage, hButtonImage; ///Creation of the Main Window int WINAPI WinMain(HINSTANCE hInst, HINSTANCE pRevInst, LPSTR args, int nCmdShow) { WNDCLASSW wc = {0}; wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 16, 16, 0); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hInstance = hInst; wc.lpszClassName = L"myWindowClass"; wc.lpfnWndProc = WindowProcedure; if(!RegisterClassW(&wc)) return -1; registerDialogClass(hInst); registerACWClass(hInst); hMainWindow = CreateWindowW(L"myWindowClass", L"Name it", WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE, // -> Window style 250, 90, 900, 600, NULL, NULL, NULL, NULL); MSG msg = {0}; // Main message loop: while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); // -> returns when a WM_QUIT message appears DispatchMessage(&msg); // -> calls the static WindowProcedure function } return 0; } LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { int val; switch(msg) { case WM_PAINT: // background image { //Project/build options/linker settings -> add libcomdlg32.a PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); HDC hdc_x = CreateCompatibleDC(NULL); HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "wallpaper.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); SelectObject(hdc_x, hBitmap); RECT rect; GetWindowRect(hWnd, &rect); BitBlt(hdc, 0, 0, rect.right - rect.left, 600, hdc_x, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); break; } case WM_COMMAND: { switch(wp) { case FILE_MENU_OPEN: open_file(hWnd); break; case FILE_MENU_SAVE: save_file(hWnd); break; case FILE_MENU_EXIT: val = MessageBoxW(hWnd, L"Are you sure you want to exit the application ?", L"Warning !", MB_YESNO | MB_ICONEXCLAMATION); if(val == IDYES) { DestroyWindow(hWnd); } break; case FILE_MENU_HELP: displayDialog(hWnd); PlaySound(TEXT("nvg_off.wav"), NULL, SND_SYNC); break; case FILE_MENU_ABOUT: PlaySound(TEXT("nvg_off.wav"), NULL, SND_SYNC); displayACW(hWnd); break; } } case WM_CREATE: loadImages(); AddMenus(hWnd); AddControls(hWnd); break; case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProcW(hWnd, msg, wp, lp); } return 0; }
Что я уже пробовал:
Я еще ничего не пробовал .. :\
и извините за другую функцию void, как я уже сказал, я только скопировал создание окна и цикл внутри моего кода ...