// w32dlib - Win32 Control Helpers // // Copyright (C) 2005 Ian Cowburn (ianc@noddybox.demon.co.uk) // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // ------------------------------------------------------------------------- // #include #include #include #include "dialog.h" #define DATAX_TEST class Test : public W32DLib::Dialog { public: Test() : m_check_data(true) , m_combo_data(2) , m_text_data("Hello") , m_radio1_data(true) , m_radio2_data(false) , m_radio3_data(false) , m_static(this,IDSTATIC1,0) , m_text(this,IDTEXT,&m_text_data) , m_check(this,IDCHECK,&m_check_data) , m_button(this,IDBUTTON,0) , m_quit(this,IDQUIT,0) , m_load(this,IDLOADTXT,0) , m_loadbut(this,IDLOADBUT,0) , m_save(this,IDSAVETXT,0) , m_savebut(this,IDSAVEBUT,0) , m_dir(this,IDDIRTXT,0) , m_dirbut(this,IDDIRBUT,0) , m_combo(this,IDCOMBO,&m_combo_data) , m_radio1(this,IDRADIO1,IDRADIO1,IDRADIO3,&m_radio1_data) , m_radio2(this,IDRADIO2,IDRADIO1,IDRADIO3,&m_radio2_data) , m_radio3(this,IDRADIO3,IDRADIO1,IDRADIO3,&m_radio3_data) { m_button.OnPress (this,static_cast(&Test::OnButton)); m_quit.OnPress (this,static_cast(&Test::OnQuit)); m_check.OnPress (this,static_cast(&Test::OnCheck)); m_text.OnTextChanged (this,static_cast(&Test::OnText)); m_loadbut.OnPress (this,static_cast(&Test::OnLoad)); m_savebut.OnPress (this,static_cast(&Test::OnSave)); m_dirbut.OnPress (this,static_cast(&Test::OnDir)); m_combo.OnSelection (this,static_cast(&Test::OnComboSel)); m_combo.OnDoubleClick (this,static_cast(&Test::OnComboDbl)); m_combo.OnTextChanged (this,static_cast(&Test::OnComboTxt)); m_radio1.OnPress (this,static_cast(&Test::OnRadio)); m_radio2.OnPress (this,static_cast(&Test::OnRadio)); m_radio3.OnPress (this,static_cast(&Test::OnRadio)); SetMenuProc (this,static_cast(&Test::OnMenu)); } virtual ~Test() { } int ResourceID() { return TESTDLG; } virtual void OnInit() { std::cout << "OnInit()" << std::endl; std::cout << "Can be used from a thread:" << (HasMutex() ? "Yes":"No") << std::endl; m_quit.Enable(true); m_combo.Reset(); std::cout << "addstring=" << m_combo.AddString(std::string("Entry 1")) << std::endl; std::cout << "addstring=" << m_combo.AddString("Entry 2") << std::endl; std::cout << "addstring=" << m_combo.AddString("Entry 3") << std::endl; std::cout << "count=" << m_combo.Count() << std::endl; std::cout << "HWND=" << m_combo.GetHWND() << std::endl; #ifdef DATAX_TEST SetData(); #else m_text.SetText("Hello"); m_check.SetState(W32DLib::AutoCheck::eChecked); m_combo.SelectedIndex(2); m_radio1.SetState(); #endif } private: W32DLib::DataX m_check_data; W32DLib::DataX m_combo_data; W32DLib::DataX m_text_data; W32DLib::DataX m_radio1_data; W32DLib::DataX m_radio2_data; W32DLib::DataX m_radio3_data; W32DLib::StaticText m_static; W32DLib::Text m_text; W32DLib::AutoCheck m_check; W32DLib::Button m_button; W32DLib::Button m_quit; W32DLib::Text m_load; W32DLib::Button m_loadbut; W32DLib::Text m_save; W32DLib::Button m_savebut; W32DLib::Text m_dir; W32DLib::Button m_dirbut; W32DLib::ComboBox m_combo; W32DLib::RadioButton m_radio1; W32DLib::RadioButton m_radio2; W32DLib::RadioButton m_radio3; std::string m_loadpath; std::string m_savepath; std::string m_dirpath; BOOL OnQuit(UINT msg, WPARAM wp, LPARAM lp) { std::cout << "Called OnQuit()" << std::endl; Dialog::Close(IDOK); return TRUE; } BOOL OnButton(UINT msg, WPARAM wp, LPARAM lp) { #ifdef DATAX_TEST GetData(); bool check=m_check_data.Bool(); std::string txt=m_text_data.Str(); #else bool check=m_check.GetState(); std::string txt=m_text.GetText(); #endif std::cout << "Called OnButton()" << std::endl; std::cout << "text=" << txt << std::endl; std::cout << "check=" << check << std::endl; m_static.SetText(txt); SetText(txt+" [Title]"); m_combo.AddString(m_combo.GetText()); m_text.AppendText(m_combo.GetText()+"\r\n"); #ifdef DATAX_TEST GetData(); m_radio1_data.Set(false); m_radio2_data.Set(true); m_radio3_data.Set(false); SetData(); #else m_radio2.SetState(); #endif return TRUE; } BOOL OnCheck(UINT msg, WPARAM wp, LPARAM lp) { #ifdef DATAX_TEST GetData(); bool checked=m_check_data.Bool(); #else bool checked=m_check.GetState(); #endif std::cout << "Called OnCheck() - state " << checked << std::endl; std::cout << "move="<< m_quit.MoveBase(this,10+(checked ? 50:0),50,150,18) << std::endl; m_quit.Enable(checked); m_load.ReadOnly(checked); m_save.Enable(!checked); return TRUE; } BOOL OnLoad(UINT msg, WPARAM wp, LPARAM lp) { if (W32DLib::Common::OpenFile(this->GetHWND(), "Select file to open", m_loadpath, "CPP Files\0*.cpp\0Any File\0*.*\0")) { m_load.SetText(m_loadpath); } return TRUE; } BOOL OnSave(UINT msg, WPARAM wp, LPARAM lp) { if (W32DLib::Common::SaveFile(this->GetHWND(), "Select file to save", m_savepath, NULL)) { m_save.SetText(m_savepath); } return TRUE; } BOOL OnDir(UINT msg, WPARAM wp, LPARAM lp) { if (W32DLib::Common::SelectDir(this->GetHWND(), "Select a directory", m_dirpath)) { m_dir.SetText(m_dirpath); } return TRUE; } BOOL OnComboSel(UINT msg, WPARAM wp, LPARAM lp) { int sel=m_combo.SelectedIndex(); std::string str=m_combo.GetString(sel); std::cout << "Called OnComboSel()" << std::endl; std::cout << "Sel:selection=" << sel << " (" << str << ")" << std::endl; std::cout << "Sel:Window::GetText=" << m_combo.GetText() << std::endl; return TRUE; } BOOL OnComboDbl(UINT msg, WPARAM wp, LPARAM lp) { #ifdef DATAX_TEST GetData(); int sel=m_combo_data.Int(); #else int sel=m_combo.SelectedIndex(); #endif std::string str=m_combo.GetString(sel); std::cout << "Called OnComboDbl()" << std::endl; std::cout << "Dbl:selection=" << sel << " (" << str << ")" << std::endl; std::cout << "Dbl:Window::GetText=" << m_combo.GetText() << std::endl; return TRUE; } BOOL OnComboTxt(UINT msg, WPARAM wp, LPARAM lp) { std::cout << "Called OnComboSel()" << std::endl; std::cout << "Txt:Window::GetText=" << m_combo.GetText() << std::endl; return TRUE; } BOOL OnText(UINT msg, WPARAM wp, LPARAM lp) { std::cout << "Called OnText()" << std::endl; std::cout << "OnText::GetText=" << m_text.GetText() << std::endl; return TRUE; } BOOL OnMenu(UINT msg, WPARAM wp, LPARAM lp) { int cmd=LOWORD(wp); std::cout << "Menu command " << cmd << std::endl; switch(cmd) { case IDMENUQUIT: Dialog::Close(IDCANCEL); break; default: break; } return TRUE; } BOOL OnRadio(UINT msg, WPARAM wp, LPARAM lp) { #ifdef DATAX_TEST GetData(); bool radio1=m_radio1_data.Bool(); bool radio2=m_radio2_data.Bool(); bool radio3=m_radio3_data.Bool(); #else bool radio1=m_radio1.GetState(); bool radio2=m_radio2.GetState(); bool radio3=m_radio3.GetState(); #endif std::cout << "OnRadio" << std::endl; std::cout << "radio1=" << radio1 << std::endl; std::cout << "radio2=" << radio2 << std::endl; std::cout << "radio3=" << radio3 << std::endl; return TRUE; } }; static void ReadInt(const char *mode, W32DLib::Registry& r, const char *name) { unsigned i; bool res=r.Read(name,i); std::cout << "ReadInt(mode=" << mode << ") res=" << res << " val=" << i << std::endl; } static void ReadStr(const char *mode, W32DLib::Registry& r, const char *name) { std::string i; bool res=r.Read(name,i); std::cout << "ReadStr(mode=" << mode << ") res=" << res << " val=" << i << std::endl; } static void WriteInt(const char *mode, W32DLib::Registry& r, const char *name) { unsigned i=666; bool res=r.Write(name,i); std::cout << "WriteInt(mode=" << mode << ") res=" << res << std::endl; } static void WriteStr(const char *mode, W32DLib::Registry& r, const char *name) { std::string i("Hello World"); bool res=r.Write(name,i); std::cout << "WriteInt(mode=" << mode << ") res=" << res << std::endl; } int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { Test t; INT_PTR i; W32DLib::Common::Initialise(); #ifdef DATAX_TEST std::cout << "DATAX_TEST enabled" << std::endl; #endif W32DLib::Registry rw(HKEY_CURRENT_USER,"Software\\Noddybox\\w32dlibtest",false); W32DLib::Registry rd(HKEY_CURRENT_USER,"Software\\Noddybox\\w32dlibtest"); ReadInt("rw",rw,"int"); ReadStr("rw",rw,"str"); ReadInt("ro",rd,"int"); ReadStr("ro",rd,"str"); WriteInt("rw",rw,"int"); WriteStr("rw",rw,"str"); WriteInt("ro",rd,"int"); WriteStr("ro",rd,"str"); i=t.ShowModal(hInstance,NULL); if (i==IDOK) { std::cout << "res=IDOK" << std::endl; } else if (i==IDCANCEL) { std::cout << "res=IDCANCEL" << std::endl; } else { std::cout << "res=" << i << std::endl; } return 0; }