Ejemplo n.º 1
0
BOOL CHelperDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// Reposition all controls
	//CRect rect;
	//m_treeItems.GetClientRect(&rect);
	//m_nLeftWidth = rect.Width();
	m_nLeftWidth = 158;
	//RepositionDlg();
	
	COLORREF clr(RGB(255, 0, 255));
	m_CloseBtn.SetBitmaps(IDB_CLOSE_LIGHT, clr, IDB_CLOSE_NORMAL,clr);
	m_CloseBtn.DrawBorder(FALSE);
	m_CloseBtn.SetWindowText(L"");

	m_MiniBtn.SetBitmaps(IDB_MINI_LIGHT, clr,IDB_MINI_NORMAL,clr);
	m_MiniBtn.DrawBorder(FALSE);
	m_MiniBtn.SetWindowText(L"");

	m_AlwaysOnTop.SetBitmaps(IDB_PIN_LIGHT,clr,IDB_PIN_NORMAL,clr);
	m_AlwaysOnTop.DrawBorder(FALSE);
	m_AlwaysOnTop.SetWindowText(L"");

	// Add hook control btn(Caption button)
//	static CImageList s_ilPin;
//	s_ilPin.Create(IDB_BITMAP_PIN, 16, 5, RGB(255, 255, 255));
//	AddButton(ID_BUTTON_PIN, 16, 16, s_ilPin.m_hImageList, "Stay visible");
//	OnPinButtonPushed();

	// Add standard icons
	m_treeItems.AddIcon(AfxGetApp()->LoadIcon(IDI_ICON_FOLDER_CLOSE));
	m_treeItems.AddIcon(AfxGetApp()->LoadIcon(IDI_ICON_FOLDER_OPEN));
	m_treeItems.AddIcon(AfxGetApp()->LoadIcon(IDI_ICON_DOCUMENT));

	if(g_nCodePage==1258)
	{
		m_font.CreateFont(
			14, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_STROKE_PRECIS, CLIP_STROKE_PRECIS, 
			DRAFT_QUALITY, VARIABLE_PITCH | FF_SWISS, 
			_T("Arial") );

		m_treeItems.SetFont(&m_font);
	}
	// Refresh item list
	RefreshHelpItems();

	// Go to blank page
	m_webHelper.Navigate(L"about:blank", 0, 0, 0, 0);

	//取得IcustomDoc接口
	//ICustomDoc* pCustDoc = 0;
	//m_webHelper.get_Document()->QueryInterface(&pCustDoc);
	//if(pCustDoc)
	//{
	//	pCustDoc->SetUIHandler(new HelperDocHostUIHandler());
	//	pCustDoc->Release();
	//}

	///设置对话框的背景图片
	SetBitmapStyle(StyleTile);
	SetBitmap(IDB_BITMAP_NEWBKG);
	switch(m_CurShow) {
		case FLAG_SHOW_HELP:
			//m_StaTile.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP_TITLE)));  
			m_StaTile.ShowWindow(SW_SHOW);
			m_StaRank.ShowWindow(SW_HIDE);
			SetWindowText(getInnerString(ISI_TITLE_HELPER));
			break;
		case FLAG_SHOW_PAIHANG:
			m_StaTile.ShowWindow(SW_HIDE);
			m_StaRank.ShowWindow(SW_SHOW);
			//m_StaTile.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP_TITLE)));  
			SetWindowText(getInnerString(ISI_TITLE_PAIHANGBANG));
			break;
		default:
			m_StaTile.ShowWindow(SW_SHOW);
			m_StaRank.ShowWindow(SW_HIDE);
			//m_StaTile.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP_TITLE)));  
			SetWindowText(getInnerString(ISI_TITLE_HELPER));
			break;
	}

	CenterWindow();

	
	m_staSplitVer.ShowWindow(SW_HIDE);

	ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);

	return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
}
Ejemplo n.º 2
0
BOOL CDlg_Cfg_Integrate::OnInitDialog()
{
	CDialog::OnInitDialog();

	TD_SetWindowTextW(GetDlgItem(IDC_STATIC_SYSTEM_GROUP)->GetSafeHwnd(), 
		getInnerString(INNER_XI_TONG_XIN_XI));

	TD_SetWindowTextW(GetDlgItem(IDC_STATIC_SETTING_GROUP)->GetSafeHwnd(), 
		getInnerString(INNER_YOU_XI_SHE_ZHI));


	TD_SetWindowTextW(GetDlgItem(IDC_RADIO_SET_DEF)->GetSafeHwnd(), 
		getInnerString(INNER_SETTING_DEF_DESC));

	TD_SetWindowTextW(GetDlgItem(IDC_RADIO_SET_LOW)->GetSafeHwnd(), 
		getInnerString(INNER_SETTING_LOW_DESC));
	TD_SetWindowTextW(GetDlgItem(IDC_RADIO_SET_MIDDLE)->GetSafeHwnd(), 
		getInnerString(INNER_SETTING_MID_DESC));
	TD_SetWindowTextW(GetDlgItem(IDC_RADIO_SET_HIGH)->GetSafeHwnd(), 
		getInnerString(INNER_SETTING_HIGH_DESC));

	CreateLinkFont(GetSafeHwnd());
	static AX_URL_LNK g_TipsLink = 
	{ 
		"1", 
		NULL, TRUE, 0, 
		getInnerString(INNER_STRING_ZHU_YI),
	};
	
	HWND hTipsWnd = GetDlgItem(IDC_STATIC_TIPS)->GetSafeHwnd();

//	::GetWindowText(hTipsWnd, g_TipsLink.szText, 32);
	SetWindowLong(hTipsWnd, GWL_USERDATA, (LONG)(LONG_PTR)(&g_TipsLink));
	g_TipsLink.m_oldWndProc = (WNDPROC)(LONG_PTR)SetWindowLong(hTipsWnd, GWL_WNDPROC, (LONG)(LONG_PTR)StaticLnkWndProc);

	// TODO:  Add extra initialization here
	CtConfigDlg* pMainWnd = (CtConfigDlg*)(AfxGetApp()->GetMainWnd());
	if(pMainWnd)
	{
		TD_SetWindowTextW(GetDlgItem(IDC_EDIT_INFO)->m_hWnd, gHardwareInfoSystem.getHardwareInfoAsString());
	}

	//Init tooltip
	m_tooltips.Create(this, TTS_NOPREFIX | TTS_ALWAYSTIP);
	m_tooltips.SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
	m_tooltips.ShowWindow(SW_SHOW);

	RECT rect;
	GetDlgItem(IDC_STATIC_TIPS)->GetClientRect(&rect);

    /* INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE */
	TOOLINFO ti;
    ti.cbSize = sizeof(TOOLINFO);
    ti.uFlags = TTF_SUBCLASS;
    ti.hwnd = GetDlgItem(IDC_STATIC_TIPS)->GetSafeHwnd();
    ti.hinst = 0;//AfxGetApp()->m_hInstance;
    ti.uId = 0;
    ti.lpszText = (LPWSTR)getInnerString(INNER_SET_TIPS_DESC);
        // ToolTip control will cover the whole window
    ti.rect.left = rect.left;    
    ti.rect.top = rect.top;
    ti.rect.right = rect.right;
    ti.rect.bottom = rect.bottom;

    /* SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW */
    m_tooltips.SendMessage(TTM_ADDTOOL, 0, (LPARAM)(LPTOOLINFO)&ti);	
	m_tooltips.SetMaxTipWidth(220);
	m_tooltips.SetDelayTime(TTDT_AUTOPOP, 1000000);
	m_tooltips.SetDelayTime(TTDT_INITIAL, 0);

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
Ejemplo n.º 3
0
void CHelperDlg::Refresh(FLAG_SHOW ShowWhat)
{
	static int firstIn = 0;
	if(!firstIn)
	{
		m_CurShow = ShowWhat;
		Create(MAKEINTRESOURCE(g_nCodePage==1258 ? IDD_VN : IDD));
		firstIn++;
	}
	if(m_CurShow!=ShowWhat)
	{	
		m_CurShow = ShowWhat;
		RefreshHelpItems();
		m_webHelper.Navigate(L"about:blank", 0, 0, 0, 0);
		SetBitmapStyle(StyleTile);
		switch(ShowWhat) {
		case FLAG_SHOW_HELP:
			m_StaTile.ShowWindow(SW_SHOW);
			m_StaRank.ShowWindow(SW_HIDE);
			SetWindowText(getInnerString(ISI_TITLE_HELPER));
			break;
		case FLAG_SHOW_PAIHANG:
			m_StaTile.ShowWindow(SW_HIDE);
			m_StaRank.ShowWindow(SW_SHOW);
			SetWindowText(getInnerString(ISI_TITLE_PAIHANGBANG));
			break;
		default:
			m_StaTile.ShowWindow(SW_SHOW);
			m_StaRank.ShowWindow(SW_HIDE);
			SetWindowText(getInnerString(ISI_TITLE_HELPER));
			break;
		}
		
		//CenterWindow();

	}
	DWORD ThreadID1;
	DWORD ThreadID2;
	BOOL nRet =0;
	if(this->m_hWnd == ::GetForegroundWindow())
	{
	}
	else
	{
		ThreadID1 =::GetWindowThreadProcessId(m_hWnd,NULL);
		ThreadID2 =::GetWindowThreadProcessId(m_hWnd,NULL);
		if(ThreadID1!=ThreadID2)
		{
			::AttachThreadInput(ThreadID1, ThreadID2, true);
			nRet=::SetForegroundWindow(m_hWnd);
			
			::AttachThreadInput(ThreadID1, ThreadID2, false);
		}
		else
		{
			nRet=::SetForegroundWindow(m_hWnd);
		}
	}
	if(!nRet)
	{
		bool bAlwaysTop = (GetWindowLong(m_hWnd, GWL_EXSTYLE) & WS_EX_TOPMOST)!=0;
		//	CheckButton(0, bAlwaysTop);

		if(bAlwaysTop)
		{
			::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
		}
		else
		{
			::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
			::SetWindowPos(m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
		}
	}
	if(this->IsIconic())
	{
		this->ShowWindow(SW_RESTORE);
	}
	else
		this->ShowWindow(SW_SHOW);
	this->CenterWindow();	
	if(ShowWhat==FLAG_SHOW::FLAG_SHOW_PAIHANG)
	{
		//设置选中项
		CHelperItem* pItem = CHelperSystem::GetMe()->GetHelpItemSet()->GetRootItem();
		CHelperItem::ChildBuf& theChild = pItem->GetChildBuf();
	   //if(!theChild) return;
		CHelperItem::ChildBuf::iterator it=theChild.begin();
		
		//goto item
		HTREEITEM hItem = (HTREEITEM)((*it).GetUserData());
		if(0 == hItem) return;

		((CHelperDlg*)AfxGetApp()->GetMainWnd())->GotoHelperItem(hItem);
	}
}
Ejemplo n.º 4
0
BOOL CtConfigApp::InitInstance()
{
	// 如果一个运行在 Windows XP 上的应用程序清单指定要
	// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
	//则需要 InitCommonControls()。否则,将无法创建窗口。
	InitCommonControls();

	CWinApp::InitInstance();

	AfxEnableControlContainer();
    
	//首先检测DirectX版本号
	const wchar_t *szDxNeed = L"4.09.00.0904";
	std::string strDxNeed;

    // 获取dx版本
    const wchar_t* szCurrentDXVersion = gHardwareInfoSystem.getDXVersion();
	if(szCurrentDXVersion[0]==0 || wcscmp(szDxNeed, szCurrentDXVersion) > 0)
	{
		CDirectXErrorDlg dlg;
		dlg.DoModal();
        mExitCode = 0xC0DE;
        return FALSE;
	}

	const char* szCmdLine = GetCommandLineA();

	//从游戏运行
	if(strstr(szCmdLine, "-fg") != 0) g_bRunFromGame = TRUE;

    // 获取其他硬件信息
    gHardwareInfoSystem.initSystem();

    // 判断当前显存是否足够
    const float RequiredVideoMemory = 32.0f;
    const float currentFreeVideoMemory = gHardwareInfoSystem.getHardwareInfo().mFreeLocalVideoMemory;
    if ( currentFreeVideoMemory < RequiredVideoMemory )
    {
		wchar_t errorInfoStr[MAX_PATH]={0};

        _snwprintf(errorInfoStr, MAX_PATH, 
			getInnerString(INNER_LOW_VIDEO_MEMORY),
            currentFreeVideoMemory, RequiredVideoMemory );

        if ( IDNO == TD_MessageBoxW( NULL, errorInfoStr, getInnerString(INNER_TITLE), MB_YESNO|MB_ICONQUESTION ) )
        {
            mExitCode = 0xC0DE;
            return FALSE;
        }        
    }

    // 检测显卡驱动版本号
    //const std::string& validateInfoString = gHardwareInfoSystem.validateVideoDriver();

    //if (false == validateInfoString.empty())
    //{
    //    MessageBox(NULL, validateInfoString.c_str(), "《天龙八部》配置程序", MB_OK | MB_ICONERROR);
    //}

	//第一次运行
	DWORD dwType, dwSize=sizeof(DWORD), dwValue=0;
	SHGetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\\SOHU\\FireFox\\TLBB", "RunConfig", 
		&dwType, &dwValue, &dwSize);

	g_bFirstRun = (dwValue != 1);

	//写运行标志
	dwValue = 1;
	SHSetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\\SOHU\\FireFox\\TLBB", 
		"RunConfig", REG_DWORD, &dwValue, sizeof(DWORD));

	//从游戏运行而且也不是第一次运行,退出
	if(g_bRunFromGame && !g_bFirstRun) return FALSE;

	//填充推荐配置
	FillCommendCfg();

	//如果是第一次运行, 删除个人配置文件
	if(g_bFirstRun)
	{
		g_theGameConfigs.DeletePrivateFile();
	}

	//加载所有配置文件
	g_theGameConfigs.LoadAllConfigFile();
	if(!g_theGameConfigs.GetLastestConfig())
	{
		TD_MessageBoxW(NULL, getInnerString(INNER_CANT_OPEN), getInnerString(INNER_TITLE), MB_OK|MB_ICONSTOP);
		return FALSE;
	}

	CtConfigDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: 在此放置处理何时用“确定”来关闭
		//对话框的代码
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: 在此放置处理何时用“取消”来关闭
		//对话框的代码
	}

	// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
	// 而不是启动应用程序的消息泵。
	return FALSE;

}