EVC中常用技巧大全

1、动态改变控件的显示状态
隐藏控件:GetDlgItem(IDC_BUTTON1)->ShowWindow(SW_HIDE);
显示控件:GetDlgItem(IDC_BUTTON1)->ShowWindow(SW_SHOW);
2、隐藏基于MFC对话框应用程序窗口的方法:
1)通常情况下可以使用ShowWindow(SW_HIDE)方法去隐藏窗口,但是使用此功能有一个不足之处是在窗口隐藏之前会出现一个短暂的闪烁,通过下面的方法可以解决:
在C***App::InitInstance()的函数中将以下的这一段注释掉:
C***Dlg dlg;
m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
//   dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
//   dismissed with Cancel
}

// Since the dialog has been closed, return FALSE so that we exit the

//   application, rather than start the application's message pump.
return FALSE;
改换为:
C***Dlg *dlg = new C***Dlg;
m_pMainWnd = dlg;
return dlg->Create(IDD_***_DIALOG);
同时将IDD_***_DIALOG对话框资源的"More Stytles"属性页的Visible属性勾去掉即可。
2)相对比较简单的方法:
隐藏:SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW);  
ModifyStyleEx(0,WS_EX_TOOLWINDOW);      
显示:SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_SHOWWINDOW);  
ModifyStyleEx(0,WS_EX_TOOLWINDOW);      
3、GetModuleFileName
该函数表示获取一个模块文件名。该函数声明如下:
          WINAPI DWORD GetModuleFileName(
HMODULE hModule,
LPWSTR lpFilename,
DWORD nSize);
参数说明如下:
hModule:表示被请求的可执行文件所在文件组的句柄。如果这个参数为NULL,则该方法返回用于创建调用进程的文件路径。
lpFilename:表示一个指针,该指针用于指向填充模块的路径和文件名所在的缓冲区。
nSize:表示用字符的形式指定lpFilename缓冲区的大小。如果路径或者文件的长度超过这个限度,字符串将被截断处理。
返回值:如果返回零,那么表示失败;如果字符串以字符的形式长度复制到缓冲区,那么表示成功。
4、WideCharToMultiByte
该函数变换一个宽字符为一个新的字符串,该新字符可以不从一个多字节设置。该函数声明如下:
int WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar );
参数说明如下:
CodePage:表示执行转换。该参数可以是系统中已安装或者是可用的代码页。也可以指定下表中的任意一个值:

描述

CP_ACP

ANSI代码页

CP_MACCP

不支持

CP_OEMCP

OEM代码页

CP_SYMBOL

不支持

CP_THREAD_ACP

不支持

CP_UTF7

UTF-7代码页

CP_UTF8

UTF-8代码页

dwFlags:表示没有处理的字符,如果没有这样的参数设置,那么这个函数的效率将更高。它的标识常量如下表中描述:

描述

WC_COMPOSITECHECK

将合成参数转换为预先配置的参数

WC_DISCARDNS

在转换的过程中废除非空格

WC_SEPCHARS

在转换的过程中产生分隔符,这是默认的转换方法

WC_DEFAULTCHAR

在转换的过程中用默认的转换方式替换出现的意外

当指定参数为WC_COMPOSITECHECK时,函数转换合成的字符到预先设置的字符。一个合成的字符包括一个字符和一个没有空白的字符,每一个不同的字符包括不同的值。一个预先设置的字符包含一个单一的字符值为一个根或者没有空白的字符组合。在这个字符e中,e是一个根字符,并且重低音标签是非空字符。
当一个应用程序指向WC_COMPOSITECHECK时,它可以使用列表中最后的三个标识(WC_DISCARDNS、WC_SEPCHARS、WC_DEFAULTCHAR)去自定义向预先设置的转换。
在对于宽字节字符串中对于根字符或者没有空白字符组合的没有预设映射,这些标识决定这些函数的行为。仅当设置为WC_COMPOSITECHECK时,后三个参数可以使用。这个函数的默认行为是为没有映射的合成字符生成分开字符(WC_SEPCHARS)。
lpWideCharStr:表示一个指向即将转换的宽字符的指针。
cchWideChar:表示lpWideCharStr参数指向的字符串的Unicode字符串,如果该值为-1,则字符串被假定为空阻止和长度自动计算。
lpMultiByteStr:表示一个指向接收翻译字符串的指针。
cbMultiByte:表示lpMultiByteStr参数指向的缓冲区以字节形式表示的大小。 当该值为0的时候,函数返回缓冲区的的字节数(在这种情况下,lpMultiByteStr缓冲区没有被使用)。
lpDefaultChar:表示当宽字符不能在指定代码页中表示时指向的字符。如果该值为NULL,则将使用一个系统默认的值。如果参数lpDefaultChar和lpUserDefaultChar是NULL时,函数的执行速度将加快。
lpUsedDefaultChar:表示一个指针代表一个默认的字符是否使用。如果一个或者多个宽字符的源字符串在指定的代码页中不能被表示,则该值为TRUE;否则,该值为FALSE。该参数可以设置为NULL。如果参数lpDefaultChar和lpUsedDefaultChar均为NULL,则该函数的速度将加快。
返回值:如果cbMultiByte是非零值,参数lpMultiByteStr指向写入的缓冲区用字节数表示成功。如果cbMultiByte是零,则收到翻译的字符串的缓冲区用字节的形式表示需要的大小表示成功。零表示失败。
5、SpanIncluding方法(CString类)
该方法的声明如下:
CString SpanIncluding(
LPCTSTR lpszCharSet ) const;
该方法表示返回CString类的对象包含参数lpszCharSet中的字符串,如果CString类的对象中第一个字符在lpszCharSet中不存在,那么返回值为空;该方法的返回值为从CString类型对象中第一个字符开始至一个字符不在参数lpszCharSet中(不包含该字符)的字符串。
6、SpanExcluding方法(CString类)
CString SpanExcluding(
LPCTSTR lpszCharSet ) const;
该方法表示返回CString类的对象不包含参数lpszCharSet中的字符串,如果CString类的对象中的第一个字符在lpszCharSet中存在,那么返回值为空;该方法的返回值为从CString类型对象中第一个不在lpszCharSet的字符开始至一个字符在参数lpszCharSet中(不包含该字符)的字符串。

你可能感兴趣的:(null,application,mfc,dialog,button,winapi)