随笔分类 - Windows程序设计学习
摘要:1、使用画刷将整个界面初始化为黑色 wndclass.hbrBackground = CreateSolidBrush(0); 2、WM_CREATE创建窗口的时候 注意,在hwndRect的创建风格时候使用SS_WHITERECT 在msdn上面的描述是这样的: Specifies a recta
阅读全文
摘要:不小心看到网上很多关于sizeof的是表达式还是运算符之类的争论。其实LZ也没法给出相应的结论。还是就说说它的特性跟用法吧!https://msdn.microsoft.com/en-us/library/4s7x1k91.aspx一、sizeof是在编译的时候就计算所占的空间大小,也就是说在给定的...
阅读全文
摘要:#define SubclassWindow(hwnd, lpfn) \ ((WNDPROC)SetWindowLongPtr((hwnd), GWLP_WNDPROC, (LPARAM)(WNDPROC)(lpfn)))从该宏可以看出是调用SetWindowLongPtr...
阅读全文
摘要:1、在程序中尽量少用void 作为返回,最好不用void2、在BOOL中,判断是否正确,最好用 != FALSE 而不是==TRUE 在windows中BOOL是32位的整数,所以在返回的时候,有可能返回除了FALSE 和TRUE的其他值3、在handle中,大部分在创建一个句柄失败的时候返回NUL...
阅读全文
摘要:这几天看了编程之美的前几页,介绍了一些关于时间的函数1、CTime:在CTime获取当前的时间,一般用CTime tm = CTime::GetCurrentTime();来获取当前的时间。然后通过tm 可以读取到各种各样的时间。如果想计算两个时间段之间的时间差,可以使用CTimeSpan span...
阅读全文
摘要:HBRUSH CScheduleDialog::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->m_hWnd == GetDlgItem(IDC_STATICSCHEDULEINIT)->m_hWnd) { pDC->SetBkColor(354756); //pDC->SelectObject(&m_f) return m_brush; } ...
阅读全文
摘要:在进行图像的处理的时候,有时候需要进行图像的mask操作。以下是在windows程序设计第五版里面抄下来的。 1 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 2 { 3 static HBITMAP hBitmapImag, hBitmapMask; 4 static HINSTANCE hInstance; 5 static int cxClient, cyClient, cxBitmap, cyBitmap; 6 BITMAP bitmap; ...
阅读全文
摘要:在CDrawMenu类中重写了两个函数 DrawItem和MeasureItem。在MeasureItem中可以设置的有LPMEASUREITEMSTRUCT。typedef struct tagMEASUREITEMSTRUCT { UINT CtlType; UINT CtlID; UINT itemID; UINT itemWidth; UINT itemHeight; DWORD itemData} MEASUREITEMSTRUCT;对于CtlType这个参数,在这个函数里面不用设置,因为这个是ODT_MENUitemID是记录设置进来重绘的菜单项的ID号接下...
阅读全文
摘要:学过设计模式的人肯定都学过类的单例模式。而我这里要总结的是关于程序的单例模式1.首先建立一个CRunOnce类如下所示:class CRunOnce{ class CParameter { public: HWND m_hWnd; CString m_str; };public: BOOL IsFirstRun(); void CallInMainFrm(const CDialog *pFrm); void SetPropName(const CString &strPropName);private: CString...
阅读全文
摘要:今天学习了关于菜单的创建。1.拖取一个菜单,进行编辑想要创建的每个菜单项。记录每个菜单项的ID在要菜单弹出的地方进行如下的操作:1 CMenu menu;2 menu.LoadMenu(IDR_MENU1);3 CMenu *pMenu = menu.GetSubMenu(0);4 if (!m_pPackageRfid->IsUseable())5 {6 for (int i = ID_INVSTART; i EnableMenuItem(i, MF_GRAYED);8 }9 pMenu->TrackPopupMenu(TPM_LEFTALIGN, m_Point.x, m_Po
阅读全文
摘要:当A程序在后台运行,B程序是当前的焦点时。如何触发A程序的按钮,向B程序写数据?一个很简单的方法就是用钩子这个在msdn上面也是有的,需要的时候可以到上面去查看。g_hKeyBoard= SetWindowsHookEx( WH_KEYBOARD_LL ,KeyBoardProc, GetModuleHandle(NULL), 0 );这里我是勾取键盘的消息。LRESULT CALLBACK CAutoUHFDemoDlg::KeyBoardProc( int nCode, WPARAM wParam, LPARAM lParam ){ if (nCode >= 0) { ...
阅读全文
摘要:1 int CDECL MessageBoxPrintf(TCHAR *szCaption, TCHAR *szFormat, ...) 2 { 3 TCHAR szBuffer[1024]; 4 va_list pArgList; 5 6 va_start(pArgList, szBuffer); 7 _vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), 8 szFormat, pArgList); 9 va_end(pArgList);10 return Mess...
阅读全文

浙公网安备 33010602011771号