惭愧!又是很久没有更新博客了,理由不多说了!既忙且懒,哈哈!我的原创Nfml中用到一个颜色设定的地方,所以这两天把ChooseColor研究了一下,没想到搞定了!其实挺简单的,就是调用COMMDLG.DLL中的标准windows API 函数而已,不过需要从动态链接库里引用!具体实现如下!
typedef BOOL (APIENTRY* LFCHOOSECOLORPROC) (LPCHOOSECOLOR ); //自定义类型
HINSTANCE g_hLib = 0; //
LFCHOOSECOLORPROC lpfnChooseColor = 0;
void InitColorDialog(void)
{
g_hLib = LoadLibrary (TEXT ("COMMDLG.DLL"));
if(g_hLib)
{
lpfnChooseColor = (LFCHOOSECOLORPROC)GetProcAddress (g_hLib, TEXT ("ChooseColor"));
}
}
void UnInitColorDialog(void)
{
if(g_hLib)
FreeLibrary(g_hLib);
}
COLORREF ColorDialog(void)
{
CHOOSECOLOR cc;
static COLORREF cr[16];
TCHAR szOut[128];
INT rc;
// Initialize color structure.
memset (&cc, 0, sizeof (cc));
memset (&cr, 0, sizeof (cr));
cc.lStructSize = sizeof (cc);
cc.hwndOwner = m_hWnd; //当前窗体的句柄
cc.hInstance = m_hInst; //当前资源句柄
cc.rgbResult = RGB (0, 0, 0);
cc.lpCustColors = cr;
cc.Flags = CC_ANYCOLOR;
rc = (lpfnChooseColor) (&cc);
return cc.rgbResult; //成功返回非0,如果对话框出现点击"X"则返回0
}
WM5 WM6下测试通过!
GOOD LUCK!
本文介绍了如何在VS.net2005中,利用VC++调用COMMDLG.DLL的API函数ChooseColor在Windows Mobile设备上实现颜色选择对话框。通过LoadLibrary和GetProcAddress动态加载函数,然后初始化并显示对话框,最终在WM5和WM6上进行了测试并成功运行。
1176

被折叠的 条评论
为什么被折叠?



