一: 打开图片文件
CString strDefaluse, strFile;
strDefaluse = "整体背景图";
strFile = "JPEG文件(*.jpg)|*.jpg|BMP文件(*.bmp)|*.bmp|PNG文件|*.png|所有格式(*.*)";
CFileDialog fDlg(TRUE, 0, strDefaluse, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, strFile, this);
if (fDlg.DoModal() == IDOK)
{
CString path = fDlg.GetPathName();//获得文件路径
}
二 颜色对话框打不开或不显示 程序无反应
COLORREF color = RGB(255, 0, 0); // 颜色对话框的初始颜色为红色
CColorDialog colorDlg(color); // 构造颜色对话框,传入初始颜色值
if (IDOK == colorDlg.DoModal()) // 显示颜色对话框,并判断是否点击了“确定”
{
color = colorDlg.GetColor(); // 获取颜色对话框中选择的颜色值
SetDlgItemInt(IDC_COLOR_EDIT, color); // 在Color编辑框中显示所选颜色值
SetDlgItemInt(IDC_R_EDIT, GetRValue(color)); // 在R编辑框中显示所选颜色的R分量值
SetDlgItemInt(IDC_G_EDIT, GetGValue(color)); // 在G编辑框中显示所选颜色的G分量值
SetDlgItemInt(IDC_B_EDIT, GetBValue(color)); // 在B编辑框中显示所选颜色的B分量值
}
VS2013 运行后 颜色对话框不显示 程序卡住
解决:
将其改成 CMFCColorDialog
COLORREF color = RGB(255, 0, 0); // 颜色对话框的初始颜色为红色
CMFCColorDialog colorDlg(color); // 构造颜色对话框,传入初始颜色值
if (IDOK == colorDlg.DoModal()) // 显示颜色对话框,并判断是否点击了“确定”
{
color = colorDlg.GetColor(); // 获取颜色对话框中选择的颜色值
}
还是不显示
RC资源中需要添加
#if !defined(_AFXDLL)
#include "afxribbon.rc" // MFC ribbon and control bar resources
#endif
添加方法:
用资源视图时, 项目.rc的右键 >"资源包括", 在"编译时指令"中添加, 记得不要加错地方就行了
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\NewControls.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#ifndef _AFXDLL
#include "afxribbon.rc" // Ribbon and control bars
#endif
#endif
三:窗口置顶
SetWindowsPos这个API设置窗口的Z-oder到最顶层,再设置回去。
还有通过把当前窗口设置到底层,然后激活目标窗口等等方法。
还有下面的方法
HWND hCurWnd = NULL;
DWORD dwMyID;
DWORD dwCurID;
hCurWnd = ::GetForegroundWindow();
dwMyID = ::GetCurrentThreadId();
dwCurID = ::GetWindowThreadProcessId(hCurWnd, NULL);
::AttachThreadInput(dwCurID, dwMyID, TRUE);
::SetForegroundWindow(m_hWnd);
::AttachThreadInput(dwCurID, dwMyID, FALSE);