diff --git a/.gitignore b/.gitignore index 6c0f1e3..ac08bdc 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ G3DTest.suo G3DTest.suo stderr.txt desktop.ini +main.cpp diff --git a/Demo.h b/Demo.h index 59b8388..dc0b16e 100644 --- a/Demo.h +++ b/Demo.h @@ -1,6 +1,7 @@ #pragma once #include #include "CameraController.h" +#include "PropertyWindow.h" class Demo { // : public GApp { public: @@ -45,6 +46,7 @@ class Demo { // : public GApp { HWND _hwndToolbox; HWND _buttonTest; HWND _hwndRenderer; + PropertyWindow* _propWindow; protected: Stopwatch m_graphicsWatch; Stopwatch m_logicWatch; diff --git a/PropertyWindow.cpp b/PropertyWindow.cpp new file mode 100644 index 0000000..8f8ae6f --- /dev/null +++ b/PropertyWindow.cpp @@ -0,0 +1,87 @@ +#include +#include "WindowFunctions.h" +#include "propertyGrid.h" +#include "resource.h" +#include "PropertyWindow.h" + +LRESULT CALLBACK PropProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + PropertyWindow *propWind = (PropertyWindow *)GetWindowLongPtr(hwnd, GWL_USERDATA); + if (propWind==NULL) + { + return DefWindowProc(hwnd, msg, wParam, lParam); + } + switch(msg) + { + case WM_SIZE: + { + propWind->onResize(); + } + break; + default: + return DefWindowProc(hwnd, msg, wParam, lParam); + } + return 0; +} + +bool PropertyWindow::onCreate(int x, int y, int sx, int sy, HMODULE hThisInstance) { + + if (!createWindowClass("propHWND",PropProc,hThisInstance)) + return false; + _hwndProp = CreateWindowEx( + WS_EX_TOOLWINDOW, + "propHWND", + "Prop Test", + WS_VISIBLE | WS_POPUPWINDOW | WS_THICKFRAME | WS_CAPTION, + CW_USEDEFAULT, + CW_USEDEFAULT, + 300, + 660, + NULL, // parent + NULL, // menu + hThisInstance, + NULL + ); + + _propGrid = New_PropertyGrid(_hwndProp,IDC_PROPERTYGRID); + + PROPGRIDITEM pItem; + PropGrid_ItemInit(pItem); + + pItem.lpszCatalog="Test"; + pItem.lpszPropName="Test2"; + pItem.lpszzCmbItems="What"; + pItem.lpszPropDesc="Description"; + pItem.lpCurValue=0; + + pItem.iItemType=PIT_EDIT; + PropGrid_Enable(_propGrid,true); + ShowWindow(_propGrid,SW_SHOW); + PropGrid_AddItem(_propGrid,&pItem); + PropGrid_SetItemHeight(_propGrid,20); + PropGrid_ShowToolTips(_propGrid,TRUE); + PropGrid_ShowPropertyDescriptions(_propGrid,TRUE); + PropGrid_ExpandAllCatalogs(_propGrid); + + SetWindowLongPtr(_propGrid,GWL_USERDATA,(LONG)this); + _redraw(_hwndProp); + + return true; +} + +PropertyWindow::PropertyWindow(int x, int y, int sx, int sy, HMODULE hThisInstance) { + onCreate(x, y, sx, sy, hThisInstance); +} + +void PropertyWindow::onResize() +{ + _redraw(_hwndProp); +} + +void PropertyWindow::_redraw(HWND hwnd) +{ + RECT rect; + GetClientRect(hwnd,&rect); + SetWindowPos(_propGrid, NULL, 0, 0, rect.right, rect.bottom, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); +} + diff --git a/PropertyWindow.h b/PropertyWindow.h new file mode 100644 index 0000000..34eae0c --- /dev/null +++ b/PropertyWindow.h @@ -0,0 +1,12 @@ +#pragma once + +class PropertyWindow { +public: + PropertyWindow(int x, int y, int sx, int sy, HMODULE hThisInstance); + bool onCreate(int x, int y, int sx, int sy, HMODULE hThisInstance); + void onResize(); +private: + HWND _propGrid; + HWND _hwndProp; + void _redraw(HWND hwnd); +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp index 4d7ade6..095b4a1 100644 --- a/main.cpp +++ b/main.cpp @@ -38,7 +38,7 @@ #include "ax.h" #include #include "IEBrowser.h" -#include "propertyGrid.h" +#include "PropertyWindow.h" #include #if G3D_VER < 61000 @@ -141,7 +141,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w SetWindowLongPtr(_hWndMain,GWL_USERDATA,(LONG)this); SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); - + _propWindow = new PropertyWindow(0,0,200,640,hThisInstance); IEBrowser* webBrowser = new IEBrowser(_hwndToolbox); webBrowser->navigateSyncURL(L"http://scottbeebiwan.tk/g3d/toolbox/"); } @@ -1349,8 +1349,6 @@ void Boop() } - - LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); @@ -1579,11 +1577,6 @@ void Demo::onCreate(HWND parentWindow) //SetWindowLongPtr(hwndMain,GWL_USERDATA,(LONG)&demo); } -void openProperties(Instance inst) -{ - //Open the properties window and feed either the selected instance or the datamodel itself if no instance is selected -} - int main(int argc, char** argv) { try{ hresult = OleInitialize(NULL); @@ -1616,63 +1609,13 @@ int main(int argc, char** argv) { settings.window.center = true; HMODULE hThisInstance = GetModuleHandle(NULL); - if (!createWindowClass("propHWND",WndProc,hThisInstance)) - return false; if (!createWindowClass("mainHWND",WndProc,hThisInstance)) return false; if (!createWindowClass("toolboxHWND",ToolboxProc,hThisInstance)) return false; if (!createWindowClass("G3DWindow",G3DProc,hThisInstance)) return false; - - HWND hwndProp = CreateWindowEx( - WS_EX_TOOLWINDOW, - "propHWND", - "PropertyGrid", - WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX, - CW_USEDEFAULT, - CW_USEDEFAULT, - 300, - 660, - NULL, // parent - NULL, // menu - hThisInstance, - NULL - ); - ShowWindow(hwndProp,SW_SHOW); - - - HWND propGrid = New_PropertyGrid(hwndProp, 1000); - //InitPropertyGrid(GetModuleHandle(NULL)); - - PROPGRIDITEM pItem; - PropGrid_ItemInit(pItem); - - pItem.lpszCatalog="Test"; - pItem.lpszPropName="Test2"; - pItem.lpszzCmbItems="What\0\0"; - pItem.lpszPropDesc="Description"; - pItem.iItemType = PIT_COMBO; - pItem.lpCurValue=0; - //PROPGRIDITEM FauxExplorerItem; - //PropGrid_ItemInit(FauxExplorerItem); - //FauxExplorerItem.lpszCatalog="Test"; - //FauxExplorerItem.lpszPropName = "Editable Combo Field"; - //FauxExplorerItem.lpszzCmbItems = "Test1\0Test2\0Test3"; - //FauxExplorerItem.lpszPropDesc = "Press F4 to view drop down."; - //FauxExplorerItem.iItemType = PIT_EDITCOMBO; - //FauxExplorerItem.lpCurValue = 1; - //PropGrid_AddItem(propGrid, &FauxExplorerItem); - pItem.iItemType=PIT_EDIT; - - ShowWindow(propGrid,SW_SHOW); - PropGrid_AddItem(propGrid,&pItem); - PropGrid_SetItemHeight(propGrid, 20); - PropGrid_ShowToolTips(propGrid, TRUE); - PropGrid_ShowPropertyDescriptions(propGrid, TRUE); - PropGrid_ExpandAllCatalogs(propGrid); - PropGrid_Enable(propGrid,true); HWND hwndMain = CreateWindowEx( WS_EX_ACCEPTFILES, "mainHWND", diff --git a/resource.h b/resource.h index c955883..b6267f8 100644 --- a/resource.h +++ b/resource.h @@ -3,6 +3,7 @@ // Used by Dialogs.rc // #define IDI_ICON1 102 +#define IDC_PROPERTYGRID 2000 // Next default values for new objects //