VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 704|回复: 3

[求助] 改变static控件文字,导致叠加

[复制链接]
23_avatar_middle
在线会员 klxsxhyk 发表于 2017-12-11 11:19:11 | 显示全部楼层 |阅读模式
3驿站币
//下面是过程处理函数,主要的问题就是WM_COMMAND中间的SetDlgItemText第二个设置的数字就和第一个叠加了,原本不应该就是替换吗
//到底是我写的地方不对还是这个函数不是这样用的,希望提出解决办法
//我用的VS2013所做的windows程序编程

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        HWND        firstButton, xButton, yButton, zButton, dxButton, dyButton, dzButton,m0Button, gdopButton;
        HWND        Tymax,Tymin,Tytext;
        HWND hwndST;
        static int        cxChar, cyChar;
        RECT rect;
        LPRECT rtls;
        rect.top = 100;
        rect.bottom = 500;
        rect.left = 50;
        rect.right = 650;
        PAINTSTRUCT        ps;
        HDC                hdc;
        int i=0;
        XYZ sum;
        switch (message)                                                //switch语句开始
        {
        case WM_CREATE:
               
                cxChar = LOWORD(GetDialogBaseUnits());
                cyChar = HIWORD(GetDialogBaseUnits());
               
                firstButton = CreateWindow(
                        TEXT("button"),
                        TEXT("计算数据"),
                        WS_CHILD | WS_VISIBLE ,
                        800,50, 12* cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_CAL, hInst, NULL
                        );
               
                xButton = CreateWindow(
                        TEXT("button"),
                        TEXT("x坐标曲线"),
                        WS_CHILD | WS_VISIBLE,
                        800, 100, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_XBUTTON, hInst, NULL
                        );

                yButton = CreateWindow(
                        TEXT("button"),
                        TEXT("y坐标曲线"),
                        WS_CHILD | WS_VISIBLE,
                        800, 150, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_YBUTTON, hInst, NULL
                        );
                zButton = CreateWindow(
                        TEXT("button"),
                        TEXT("z坐标曲线"),
                        WS_CHILD | WS_VISIBLE,
                        800, 200, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_ZBUTTON, hInst, NULL
                        );
                gdopButton = CreateWindow(
                        TEXT("button"),
                        TEXT("GDOP"),
                        WS_CHILD | WS_VISIBLE,
                        800, 250, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_GDOP, hInst, NULL
                        );
                m0Button = CreateWindow(
                        TEXT("button"),
                        TEXT("中误差"),
                        WS_CHILD | WS_VISIBLE,
                        800, 300, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_M0, hInst, NULL
                        );

                dxButton = CreateWindow(
                        TEXT("button"),
                        TEXT("dx坐标曲线"),
                        WS_CHILD | WS_VISIBLE,
                        800, 350, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_DXBUTTON, hInst, NULL
                        );

                dyButton = CreateWindow(
                        TEXT("button"),
                        TEXT("dy坐标曲线"),
                        WS_CHILD | WS_VISIBLE,
                        800, 400, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_DYBUTTON, hInst, NULL
                        );
                dzButton = CreateWindow(
                        TEXT("button"),
                        TEXT("dz坐标曲线"),
                        WS_CHILD | WS_VISIBLE,
                        800, 450, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_DZBUTTON, hInst, NULL
                        );

                Tymax = CreateWindow(
                        TEXT("static"),
                        L"",
                        WS_CHILD | WS_VISIBLE,
                        25,100, 12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_TYMAX, hInst, NULL);
                Tymin = CreateWindow(
                        TEXT("static"),
                        L"",
                        WS_CHILD | WS_VISIBLE,
                        25,500,12 * cxChar, 4 * cyChar,
                        hwnd, (HMENU)IDI_TYMIN, hInst, NULL);
                break;
        case WM_COMMAND:
                switch (wParam)
                {
                case IDI_CAL:       
                        DataCal(RawData,posotion)
                        i = 1;
                        break;
                case IDI_XBUTTON:
                        i = 2;
                        SetDlgItemText(hwnd, IDI_TYMAX, L"605");                        //这边正常显示出数字
                        break;
                case IDI_YBUTTON:
                        i = 3;
                        SetDlgItemText(hwnd, IDI_TYMAX, L"111");                        //这边就和上面的叠加了
                        break;
                }
        case WM_PAINT:                               
                hdc = BeginPaint(hwnd, &ps);
                FillRect(hdc, &rect, (HBRUSH)GetStockObject(WHITE_BRUSH));
                FrameRect(hdc, &rect, (HBRUSH)GetStockObject(BLACK_BRUSH));
                TextOut(hdc, 50, 510, L"0", 2);
                TextOut(hdc, 200 - 10, 510, L"06", 2);
                TextOut(hdc, 350 - 10, 510, L"12", 2);
                TextOut(hdc, 500 - 10, 510, L"18", 2);
                TextOut(hdc, 650 - 10, 510, L"24", 2);
                TextOut(hdc, 650 + 10, 500 - 10, L"时间(H)", 5);

                MoveToEx(hdc, 200, 500, NULL);
                LineTo(hdc, 200, 490);
                MoveToEx(hdc, 350, 500, NULL);
                LineTo(hdc, 350, 490);
                MoveToEx(hdc, 500, 500, NULL);
                LineTo(hdc, 500, 490);
                EndPaint(hwnd, &ps);
                break;                                                                       
        case WM_CTLCOLORSTATIC://设置静态文本框字体颜色
                if (GetDlgItem(hwnd, 101) == (HWND)lParam)//这里的1是静态文本框的ID
                {
                        SetTextColor((HDC)wParam, RGB(255, 0, 255));
                        SetBkMode((HDC)wParam, TRANSPARENT);
                        return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
                }
                break;
               
        case WM_KEYDOWN:            
                if (wParam == VK_ESCAPE)   
                        DestroyWindow(hwnd);               
                break;                                                       

        case WM_DESTROY:                               
                PostQuitMessage(0);               
                break;                                               

        default:                                                                       
                return DefWindowProc(hwnd, message, wParam, lParam);               
        }

        return 0;                        //正常退出
}





上一篇:自动注册软件
下一篇:关于WSASend函数

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

45_avatar_middle
online_vip fanchangcun333 发表于 2017-12-29 11:40:08 | 显示全部楼层
你的静态文本设置了透明画刷,网上有解

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

45_avatar_middle
online_vip fanchangcun333 发表于 2017-12-29 11:41:41 | 显示全部楼层
        在更新文本的语句下添加
CRect rect;
        GetDlgItem(IDC_STATIC_NUM)->GetWindowRect(rect);
    ScreenToClient(rect); //转到客户端界面
          InvalidateRect(rect,true);
          UpdateWindow();

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-15 04:48

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表