上一篇文章: cppquery:用C++模仿jquery的探索
获取cppquery: https://github.com/coderebot/cppquery
在本文中,我们用绑定的方法来实现一个对话框:将高度和宽度值绑定到一个对话框上,并能够修改。如图
当然,从windows编程上来说,这只是一个非常入门的功能。我们从这里出发,来看看我们能够简化到何种程度。
该窗口只有一个简单的函数来实现:(在文件demo_dialog_get_int_values.cpp)
int gWidth = 300;
int gHeight = 400;
void demo_dialog_get_int_values(HINSTANCE hInst, HWND hParent)
{
//MessageBox(0, _T("Test Get Int Values"), _T("Get Int Value"), 0);
Dialog dialog(hInst, IDD_DIALOG_GETINTVALUES, hParent);
dialog.intNumber(IDC_EDIT_WIDTH).bind(&gWidth);
dialog.intNumber(IDC_EDIT_HEIGHT).bind(&gHeight);
wchar_t szText[100];
if(dialog.doModel())
{
wsprintf(szText, L"Get New Width=%d, Height=%d", gWidth, gHeight);
}
else
{
wsprintf(szText, L"Error!");
}
MessageBox(0, szText, L"Result", 0);
}
首先,我们声明了一个dialog
Dialog dialog(hInst, IDD_DIALOG_GETINTVALUES, hParent);
传递的这些参数,是为了适应模板资源来创建对话框
然后,将变量绑定到对话框的控件上
dialog.intNumber(IDC_EDIT_WIDTH).bind(&gWidth);
dialog.intNumber(IDC_EDIT_HEIGHT).bind(&gHeight);
最后,以模态方式显示对话框
if(dialog.doModel())
然后,我们将它和菜单绑定起来 (cppquerytest.cpp)
window.loadMenu(hInstance, MAKEINTRESOURCE(IDC_CPPQUERY))
.onCommand(IDM_EXIT, BIND(DestroyWindow, window.hwnd()))
.onDestroy(BIND(PostQuitMessage, 0))
.onCommand(IDM_ABOUT, BIND(DoDialogModel,hInstance, window.hwnd(), IDD_ABOUTBOX, about_handles))
//for demos
//for dialog demos
.onCommand(ID_DIALOG_GETINTVALUES, BIND(demo_dialog_get_int_values, hInstance, window.hwnd()))
//end demos
.show(nCmdShow)
.update()
.doModel();
请关注:
.onCommand(ID_DIALOG_GETINTVALUES, BIND(demo_dialog_get_int_values, hInstance, window.hwnd()))