Код (Text): int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS tag = {0}; HWND hwnd = {0}; ATOM RegWindow = {0}; CREATESTRUCT WindowStruct = {0}; tag.hInstance = hInstance; tag.style = CS_BYTEALIGNCLIENT | CS_DBLCLKS; tag.lpszClassName = WindowClass; tag.lpfnWndProc = TMyWindowProc; tag.hbrBackground = 0; tag.hCursor = LoadCursor(NULL,IDC_ARROW); tag.hIcon = LoadIcon(NULL,IDI_APPLICATION); LoadPicture(); if( (RegWindow=RegisterClass(&tag)) == 0) return -1; hwnd = CreateWindow(&WindowClass[0],"MainWindow", WS_VISIBLE| WS_OVERLAPPEDWINDOW,400,100,nWidth,nHeight,0,(HMENU)0,hInstance,(LPVOID)&WindowStruct); ShowWindow(hwnd,SW_SHOW); UpdateWindow(hwnd); MSG msg; hdc = GetDC(hwnd); hdcMem = CreateCompatibleDC(hdc); SetTimer(hwnd,ID_TIMER,100,0); while (GetMessage(&msg,hwnd,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }; return msg.wParam; } LRESULT CALLBACK TMyWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case (WM_PAINT): { PAINTSTRUCT paint = {0}; BITMAP bm; POINT ptSize; paint.hdc = hdc; SelectObject(hdcMem, BitMap[NEBO]); StretchBlt(hdc,0,0,nWidth,nHeight,hdcMem,0,0,640,480,SRCCOPY); break; }; case(WM_DESTROY): { PostQuitMessage(NULL); break; }; case (WM_SYSCOMMAND): { if (wParam == SC_MOVE) MoveWindow(hwnd,(lParam & 0x0000FFFF),(lParam & 0xFFFF0000),nWidth,nHeight,true); break; }; case (WM_TIMER): { double t1,t2,dx = X,dy = Y ; t1= cos(Time); t2= sin(Time); X=t1*175; Y=t2*37; dx-=X; dy-=Y; L += sqrt(fabs(dx*dx + dy*dy)); if (Time >= 2*3.14) Time = 0; Time+=0.03; PostMessage(hwnd,WM_PAINT,0,0); break; }; break; }; DefWindowProc(hwnd,uMsg,wParam,lParam); return 1; }; Создается окно и все почти хорошо но оно не реагирует на мышь(точнее не перемещается, и нельзя нажать кнопку закрыть(() почему ? И еще как избавится от того что отдельные элементы окна мерцают при перерисовки ? Пробивал ставить перерисовку между beginPaint(..) endPaint(...) , в таком случаи перерисовка срабатывает только при разворачивании окна ((
Если не изменяет память то если мы обрабатываем сообщение то возвращаем 0 (return 0; вместо break если нет то return DefWindowProc(hWnd, uMsg, wParam, lParam);. DefWindowProc как бы сама должна справляться с перетаскиванием окон.