WordPress 系统的问题
1. 升级到2.1之后,发现WYSIWYG编辑器有点问题,段落前的空格总是没有
2. 用windows live writer不能发布嵌入的图片
code.screen, div.codescreen{
font-family: monospace;
font-size: 1em;
display: block;
padding: 10px;
border: 1px solid #bbb;
background-color: #eee;
color: #000;
overflow: auto;
border-radius: 2.5px;
-moz-border-radius: 2.5px;
margin: 0.5em 2em;
}
Although many people don’t like MFC, sometimes we have to use it. This article presents a sample to describe how to implement height adjustment and owner drawing for HeaderControl of ListControl.
Header file:
class CSkinManager; class COwnerDrawHeaderCtrl : public CHeaderCtrl { public: COwnerDrawHeaderCtrl(); protected: virtual void DrawItem(LPDRAWITEMSTRUCT); protected: //{{AFX_MSG(COwnerDrawHeaderCtrl) afx_msg LRESULT OnLayout(WPARAM wParam, LPARAM lParam); afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: CSkinManager &m_skinManager; };
Source file:
COwnerDrawHeaderCtrl::COwnerDrawHeaderCtrl() :m_skinManager(CPootaoClientService::Instance().GetSkinManager()) { }; BEGIN_MESSAGE_MAP(COwnerDrawHeaderCtrl, CHeaderCtrl) //{{AFX_MSG_MAP(COwnerDrawHeaderCtrl) ON_MESSAGE(HDM_LAYOUT, OnLayout) ON_WM_PAINT() ON_WM_ERASEBKGND() //}}AFX_MSG_MAP END_MESSAGE_MAP() LRESULT COwnerDrawHeaderCtrl::OnLayout( WPARAM wParam, LPARAM lParam ) { HDLAYOUT* pLayout = ( HDLAYOUT* ) lParam; // cast the lParam pLayout->pwpos->hwnd = GetSafeHwnd (); // populate WINDOWPOS struct pLayout->pwpos->hwndInsertAfter = HWND_TOP; pLayout->pwpos->flags = SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED; int nHdrBottom = m_skinManager.m_sizeHeaderBackground.cy; pLayout->pwpos->x = pLayout->prc->left; pLayout->pwpos->y = 0; pLayout->pwpos->cx = pLayout->prc->right - pLayout->prc->left; pLayout->pwpos->cy = nHdrBottom; pLayout->prc->top = nHdrBottom; return TRUE; } void COwnerDrawHeaderCtrl::DrawItem(LPDRAWITEMSTRUCT) { } BOOL COwnerDrawHeaderCtrl::OnEraseBkgnd(CDC* pDC) { return FALSE; } void COwnerDrawHeaderCtrl::OnPaint() { CPaintDC dc(this); HDC dcMem = dc.m_hDC; CRect rectWindow; GetClientRect(&rectWindow); HFONT hOldFont = (HFONT)SelectObject(dcMem, GetStockObject(DEFAULT_GUI_FONT)); ::SetBkColor(dcMem, GetSysColor(COLOR_WINDOW)); SetBkMode(dcMem, TRANSPARENT); //draw the contents to a memory device context HDC dcMemBk = ::CreateCompatibleDC(dc.m_hDC); HBITMAP hOldBitmapBk = (HBITMAP)SelectObject(dcMemBk, m_skinManager.m_hBmpHeaderBackground); int rightMost = 0; for (int i=0; i<GetItemCount(); i++) { HDITEM hdi; TCHAR lpBuffer[256]; hdi.mask = HDI_TEXT | HDI_FORMAT | HDI_IMAGE | HDI_ORDER; hdi.pszText = lpBuffer; hdi.cchTextMax = 256; GetItem(i, &hdi); CRect rcItem; GetItemRect(i, &rcItem); SelectObject(dcMemBk, m_skinManager.m_hBmpHeaderSep); BitBlt(dcMem , rcItem.left, rcItem.top , m_skinManager.m_sizeHeaderSep.cx, m_skinManager.m_sizeHeaderSep.cy , dcMemBk, 0, 0, SRCCOPY); SelectObject(dcMemBk, m_skinManager.m_hBmpHeaderBackground); StretchBlt(dcMem , rcItem.left + 1, rcItem.top , rcItem.Width()-1, rcItem.Height() , dcMemBk , 0, 0, m_skinManager.m_sizeHeaderBackground.cx, m_skinManager.m_sizeHeaderBackground.cy , SRCCOPY); SelectObject(dcMemBk, m_skinManager.m_hBmpHeaderSep); BitBlt(dcMem , rcItem.right, rcItem.top , m_skinManager.m_sizeHeaderSep.cx, m_skinManager.m_sizeHeaderSep.cy , dcMemBk, 0, 0, SRCCOPY); rightMost = max(rightMost, rcItem.right); DRAWITEMSTRUCT DrawItemStruct; GetItemRect(i, &rcItem); DrawItemStruct.CtlType = 100; DrawItemStruct.hDC = dc.GetSafeHdc(); DrawItemStruct.itemAction = ODA_DRAWENTIRE; DrawItemStruct.hwndItem = GetSafeHwnd(); DrawItemStruct.rcItem = rcItem; DrawItemStruct.itemID = i; DrawItem(&DrawItemStruct); // Draw the items text using the text color. COLORREF crOldColor = ::SetTextColor(dcMem, RGB(0x4f,0x4f,0x4f)); SetBkMode(dcMem, TRANSPARENT); UINT uFormat = DT_SINGLELINE|DT_VCENTER|DT_NOPREFIX|DT_END_ELLIPSIS; if( hdi.fmt & HDF_CENTER) uFormat |= DT_CENTER; else if( hdi.fmt & HDF_RIGHT) uFormat |= DT_RIGHT; else uFormat |= DT_LEFT; CRect rectText(rcItem); CPoint ptImage(0, 0); CImageList *imageList = NULL; if (hdi.fmt & HDF_IMAGE && (imageList = GetImageList()) != NULL) { IMAGEINFO imageInfo; if (imageList->GetImageInfo(hdi.iImage, &imageInfo)) { if (!(hdi.fmt & HDF_BITMAP_ON_RIGHT)) { ptImage = rcItem.TopLeft(); ptImage.x += 4; ptImage.y = rcItem.top + (rcItem.Height()-(imageInfo.rcImage.bottom-imageInfo.rcImage.top))/2; imageList->Draw(&dc, hdi.iImage, ptImage, ILD_TRANSPARENT); rectText.left += imageInfo.rcImage.right-imageInfo.rcImage.left+4; } else { rectText.right -= imageInfo.rcImage.right-imageInfo.rcImage.left+4; } } ::SetTextColor(dcMem, RGB(0x00,0x00,0x00)); } rectText.DeflateRect(4, 2, 4, 2); int nTextSize = ::DrawText(dcMem, lpBuffer, lstrlen(lpBuffer), &rectText, uFormat); ::SetTextColor(dcMem, crOldColor); if (hdi.fmt & HDF_IMAGE && imageList != NULL) { IMAGEINFO imageInfo; if (hdi.fmt & HDF_BITMAP_ON_RIGHT && imageList->GetImageInfo(hdi.iImage, &imageInfo)) { CSize sizeText; GetTextExtentPoint(dcMem, lpBuffer, lstrlen(lpBuffer), &sizeText); ptImage = CPoint(min(rectText.right + sizeText.cx + 16, rcItem.left + rcItem.Width()-(imageInfo.rcImage.right-imageInfo.rcImage.left)-4) , (rcItem.Height()-(imageInfo.rcImage.bottom-imageInfo.rcImage.top))/2); imageList->Draw(&dc, hdi.iImage, ptImage, ILD_TRANSPARENT); } } } SelectObject(dcMemBk, m_skinManager.m_hBmpHeaderBackground); StretchBlt(dcMem , rightMost+1, 0 , rectWindow.Width()-rightMost-1, rectWindow.Height() , dcMemBk , 0, 0, m_skinManager.m_sizeHeaderBackground.cx, m_skinManager.m_sizeHeaderBackground.cy , SRCCOPY); SelectObject(dcMemBk, hOldBitmapBk); DeleteDC(dcMemBk); }
During redhat is booting, system will detect new hardwares automatically. If you choose “Keep configuration” or “Do nothing”, system may not run correctly. Don’t regret, run “/usr/sbin/kudzu” under terminal, new hardwares and removed hardwares will be detected again, then you will have another chance to make a better decision.
昨晚给大黄同学庆生,fb地点为中关村广场金融中心的焦叶泰餐厅,在鼎好的西南。吃得还好,关键是氛围很不错,有好几个长得很原汁原味的泰国人拿着饭勺当麦克风唱歌跳舞,蛮好听的。有个女的问我们are you chinese,难道我们长得不像?她说她是Philippine。呵呵,让我这个思想不正的人想到菲佣了,实在不好意思了。
第一次接触cygwin(http://cygwin.com/)已经是5年前了。windows的优点就是:傻瓜式,在windows下拥有一个linux环境还是很酷的。譬如查找文件内容,习惯了用grep的会很讨厌用windows的explorer自带的搜索功能,太弱智了,而且bug不老少的,记得有次我好心好意地写邮件给M$说明bug情况,他们居然回邮件啥都不说就问我要客户号,晕啊,扯远了……
cygwin提供了一个叫做cygwin1.dll的dll,这个dll提供了linux API模拟层。很多linux上常用的工具都能基于cygwin上运行,譬如make、gcc等等,甚至gnome。
远程linux上运行一些程序譬如oracle的安装程序需要图形界面时,用cygwin就能轻松搞定。
先在本地启动X服务器:
$ XWin.exe -ac -multiwindow &
再在远程linux上设置环境变量:
$ export DISPLAY=:0.0
之后就可在远程linux上运行程序,在本地的窗口中操作程序的图形界面了。
如果想操作远程linux的桌面:
本地运行:
$ XWin.exe -ac &
再远程linux上设置好DISPLAY之后,运行
$ gnome-wm & # 这是窗口管理器
$ gnome-panel & # 这是gnome的任务条之类的管理程序
现在已经是DVD时代了,带着5张安装盘,安装的时候还得换来换去的觉得太麻烦,于是考虑做个DVD的安装盘。网上的资料都是说的在linux下做的,有点麻烦。在这儿记录一下如何在windows做:
1. 准备数据目录:
mkdir DVD
2. 用daemon-tools虚拟光驱mount上4个iso文件(我现在用的v4.03最多只能虚拟出4个光驱)。从第5张到第2张分别对应l、m、n和o盘。运行命令:
rsync -aurv /cygdrive/{l,m,n,o}/* DVD/
再在l盘mount第1张盘之后运行命令:
rsync -aurv /cygdrive/l/* DVD/
3. 将第一张盘中的.discinfo文件拷到DVD目录下,并将第4行修改为:
1,2,3,4,5
4. 用magicISO新建一个iso,从DVD\isolinux\isolinux.bin文件生成启动信息,把DVD目录下所有文件加进来。然后存盘。
Powered by WordPress