摘要: 摘自MSDN,其中GetEncoderClsid 第一个参数可为L"image/bmp"L"image/jpeg"L"image/gif"L"image/tiff"L"image/png"#include #include #include using namespace Gdiplus;int GetEncoderClsid(const WCHAR* format, CLSID* pClsid);int main() { // Initialize GDI+. GdiplusStartupIn 阅读全文
posted @ 2014-03-22 09:13 琼' 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 最近用WTL重写CGdipButton。从ButtonST中将CtoolTipCtrl的相关代码转过来,发现一个问题:ToolTip可以显示,鼠标移开后再移动到button上也可以再次显示,但是按下button或者等待tootip自动消失后,tooptip就不会再显示了。。。郁闷了几天今天偶然看到MSDN论坛的一个答复,(http://social.msdn.microsoft.com/Forums/en-US/dfea9abc-8535-4a43-918a-a78f88b77c70/tooltip-does-not-appear-after-click?forum=winforms)我又喷血 阅读全文
posted @ 2014-03-20 16:24 琼' 阅读(934) 评论(0) 推荐(0) 编辑
摘要: 在对话框上放一个StaticText控件后如果文字长度不能铺满控件的 rect,如下:那么运行时会出现如下效果通过MSG_WM_CTLCOLORSTATIC消息修改static控件背景色模式为透明HBRUSH CTestView::OnCtlColorStatic(CDCHandle dc, CSt... 阅读全文
posted @ 2014-03-09 16:32 琼' 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下:通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口。一个容易想到的方案是,处理鼠标消息WM_LBUTTONDOWN和WM_LBUTTONUP。在OnLButtonUp函数中计算鼠标位置的变化,调用MoveWindow实现窗口的移动。注意,拖动标题栏移动窗口的时候,会出现一个矩形框,它提示了窗口移动的当前位置。当鼠标左键放开的时候,窗口就移动到矩形框所在位置。而我们的实现方案中没有这个功能。要实现此功能,我们必须自己来画这些矩形。事实上,我们没有必要自己来做这件事情,因为 阅读全文
posted @ 2014-03-07 16:57 琼' 阅读(194) 评论(0) 推荐(0) 编辑
摘要: MSG_WM_CREATELRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);MSG_WM_INITDIALOGLRESULT OnInitDialog(HWND hWnd, LPARAM lParam);MSG_WM_COPYDATALRESULT OnCopyData(HWND hWnd, PCOPYDATASTRUCT pCopyDataStruct);MSG_WM_DESTROYvoid OnDestroy();MSG_WM_MOVEvoid OnMove(CPoint point);MSG_WM_SIZEvoid OnSize(UINT n 阅读全文
posted @ 2014-03-07 16:54 琼' 阅读(1009) 评论(0) 推荐(0) 编辑
摘要: 本地目录:void CAutoDelete::DoRecursionLocalDelete(CString& localDirectory) { CFileFind finder; CString strFileName; strFileName.Format("%s\\*.*", localDirectory); BOOL found = finder.FindFile(strFileName); while(found) { found = finder.FindNextFile(); if(finder.IsDots()) { ... 阅读全文
posted @ 2014-02-27 16:30 琼' 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 1.CreateProcess失败,GetLastError返回998,应该是最后两个参数没有初始化导致的。2.要使外部程序隐藏窗口运行,需要将STARTUPINFO的dwFlags指定为STARTF_USESHOWWINDOW,并且将wShowWindow指定为SW_HIDE.3.第2条创建的进程确实是隐藏运行的,但是程序启动时会导致屏幕闪烁,为了避免屏幕闪烁我们应该创建一个桌面并指定给该进程的STARTUPINFO.HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL);AS 阅读全文
posted @ 2014-02-25 13:39 琼' 阅读(777) 评论(0) 推荐(0) 编辑
摘要: 自动完成是个很酷也很实用的功能,比如在浏览器地址栏输入几个字母,相关的记录就会在下拉框中陈列出来。 最近在做公司产品UI部分的改善,原版本是MFC做的,我决定用WTL,于是就遇到自动完成控件的问题。遍寻Internet,WTL版的只找到一个用IEnumString+IE组件实现的,但是其个性化修改比较困难。so我决定自己用WTL改写该控件,在此向原作者Andreas Kapust 致谢! 该控件包含四个文件:ACEdit.h, ACEdit.cpp, ACListWnd.h 和 ACListWnd.cpp。使用时用CACEdit 声明一个变量并将其与Edit控件或ComboBox控件建... 阅读全文
posted @ 2014-02-24 16:17 琼' 阅读(1876) 评论(1) 推荐(1) 编辑
摘要: 今天重装系统,装完VS2010后,如往常一样安装文档,却弹出如下错误"Could not create the local store in the specified folder....."开始以为是当前用户读写硬盘权限问题,直至安装完文档后,我还是不明白这是什么原因,下面说下安装文档的步骤:一。运行regedit打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v1.0,将LocalStore的值改为你希望帮助文档安装的目的路径当然可以手动删除原目录(我有系统洁癖强迫症)。在开始菜单中找到 Manage Hel 阅读全文
posted @ 2014-01-23 17:30 琼' 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 定义变参函数时,参数必须用基础类型,如果用std::string会出现莫名错误,原因未知,例如void CTest::test(const std::string& msg, ...) { va_list argList; CHAR szBuffer[1024] = {0}; va_start(argList, msg); // 此处argList解析到的为错误内容 vsprintf_s(szBuffer, 1024, msg, argList); va_end(argList); std::cout << szBuffer << std::endl;}void 阅读全文
posted @ 2014-01-09 09:19 琼' 阅读(327) 评论(0) 推荐(0) 编辑