当前位置: 代码迷 >> WinCE >> HI,All!来继续指导一下做任务栏解决思路
  详细解决方案

HI,All!来继续指导一下做任务栏解决思路

热度:159   发布时间:2016-04-28 13:43:59.0
HI,All!来继续指导一下做任务栏
我是一菜鸟原来的帖子中想要创建任务栏,已经找到了有CE界面调用任务栏的方法。对于没CE界面的我在做简单的画一个任务栏的操作,

采用如下步骤:

1:设置DLG作为任务栏固定在屏幕底端(已完成)
C/C++ code
hDlgTaskBar = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_TASKDLG), g_hMain, TASKProc);MoveWindow(hDlgTaskBar, 0, cy-20, cx, 20, TRUE);ShowWindow(hDlgTaskBar, SW_SHOW);                                                                        CheckMenuItem(hMenu, IDM_TOOL_TASKBAR, MF_CHECKED);

2:在DLG上根据窗口数量创建BUTTON——关键(正在进行)
画BUTTON的做出来的效果


首先:不知道如何得到当前窗口的数量!(在做)
其次:如何相应BUTTON_DOWN来切换窗口!
C/C++ code
//定义了一个简单结构体struct {  HWND     g_hButton;  HMENU       ID_Button;  TCHAR    *Text_Button;} TASKBUTTON[50];//对TASKProc的响应BOOL CALLBACK TASKProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {        hDlgTaskBar = hWnd;    g_iWndCount = 0;  //记录窗口数量    int i;        switch (message)    {        case WM_COMMAND:        {        wmId    = LOWORD(wParam);         wmEvent = HIWORD(wParam);        switch (wmId)            case BN_CLICKED:             {                //?这里的i值如何得到,怎么给szSel赋值                TCHAR * szSel = TASKBUTTON[i].Text_Button;                HWND hSel = FindWindow(NULL, szSel);                BOOL y = SetForegroundWindow(hSel);                ShowWindow(hSel, SW_SHOW);            }            break;        }        break;        case WM_INITDIALOG:            if (GetParent(g_hMain) ==NULL)                       {                //??想要得到当前所有窗口数量和窗口的名称,可是却只得到了一个窗口的名称                    WINDOWINFO info;                memset(&info, 0, sizeof(WINDOWINFO));                GetWindowAttributes(g_hMain, info);                if (_tcscmp(info.szWindowText, _T("")) != NULL)                  {                    TASKBUTTON[g_iWndCount].Text_Button = info.szWindowText;                    g_iWndCount ++;                }                //设定button大小                int cx = GetSystemMetrics(SM_CXSCREEN) - 1;                  int cy = GetSystemMetrics(SM_CYSCREEN) - 1;                int wide = ((cx - 1) - g_iWndCount * 2) / g_iWndCount;                    int high = 20 - 1;                                    //创建各个Button                for (i = 0 ; i < g_iWndCount; i++)                {                    //??每个Button对应相应的ButtonProc事件                    TASKBUTTON[i].g_hButton = CreateWindow( TEXT("button"),TASKBUTTON[i].Text_Button , WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,                                                 i*wide + 2 , 1 , wide, high ,hDlgTaskBar, (HMENU)TASKBUTTON[i].ID_Button, g_hInst, NULL);                    ShowWindow(TASKBUTTON[i].g_hButton, SW_SHOW);                }            }            else            {                MessageBox(hWnd, _T("There is no programe here!"), _T("MioExplore"), MB_OKCANCEL| MB_ICONWARNING);            }            break;    }    return 0;}


希望有兴趣的朋友能帮忙指导一下,帮我完成窗口对应BUTTON和BUTTON响应的操作

我已经将现在难做的地方标注“??”

3:对BUTTON做相应的响应用来实现窗口的切换;

希望通过ShowWindow(hwnd, SW_SHOW);和ShowWindow(hwnd, SW_HIDE);完成切换


本人定“上门”拜谢!

------解决方案--------------------
CE下进度查看,与PC下基本上是相同的,LZ可以去参考PC上相关的东东(网上可以search到一大把)
------解决方案--------------------
CE下进度查看,与PC下基本上是相同的,LZ可以去参考PC上相关的东东(网上可以search到一大把)
------解决方案--------------------

字体多了在button上没有显示完成,这个改了很久没成功呵呵,最后把显示内容改少点
探讨
问题:

1:使各个BUTTON响应不成功

2:字体拥挤不能在BUTTON上正常显示!

------解决方案--------------------
  相关解决方案