4019|7

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

相同的代码,VC和EVC不同的运行结果 [复制链接]

    如下代码实现的功能:当把鼠标指向ID为IDC_BUTTON_TEST的按钮时,会出现提示信息,也就是ToolTip功能。代码很简单,对话框资源就是一个对话框和对话框上的一个按钮。
    这样的功能,相同的代码,在EVC(用的是WCE模拟器)中老是实现不了,而用VC编译即可实现,大家可以直接简单编译下看看。。这是为何?然道EVC下使用ToolTip有特别的地方?望高手赐教。

#include
#include
#include
#include "Resource.h"

//#pragma comment(lib,"comctl32.lib")//VC中放开,EVC就注释掉。

HINSTANCE g_hInstance = NULL;
HWND g_hDlg = 0;
HWND g_hButtonTest = 0;
HWND g_hTTWnd = 0;

void AddTooltip(HWND hDlg, HWND hCtrlWnd, LPCTSTR szTipText)
{
        TOOLINFO ti;
   
        HWND hTTWnd = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS,
                NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP/* | TTS_BALLOON*/,        
                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                hDlg, NULL, g_hInstance, NULL);
        SetWindowPos(hTTWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
       
        ZeroMemory(&ti, sizeof(TOOLINFO));
        ti.cbSize = sizeof(TOOLINFO);
        ti.uFlags = TTF_IDISHWND|TTF_SUBCLASS;
        ti.hwnd = hDlg;
        ti.hinst = g_hInstance;
        ti.uId = (UINT)hCtrlWnd;
        ti.lpszText = (LPTSTR)szTipText;
       
        SendMessage(hTTWnd, TTM_ACTIVATE, TRUE, 0);
        SendMessage(hTTWnd, TTM_ADDTOOL, 0, (LPARAM)&ti);
        SendMessage(hTTWnd, TTM_SETMAXTIPWIDTH, 0, 260);
        SendMessage(hTTWnd, TTM_SETDELAYTIME, TTDT_AUTOPOP, 4000);
        g_hTTWnd = hTTWnd;
}

void OnInitDialog(HWND hDlg)
{
    g_hButtonTest = GetDlgItem(hDlg, IDC_BUTTON_TEST);
    AddTooltip(hDlg, g_hButtonTest, TEXT("TEST"));
}

INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
        {
        case WM_INITDIALOG:
                OnInitDialog(hDlg);
                return TRUE;
               
        case WM_CLOSE:
                DestroyWindow(hDlg);
                return TRUE;
               
        case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                case IDOK:
                case IDCANCEL:
                        PostQuitMessage(0);
                        break;
                }
                return FALSE;
               
                case WM_DESTROY:
                        PostQuitMessage(0);
                        return TRUE;
        };
    return FALSE;
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
        MSG    msg;
       
    g_hInstance = hInstance;
       
       
        InitCommonControls();
       
        g_hDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), 0, DlgProc);
        if(NULL == g_hDlg)
        {
                return 0;
        }
        ShowWindow(g_hDlg, nShowCmd);
        UpdateWindow(g_hDlg);
       
       
       
        while( GetMessage(&msg, NULL, 0, 0) )
        {
                if(g_hTTWnd)
                        SendMessage(g_hTTWnd, TTM_RELAYEVENT, 0, (LPARAM)&msg);
                TranslateMessage(&msg);
                DispatchMessage(&msg);
        }
        return (int)msg.wParam;
}

最新回复

想知道为什么  详情 回复 发表于 2010-5-7 15:10
点赞 关注

回复
举报

55

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
正常啊,不是所用VC下的效果都是EVC可以实现
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
那在wce中如何实现ToolTip呢?(用SDK编程实现),大家提供个方法,有代码最好了
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
首先,LZ要确认你想要的tooltip效果能否实现。EVC不支持所有的tooltip,看EVC帮助可知:

Windows CE does not support the following options:
    Balloon ToolTips
    In-place ToolTips
    Sliding ToolTip animation
    Fading ToolTip animation

多看帮助吧!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(中级)

5
 
  Balloon ToolTips
    In-place ToolTips
    Sliding ToolTip animation
    Fading ToolTip animation
这几种ToolTip我还没分清,我先搞明白了,我要实现的是:把鼠标放在按钮上,就会出现ToolTip
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
属于 Balloon ToolTips ,不支持的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
任何ToolTp都可以,只要是基于Windows CE的,大家搞点代码上来。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
想知道为什么
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表