Теперь я назначен для создания программы построения диаграмм/декартовых плоскостей, и мне было предложено сделать это на C, а точнее, в Win32, у меня есть небольшая проблема, хотя я хотел Поместите всплывающее окно внутри моего окна как временное поле Графическое отображение, проблема в том, когда я создаю окно, предполагаемое «поле графика» появляется за пределами основного/родительского окна, и кажется, что он использует весь экран в качестве ссылки на его место, а не назначенный родитель/главное окно:ставить окно в окно
HWND DrawGrap(HWND hwnd)
{
LPSTR nme = "graph";
WNDCLASSEX c;
c.style = CS_VREDRAW|CS_HREDRAW;
c.lpfnWndProc = MathProc;
c.cbClsExtra = 0;
c.cbWndExtra = 0;
c.hInstance = GetModuleHandle(NULL);
c.hIcon = LoadIcon(NULL,IDI_APPLICATION);
c.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
c.hCursor = LoadCursor(NULL,IDC_ARROW);
c.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
c.lpszMenuName = NULL;
c.lpszClassName = nme;
c.cbSize = sizeof(c);
RegisterClassEx(&c);
return CreateWindowEx(0,nme,"",WS_VISIBLE|WS_POPUP|WS_CHILD,
10, 10,
460,200,hwnd,NULL,GetModuleHandle(NULL),0);
}
void InitializeUI(HWND hwnd)
{
//Graph
DrawGrap(hwnd);
//GroupBoxes for coordinate inputs
P1BOX = CreateWindowEx(0,"BUTTON","Point 1",
WS_VISIBLE|WS_CHILD|BS_GROUPBOX,
10,230,225,120,hwnd,(HMENU)111,
GetModuleHandle(NULL),0);
P2BOX = CreateWindowEx(0,"BUTTON","Point 2",
WS_VISIBLE|WS_CHILD|BS_GROUPBOX,
250,230,225,120,hwnd,(HMENU)112,
GetModuleHandle(NULL),0);
//Coordinate Labels:
CreateLabel("X :",P1BOX,30);
CreateLabel("Y :",P1BOX,80);
CreateLabel("X :",P2BOX,30);
CreateLabel("Y :",P2BOX,80);
//Input boxes
hP1X = CreateBox(P1BOX,40,30,P1X);
hP1Y = CreateBox(P1BOX,40,80,P1X);
hP2X = CreateBox(P2BOX,40,30,P1X);
hP2Y = CreateBox(P2BOX,40,80,P1X);
//buttons
CreateButton("Gen. Equation",125,360,hwnd,GENEQBTN);
CreateButton("Point-Slope",255,360,hwnd,PSLOPEBTN);
CreateButton("Slope-intercept",125,395,hwnd,SINTERCEPTBTN);
CreateButton("Intercept",255,395,hwnd,INTERCEPTBTN);
CreateButton("Slope",195,430,hwnd,SLOPEBTN);
}
однако, когда я заменить NULL в:
return CreateWindowEx(0,nme,"",WS_VISIBLE|WS_POPUP|WS_CHILD,
10, 10,
460,200,hwnd,NULL,GetModuleHandle(NULL),0);
с:
return CreateWindowEx(0,nme,"",WS_VISIBLE|WS_POPUP|WS_CHILD,
10, 10,
460,200,hwnd,(HMENU)443,GetModuleHandle(NULL),0);
в "Graphing поле", кажется diappear. как я исправить это
Вы действительно хотите всплывающее окно, а не только детское окно? –
Я просто хотел получить иллюзию того, что это окно с картинкой, без фреймов, поэтому я подумал, что WS_POPUP поможет мне в этом. –
Думаю, вам будет лучше с WS_CHILD и, возможно, 'WS_BORDER', если вы хотите, чтобы вокруг него была тонкая линия. В любом случае вы не можете использовать 'WS_POPUP' и' WS_CHILD' вместе, как в вашем коде, - [см. Здесь] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600 (v = vs.85) .aspx). –