当前位置:编程学习 > VB >>

在win98下如何获得透明的窗口


显示器看起来一定是透明的,用DLL直接在显示器上DC画图,怎么样让我画的线也变成透明的呢? 谢谢!


谢谢! --------------------编程问答-------------------- 哥哥 win98? --------------------编程问答-------------------- 不好意思,程序是在win98下运行的。   

引用 1 楼 bxm0016 的回复:
哥哥 win98?
--------------------编程问答-------------------- 不会吧 WIN98还没淘汰? --------------------编程问答-------------------- 没有办法啊, 里面有一块老爷爷的板子,只能跑在16位的机器上;很是悲剧
引用 3 楼 choovy123 的回复:
不会吧 WIN98还没淘汰?
--------------------编程问答-------------------- 至少你换个Win2K也行啊。呵呵 --------------------编程问答--------------------
引用 5 楼 veron_04 的回复:
至少你换个Win2K也行啊。呵呵

能用Win2K,还不如就装 XP  ^_^



不过,实在没明白楼主的想法和目的。-_-!!!
--------------------编程问答-------------------- 98下装个虚拟机,然后在虚拟机里面装xp,嘿嘿。 --------------------编程问答-------------------- 另外,超精简版xp貌似不会比98运行速度慢,而且对系统要求也低到与98一样。 --------------------编程问答-------------------- 把系统换成XP的,使用GDI+,可以很容易的实现你的要求。
参阅 --------------------编程问答-------------------- 感谢大家热心的回复。

我这里有一个老古董的板卡,里面有一些模块必须在出厂电脑里用( P II 的机器上),否则不工作。不知道出厂的时候,是否进行了限制。

所以没有办法了啊!

--------------------编程问答-------------------- 关键是还没理解你的‘透明’是什么意思…………


既然‘透明’了,就是‘看不见’了;
既然看不见了,就不用去‘画’了…………
-_-!!!
--------------------编程问答-------------------- 该放弃的要放弃,呵呵 --------------------编程问答--------------------
引用 6 楼 chen8013 的回复:
能用Win2K,还不如就装 XP  ^_^


XP比2K慢多了,2K和98发行时间接近,家里1台古董(赛扬566,128M内存,2000年买的),可以流畅运行2K,并装好相关软件,装XP空系统也运行艰难 --------------------编程问答-------------------- else
    {
        // 前面衰减设置为0,倒数第二个设置为5db,剩下衰减设置在最后一个衰减
        (vecPort2Atten.end() - 2)->second += 5;

        fTotalAtten -= 5;
        if (0 < fTotalAtten)
        {
            if (mapPort2MaxAtten[vecPort2Atten.back().first] >
                fTotalAtten + vecPort2Atten.back().second)
            {
                vecPort2Atten.back().second += fTotalAtten;
            }
            else
            {
                vecPort2Atten.back().second = mapPort2MaxAtten[vecPort2Atten.back().first];
            }
        }
    }

CLogIf * logif = NULL;
GET_LOG_IF(logif);

CPort* src = entity->GetSrc();
CPort* snk = entity->GetSnk();

    // 异步下发命令设置衰减器衰减
    vector< pair<CMD_BOARD_INFO, float> > vecPort2AttenCmd;
    vector< pair<CPort*, float> >::iterator itPA = vecPort2Atten.begin();
    for (; itPA != vecPort2Atten.end(); ++itPA)
    {
        CMD_BOARD_INFO bdInfo;
        PORT_2_CMD_BDINFO((itPA->first), bdInfo);
        vecPort2AttenCmd.push_back(make_pair(bdInfo, itPA->second));

if (bPrintLog)
{
string strLog = ::FormatString("(lambda %d)opa- send to ne, %s, the loss = %f", 
   lambda, bdInfo.toString().c_str(), itPA->second);

logif->LogDebugInfo(assert_internal_error,
FIBERVERIFY_MODULE_NAME, __FILE__, __LINE__, strLog);
}

        //_EXEC_FUNC_AND_RET_ERR_(itPA->first->SetAtten(itPA->second, lambda));
    }

    vector<ULONG> vecPortCmdResult;
    _EXEC_FUNC_NO_RET_ERR_(ulRst, pNetworkCfgIf->SetAttenAsync(vecPort2AttenCmd, vecPortCmdResult));
    if (RESULT_SUCCESS != ulRst)
    {
        vector< pair<CMD_BOARD_INFO, float> > vecPort2AttenCmd2;

        vector<ULONG>::iterator itRst = vecPortCmdResult.begin();
        for (; itRst != vecPortCmdResult.end(); ++itRst)
        {
            if (RESULT_SUCCESS != *itRst)
            {
                vecPort2AttenCmd2.push_back(vecPort2AttenCmd[itRst - vecPortCmdResult.begin()]);
            }
        }

        // 下发失败的命令再重试下发一次
        _EXEC_FUNC_AND_RET_ERR_(pNetworkCfgIf->SetAttenAsync(vecPort2AttenCmd2, vecPortCmdResult));
    }

    return RESULT_SUCCESS;
}
--------------------编程问答--------------------
    // 获取所有衰减调节点
    vector<CVerifyRoute*> vecVerifyRoute = entity->GetVerifyRoute();
    vector<CVerifyRoute*>::iterator itRoute = vecVerifyRoute.begin();
    for (; vecVerifyRoute.end() != itRoute; ++itRoute)
    {
        vector<CLink*> vecLink;
        (*itRoute)->GetAllLink(vecLink);

        vector<CLink*>::const_iterator itLk = vecLink.begin();
        for (; vecLink.end() != itLk; ++itLk)
        {
            CLink* pLink = *itLk;

            if (pLink->GetSnkPort()->IsSupportAtten())
            {
                CPort * pAttenPort = pLink->GetSnkPort();

                vector< pair<CPort*, float> >::iterator itPA = vecPort2Atten.begin();
                for (; itPA != vecPort2Atten.end(); ++itPA)
                {
                    if (itPA->first == pAttenPort)
                    {
                        break;
                    }
                }

                if (itPA != vecPort2Atten.end())
                {
                    continue;
                }

                pAttenPort->SetCurChannelIDbyWave(lambda);  //根据当前的校验波长更新通道ID,需要下发网元查询单板工作波长范围

                float fMaxThAtten;
                float fMinThAtten;
                _EXEC_FUNC_AND_RET_ERR_(pAttenPort->GetAttenTh(fMinThAtten, fMaxThAtten));

                vecPort2Atten.push_back(make_pair(pAttenPort, fMinThAtten + (float)0.2 ));
                fTotalAtten -= fMinThAtten + (float)0.2;
                mapPort2MaxAtten[pAttenPort] = fMaxThAtten - 0.2;
            }
        }
    }

    if (vecPort2Atten.empty())
    {
        return RESULT_SUCCESS;
    }

    // 计算每个衰减器的衰减    
    if (1 == vecPort2Atten.size()
        || fTotalAtten <= 5)
    {
        if (0 < fTotalAtten)
        {
            if (mapPort2MaxAtten[vecPort2Atten.back().first] >
                    fTotalAtten + vecPort2Atten.back().second)
            {
                vecPort2Atten.back().second += fTotalAtten;
            }
            else
            {
                vecPort2Atten.back().second = mapPort2MaxAtten[vecPort2Atten.back().first];
            }
        }        
    } --------------------编程问答-------------------- ULONG COPAAlgorithm::SetOpaAtten(COPAEntity* entity, const ULONG & lambda, const float & fLoss, bool bPrintLog)
{
    ULONG ulRst = 0;
    vector< pair<CPort*, float> > vecPort2Atten;
    map<CPort*, float> mapPort2MaxAtten;

    CNetworkCfgIf* pNetworkCfgIf;
    GET_NETWORK_CFG_IF(pNetworkCfgIf);

float stdOutPower = 0.0;
float stdInPower = 0.0;

ulRst = GetOPAInOutStdPower(entity, stdOutPower, stdInPower);
if (RESULT_SUCCESS != ulRst)
{
return ulRst;
}

    float fTotalAtten = stdOutPower - stdInPower - fLoss;
--------------------编程问答-------------------- 楼上C++都用上了,人才啊!
主要是Win98没有API函数SetLayeredWindowAttributes,不好实现透明。我曾经在枕善居上看到过VB实现的透明气泡,背景可以颜色渐变,是用GDI实现的,后来我在Win98下测试成功。
--------------------编程问答-------------------- 那干脆用 DX 接口来实现算了。

^_^

--------------------编程问答-------------------- WIN98下不支持透明的.

当年我也想实现这效果.....实在是没招.

不过我注意到拖动图标时,WIN98的图标也是半透明的....

但当时水平比现在还要烂得多,所以没结果. --------------------编程问答--------------------
引用 5 楼  的回复:
至少你换个Win2K也行啊。呵呵

I think so, 2 --------------------编程问答-------------------- WIN98现在还有吗??? --------------------编程问答-------------------- 百叶窗就可看做是半透明的。
补充:VB ,  API
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,