分类归档:VC++

WINCE 6.0 系统的时间设置

1、使用API函数SetLocalTime进行本地时间设置。 1)SetLocalTime函数的原型: BOOL SetLocalTime( const SYSTEMTIME *lpSystemTime ); 输入参数lpSystemTime是一个SYSTEMTIME类型的参数,如果设置成功,返回true,本地时间将会变成lpSystemTime所指定的时间,否则返回false。 看一下SYSTEMTIME的格式: typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
各成员的含义不用解释了吧。 2)我们来看一下如何利用SYSTEMTIME结构体和SetLocalTime函数进行本地时间的设置。

 SYSTEMTIME st;
st.wYear = 2007;
st.wMonth = 11;
st.wDay = 24;
st.wHour = 3;
st.wMinute = 14;
st.wSecond = 0;

 st.wMilliseconds = 0;

 SetSystemTime(&st);

对比一下SYSTEMTIME结构体,可以发现,除wDayOfWeek成员之外,其它各成员都进行赋值了,甚至连wMilliseconds。使用这种方式进行系统时间设置时,会忽略wDayOfWeek成员,可以不进行该成员的赋值(即使你赋值了也不会被考虑的),但其它所有成员都必须时行赋值,否则无法成功地进行时间设置。

3)如果只想对其中的几项进行设置的话,可以先使用GetLocalTime函数来获取当前本地时间,然后再对相应的项进行修改,如下:

SYSTEMTIME st;
GetLocalTime(&st);
st.wHour = 3;
SetLocalTime(&st);

read more

VC中MessageBox的常见用法

一、关于MessageBox
       消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合。
      1.MessageBox(“这是一个最简单的消息框!”);
       2.MessageBox(“这是一个有标题的消息框!”,”标题”);
       3.MessageBox(“这是一个确定 取消的消息框!”,”标题”, MB_OKCANCEL );
      4.MessageBox(“这是一个警告的消息框!”,”标题”, MB_ICONEXCLAMATION );
      5.MessageBox(“这是一个两种属性的消息框!”,”标题”, MB_ICONEXCLAMATION|MB_OKCANCEL );

      6.if(MessageBox(“一种常用的应用”,”标题”,MB_ICONEXCLAMATION|MB_OKCANCEL)==IDCANCEL)
read more

MFC快捷菜单、工具条、对话框、标题栏

建立单文档应用程序

在窗格显示时间(Frame类里)
CTime time;
time = CTime::GetCurrentTime();
CString s=time.Format(“%H:%M:%S”);
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_TIME),s);
CFrameWnd::OnTimer(nIDEvent);

点击弹出对话框(view类里)
CModalDialog *dlg = new CModalDialog;
dlg->Create(IDD_DIALOG,this);
dlg->ShowWindow(SW_SHOW);

右键菜单(快捷菜单)(view类里)
CMenu popup;
popup.LoadMenu(IDR_MENU_RIGHT);
CMenu *pop=popup.GetSubMenu(0);
ClientToScreen(&point);
pop->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,point.x,point.y,this);
CView::OnRButtonDown(nFlags, point);

修改标题栏图标(Frame类里)
HICON m_hIcon;
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
SetIcon(m_hIcon, read more

MFC限制鼠标区域、画橡皮条线、任务栏显示图标、核对标记、文档背景色

限制鼠标活动区域
可以写在view类的OnMouseMove中添加如下代码
if (nFlags&&MK_LBUTTON)
{
CWnd *hwnd = GetActiveWindow();
CRect rect;
hwnd->GetWindowRect(&rect);
ClipCursor(&rect);
}
当要恢复鼠标使用范围时调用ClipCursor(NULL);即可。

还有SetCapture()和ReleaseCapture()的使用

画弹性橡皮线
在view类里响应左键单击,以及鼠标移动和左键弹起消息
鼠标移动
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.MoveTo(oldPoint);
dc.LineTo(newPoint);

dc.MoveTo(oldPoint);
dc.LineTo(point);

newPoint = point;
左键按下只需记录坐标点,鼠标弹起只需画线。
当要画其它图形时要麻烦很多,因为在鼠标移动时要用到画刷

画矩形
if (GetCapture()==this&& nFlags && MK_LBUTTON)
read more

MFC对话框置顶 SetWindowPos()的用法

当你建立了一个基本对话框应用程序时,设置对话框置顶,可以在初始化对话框函数或者在消息响应函数里添加以下语句 设置置顶: SetWindowPos(&wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); 取消置顶: SetWindowPos(&wndNoTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); 不需做任何修改即可完成。 当建立的是单文档应用程序时,要在前面多一个窗口句柄函数。 下面是更详细的说明: 函数名:  SetWindowPos头文件:  winuser.h

函数原型:

BOOL SetWindowPos
(
HWND hWnd, //窗口句柄
HWND hWndInsertAfter, //排列顺序的句柄
int X, //水平坐标
int Y, //垂直坐标
int cx, //宽
int cy, //高
UINT uFlags //窗口定位标识
);

说明:

这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。
返回值:

BOOL,如果返回值非零表示成功,返回零表示失败。错误信息请参看GetLastError函数。

参数表:

参数 类型及说明
hwnd HWND,欲定位的窗口句柄
hWndInsertAfter HWND,置于hwnd前面的窗口句柄。这个参数必须是窗口的句柄或是下面的值之一:    HWND_BOTTOM 将窗口置于其它所有窗口的底部
HWND_NOTOPMOST 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响
read more