blog.TangGaowei.com

分类: 软件开发

VS2005 C++ MFC 怎样添加事件、映射消息和重载函数

作者 传说一梦 写于 2008-05-08  | 1,230 次浏览

VS2005 的 MFC 添加事件、映射消息和重载函数的操作 和 VS6.0 不一样,是在窗口类的属性页里。操作如下:

在“类视图”中,右键单击想要操作的窗口类,点击“属性”。在打开的属性页中,最上一排按钮中的“事件”、“信息”和“重写”分别对应“添加事件”、“映射消息”和“重载函数”的操作。

[ 标签: mfc, 映射消息, 添加事件, 重载方法 ]
[ 固定链接:http://blog.tanggaowei.com/2008/05/vs2005-c-mfc.html ]

捕捉手机 Home 键

作者 传说一梦 写于 2008-05-08  | 1,047 次浏览

(虽然能捕捉到,但是好像最后还是执行了返回桌面操作)

1. 注册热键

BOOL CMyProjectDlg::OnInitDialog()
{
    …

    // 处理 VK_HOME
    BYTE appkey = SHGetAppKeyAssoc(_T("MiniBlogClient.exe"));
    ::RegisterHotKey ( m_hWnd, appkey, MOD_WIN, VK_THOME);

    …
}

2. 重写 PreTranslateMessage 函数

BOOL CMyProjectDlg::PreTranslateMessage(MSG* pMsg)
{
    // TODO: 在此添加专用代码和/或调用基类
    if( pMsg->message == WM_HOTKEY )
    {
        SetForegroundWindow();

        return TRUE;
    }

    return CDialog::PreTranslateMessage(pMsg);
}

[ 标签: HOME键 ]
[ 固定链接:http://blog.tanggaowei.com/2008/05/home-2.html ]

为什么按 HOME 键后,应用程序在“任务管理器”里找不到了

作者 传说一梦 写于 2008-05-08  | 846 次浏览

在手机里,按下 HOME 键后,在“任务管理器(CeleTask.exe)”里就找不到应用程序了。碰到这样的事情,真是很郁闷!解决方法如下:

在“资源视图”的窗口编辑器里,将窗口的 style 属性修改为 Overlapped,再重新编译

[ 标签: HOME键, 任务管理器 ]
[ 固定链接:http://blog.tanggaowei.com/2008/05/home.html ]

给 CEdit 的扩展类中添加翻页功能

作者 传说一梦 写于 2008-05-08  | 492 次浏览

1. 控件获得焦点时,屏蔽输入法

void CBlogEdit::OnSetFocus(CWnd* pOldWnd)
{
    CEdit::OnSetFocus(pOldWnd);

    // 关闭输入法
    HIMC hIMC = ImmGetContext( this->GetSafeHwnd() );
    ImmSetOpenStatus ( hIMC, FALSE );
}

2. 映射 WM_CHAR 消息到 OnChar ()

void CBlogEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // nChar 的值在不同手机上可能有所不同
    switch ( nChar )
    {
        // Up
        case 50:
        {
            this->LineScroll ( -1 );

            break;
        }

        // Down
        case 56:
        {
            this->LineScroll ( 1 );

            break;
        }

        // PageUp
        case 52:
        {
            this->LineScroll ( -11 );

            break;
        }

        // PageDown
        case 54:
        {
            this->LineScroll ( 11 );

            break;
        }
    }

    // CEdit::OnChar(nChar, nRepCnt, nFlags);
}

[ 标签: Edit控件, 屏蔽输入法, 翻页 ]
[ 固定链接:http://blog.tanggaowei.com/2008/05/cedit.html ]

VS2005 C++ 中自己构造时间

作者 传说一梦 写于 2008-05-08  | 458 次浏览

#include <windows.h>
#include <afxwin.h>
#include <atltime.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char           buff[80];
    __time64_t result;

    // 构造 2008年4月28日 22:18:39 的时间
    CTime        t(2008,4,28,22,18,39);

    CString s = t.Format( _T("%A, %B %d, %Y") );

    struct tm when;
    t.GetLocalTm(&when);

    // 在自定义的时间上,再加 8 小时
    // 即变为 2008年4月29日 6:18:39
    when.tm_hour = when.tm_hour + 8; 

    // 重构时间,并输出显示
    if( (result = mktime( &when )) != (time_t)-1 )
    {
        asctime_s( buff, sizeof(buff), &when );
        printf( "the time will be %s\n", buff );
    }
    else
    {
        printf( "mktime failed" );
    }
}

[ 标签: 时间处理 ]
[ 固定链接:http://blog.tanggaowei.com/2008/05/vs2005-c-3.html ]

订阅

 

手机访问

http://blog.tanggaowei.com/wap/

Google