Другие языки программирования и технологии

Подскажите на языке c++ создал новый проект выбрал при создании windows applikation, Создал меню, в как???

Создаёшь пустой проект, пишешь вот такую программу:

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "TemplateWin32App" ;
HWND hwnd ;
MSG msg ;
WNDCLASSEX wndclass ;

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

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName, // window class name
"The Hello world win32 Program", // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;

switch (iMsg)
{
case WM_CREATE :
MessageBox(hwnd,"Window was created","MESSAGE",MB_OK);
return 0 ;

case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;

// GetClientRect (hwnd, &rect) ; получить геометрию рабочей области или так или как написано ниже
rect = ps.rcPaint;

DrawText (hdc, "Hello, Windows 95! Fuck off windows 3.11!!!", -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER |DT_WORDBREAK ) ;

EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY :
MessageBox(hwnd,"Window was destroyed","MESSAGE",MB_OK);
PostQuitMessage (0) ;
return 0 ;
}

return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}
АН
Алекс Н
28 402
Лучший ответ
Мир Вам!

> Создал меню, а как правильно прописать код для окошка
Что за меню без окошка?
Контекстное, что ли? :-)

> как правильно прописать код для окошка
1. Зарегистрировать новый оконный класс WNDCLASS или WNDCLASSEX.
2. Создать окно функцией CreateWindow() или CreateWindowEx().
3. Написать цикл обработки сообщений и оконную процедуру.

Если какое-то окошко уже есть, можно создать ещё одно окошко того же оконного класса, но оно будет в точности таким же, как и первое (удобно при создании MDI-приложений) .

> где именно
Смотря когда (при каких действиях пользователя) должно появляться окошко.

Посмотрите здесь, может, пригодится:
http://msdn.microsoft.com/ru-ru/library/bb384843.aspx

P.S.
И почитайте книжку Юрия Щупака "Win32 API. Эффективная разработка приложений".

(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))

> KVADRO
> а потом учи паскаль.
Блин, неужели и на других проектах несут такую хрень, или только на этом? !

(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))(((:)))

С наилучшими пожеланиями,
Богомолов Игорь Дмитриевич (aka iNsectus).
Farhat -))
Farhat -))
6 355
Сначала научись правильно писать приложение на английском а потом учи паскаль.