doc_and_tools/tools/apps/hg-helper/DlgMain.cpp

107 lines
2.2 KiB
C++

// DlgIndicator.cpp: 实现文件
//
#include "DlgMain.h"
#include "resource.h"
// CDlgIndicator 对话框
#include "DlgPageAdvConfig.h"
#include "DlgPageErrMsg.h"
dlg_main::dlg_main(HWND parent) : dlg_base(parent, IDD_MAIN), tab_(NULL)
{
create();
}
dlg_main::~dlg_main()
{
}
BOOL dlg_main::handle_message(UINT msg, WPARAM wp, LPARAM lp)
{
wchar_t text[40] = { 0 };
BOOL ret = TRUE;
switch (msg)
{
case WM_INITDIALOG:
on_init_dlg();
UpdateWindow(hwnd());
break;
case WM_COMMAND:
handle_command(HIWORD(wp), LOWORD(wp), (HWND)lp);
break;
case WM_NOTIFY:
ret = on_notify((int)wp, (LPNMHDR)lp);
break;
default:
ret = FALSE;
}
return ret;
}
void dlg_main::handle_command(WORD code, WORD id, HANDLE ctrl)
{
if (id == IDOK || id == IDCANCEL)
PostQuitMessage(0);
}
BOOL dlg_main::on_notify(int ctrl_id, LPNMHDR pnmh)
{
BOOL ret = TRUE;
if (pnmh->hwndFrom == tab_)
{
if (pnmh->code == TCN_SELCHANGING)
ret = FALSE;
else if (pnmh->code == TCN_SELCHANGE)
select_page(TabCtrl_GetCurSel(tab_));
}
return ret;
}
int dlg_main::add_page(const wchar_t* title, dlg_base* dlg)
{
HFONT font = (HFONT)SendMessage(get_item(IDOK), WM_GETFONT, 0, 0);
LOGFONTW lf = { 0 };
GetObjectW(font, sizeof(lf), &lf);
dlg->set_font(font);
return dlg_base::insert_page_to_tab(tab_, dlg, title);
}
dlg_base* dlg_main::select_page(int index)
{
dlg_base* ret = NULL, * cur = NULL;
for (int i = 0; cur = (dlg_base*)dlg_base::get_tab_item_data(tab_, i); ++i)
{
if (i == index)
{
ret = cur;
cur->show(true);
}
else
cur->show(false);
}
return ret;
}
void dlg_main::on_init_dlg(void)
{
dlg_base* page = new dlg_err_msg(hwnd());
RECT r = { 0 };
SetWindowTextW(hwnd(), L"\u626B\u63CF\u4EEA\u9519\u8BEF\u4FE1\u606F\u53CA\u9AD8\u7EA7\u8C03\u8BD5\u914D\u7F6E");
get_item_rect(IDC_STATIC_PAGE, &r, false);
screen_2_client(&r);
tab_ = get_item(IDC_PAGES);
MoveWindow(page->hwnd(), r.left, r.top, RECT_W(r), RECT_H(r), TRUE);
add_page(L"\u9519\u8BEF\u4FE1\u606F", dynamic_cast<dlg_base*>(page));
page = new dlg_adv_cfg(hwnd());
MoveWindow(page->hwnd(), r.left, r.top, RECT_W(r), RECT_H(r), TRUE);
add_page(L"\u9AD8\u7EA7\u914D\u7F6E", dynamic_cast<dlg_base*>(page));
select_page(0);
}