MFC 小知识六

 

一: 打开图片文件

 

	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);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水迎朝阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值