1.Создаю едит Code: long pEdit;//это описанно int _stdcall Edit(HWND hWnd, UINT uMsg, WPARAM wParam, long lParam);//глобально ////////////////////.............////////////////////// HWND hEdit=CreateWindow("EDIT",TEXT("Hello"),WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_MULTILINE,10,10,200,30,hWnd,(HMENU)1,hInst,NULL); pEdit=SetWindowLong(hEdit,GWL_WNDPROC,(long)Edit);//выполняю после создания родительского окна //////////////////////////..........................////////////////////// int _stdcall Edit(HWND hWnd, UINT uMsg, WPARAM wParam, long lParam) { return CallWindowProc((WNDPROC)pEdit,hWnd,uMsg,wParam,lParam); }//ф-ция обработки сообщений для едита В итоге графически получается место на главном окне в которое можно писать текст. Вопрос как задать ему цвет фона,шрифта,сделать каемку вокруг него? 2.Создание кнопки Code: HWND hButton=CreateWindow("button",TEXT("OK!"),WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON ,80,80,50,30,hWnd,(HMENU)2,hInst,NULL); Вопрос почему неполучается кнопке задать обработчик событий аналогично едиту?Если пробую сделать так же,то кнопка просто не появляется
CreateWindowEx(WS_EX_CLIENTEDGE,... для edit SendMessage( hEdit, WM_SETFONT, (WPARAM)GetStockObject( ANSI_VAR_FONT ), 0 ); - шрифт для задать для любого элемента... ну создание шрифта например вот HFONT hTit=CreateFont(15,6,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY,FIXED_PITCH|FF_MODERN,_TEXT("Arial")); В GDI+ все намного проще реализуется... про кнопку если ты задаешь ей собственный обработчик (вопрос зачем?), то тебе нужно ее или самому отрисовывать или возвращать обработчик стандартный. Code: oldfunc=SetWindowLong(hbutton, GWL_WNDPROC, (LONG)&GarikBtnProc); LRESULT CALLBACK GarikBtnProc(HWND hWnd,UINT Message, UINT wParam, LONG lParam) { if (CallWindowProc((WNDPROC)oldfunc, hWnd, Message, wParam, lParam)) return DefWindowProc(hWnd, Message, wParam, lParam); return 0; } Ну а если ты не знал что нажатия кнопки обрабатываются в WM_COMMAND главной функции окна то вот пример Code: switch(Message) case WM_COMMAND: if(wParam==BT_CLOSE) { AlphaClose(hWnd); PostQuitMessage(0); } return 0; }
ShowWindow(hWnd,SW_MINIMIZE); // программно свернуть любое окошко... ну а если в своем окне нужно обработать нажатие на свернуть то... case WM_SIZE: if(wParam == SIZE_MINIMIZED) { ... } // делаем что-то при сворачивании return 0; а если нужно имеено по нажатию на кнопку свернуть то case WM_SYSCOMMAND: if(wParam==SC_MINIMIZE){ShowWindow(hWnd,SW_HIDE);return 0;} break; это отрывочек из моей проги при нажатии свернуть она просто скрывается
почему бы не банить товарищей, которые не могут воспользоваться гуглом прежде, чем флудить в форуме? http://tinyurl.com/yhae7p7 туева хуча топиков о прописных истинах, описанных в мсдне вдоль и поперек.
Ra$cal тут большая часть форума не умеет пользоваться поиском... и лишь избранные вообще догадываются об msdn я давно это понял
ShowWindow(hWnd, SW_RESTORE); http://msdn.microsoft.com/en-us/library/ms633548(VS.85).aspx _nic ты реально сначала хотя бы почитай справку...
Неа так Code: ShowWindow(hWnd,SW_RESTORE); ShowWindow(hWnd,SW_SHOWMAXIMIZED); то же пробовал.Точнее так Code: DWORD WINAPI restore(LPVOID lParam) { for(;;) { if(GetActiveWindow()!=(HWND)lParam){break;} } ShowWindow(HWND(lParam),SW_RESTORE); ShowWindow(HWND(lParam),SW_SHOWMAXIMIZED); return(0); } ........................................................... case WM_KILLFOCUS: { CreateThread(0,0,&restore,(LPVOID)hWnd,0,0); } break; Но толку 0
SetForegroundWindow Чтение списка функций как бы полезное занятие http://msdn.microsoft.com/en-us/library/ms632595%28VS.85%29.aspx