小编Poo*_*Fan的帖子

Windows 10通知中的空白图标

我的java应用程序使用看起来或多或少的代码在系统托盘上显示其图标:

Toolkit mainToolkit = Toolkit.getDefaultToolkit();
SystemTray mainTray = SystemTray.getSystemTray();
Image trayIconImage = mainToolkit.createImage(getClass().getResource(resourcePath));
TrayIcon mainTrayIcon = new TrayIcon(trayIconImage);
mainTray.add(mainTrayIcon);
Run Code Online (Sandbox Code Playgroud)

有时我会改变这样的图标:

Image newImage = mainToolkit.createImage(getClass().getResource(otherPath));
mainTrayIcon.setImage(newImage);
Run Code Online (Sandbox Code Playgroud)

我的应用程序有时需要显示一些通知(使用来自托盘图标的气球消息):

mainTrayIcon.displayMessage(someCaption,  msg, TrayIcon.MessageType.NONE);
Run Code Online (Sandbox Code Playgroud)

所有这些代码实际上都是以某种方式简化,但很好地掌握了这个功能.

所以Windows 7上的一切都很好.但事实证明,在Windows 10上,它的显示方式不同.在通知上,左侧显示一个图标.它通常是我的应用程序的当前托盘图标,但有时它只是空白:

错误的通知

在上面的红色圆圈(在通知上)是有时出现的空白图标,而不是我的应用程序的图标(在系统的托盘上的红色小圈中).我不知道它为什么会发生.我所知道的只有当应用程序的托盘图标和通知消息在第一次通知(总是正确显示其图标)之前发生变化时才会发生这种情况.如果显示通知,则手动关闭淡出/然后应用程序的托盘图标和通知更改,下一个通知(使用刚设置的新消息)将正确显示应用程序的图标.

java notifications trayicon system-tray windows-10

7
推荐指数
1
解决办法
1945
查看次数

碎片化MP4 - 在浏览器中播放问题

我尝试用原始H264视频数据创建碎片化的MP4,这样我就可以在互联网浏览器的播放器中播放它了.我的目标是创建实时流媒体系统,媒体服务器将片段化的MP4片段发送到浏览器.服务器将缓冲来自RaspberryPi摄像头的输入数据,该摄像头将视频作为H264帧发送.然后它将复用该视频数据并使其可供客户端使用.浏览器将使用Media Source Extensions播放媒体数据(由服务器复制并通过websocket发送).

出于测试目的,我编写了以下代码片段(使用我在intenet中找到的许多示例):

使用avcodec的C++应用程序,它将原始H264视频复用到碎片MP4并将其保存到文件中:

#define READBUFSIZE 4096
#define IOBUFSIZE 4096
#define ERRMSGSIZE 128

#include <cstdint>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

extern "C"
{
    #include <libavformat/avformat.h>
    #include <libavutil/error.h>
    #include <libavutil/opt.h>
}

enum NalType : uint8_t
{
    //NALs containing stream metadata
    SEQ_PARAM_SET = 0x7,
    PIC_PARAM_SET = 0x8
};

std::vector<uint8_t> outputData;

int mediaMuxCallback(void *opaque, uint8_t *buf, int bufSize)
{
    outputData.insert(outputData.end(), buf, buf + bufSize);
    return bufSize;
}

std::string getAvErrorString(int errNr)
{
    char errMsg[ERRMSGSIZE];
    av_strerror(errNr, errMsg, ERRMSGSIZE);
    return std::string(errMsg);
} …
Run Code Online (Sandbox Code Playgroud)

c++ ffmpeg h.264 libavformat fmp4

6
推荐指数
1
解决办法
1044
查看次数

CSS:如何让滚动条出现在div的边框之外?

我正在为我的网站创建一些聊天框,我不能让垂直滚动条出现在边框之外.这就是我得到的:

我的聊天室

我想要的只是滚动条出现在右边的边框之外.它现在不是很漂亮,是吗?

thix框的主要HTML代码(带有一条消息,用于打开聊天框)如下所示:

<div id="sb_body">
        <div id="sb_messages_set">
            <div class="sb_message">
                <div class="sb_message_header">
                    <div class="sb_message_author">PookyFan</div>
                    <div class="sb_message_hour">12:11</div>
                </div>
                <div class="sb_message_content">test</div>
            </div>
        </div>
<!-- Some other chatbox's elements -->
</div>
Run Code Online (Sandbox Code Playgroud)

我的CSS代码如下所示:

div#sb_messages_set
{
border: 2px solid black;
border-radius: 10px;
background-color: #0080E0;
overflow: auto;
height: 300px;
}
div.sb_message
{
margin: 2px 4px 5px 4px;
border-bottom-style: dashed;
border-width: 1px;
border-color: black;
}
div.sb_message_header
{
clear: both;
display: block;
margin-bottom: 3px;
}
div.sb_message_author
{
display: inline;
text-align: left;
font-weight: bold;
}
div.sb_message_hour
{
display: inline;
float: …
Run Code Online (Sandbox Code Playgroud)

html css scrollbar

5
推荐指数
1
解决办法
1万
查看次数

c ++:for循环增量部分的操作顺序

考虑以下代码:

int totalLength = 0;
int partLength = 0;
for(; totalLength < SOME_CONST; totalLength += partLength, partLength = 0)
{
    //partLength may be increased here
}
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下,我可以假设partLength将被设置为0,它将被添加到totalLength(因此,如果partLength将在循环体中增加,我将不会在循环结束时将totalLength添加0) ?我读过有关c ++序列等的内容,但没有找到任何明确的答案.

c++ specifications

4
推荐指数
1
解决办法
391
查看次数

StretchBlt()不会创建镜像

根据MSDN:

如果nWidthSrc和nWidthDest参数的符号或者nHeightSrc和nHeightDest参数不同,StretchBlt将创建位图的镜像.

所以我尝试创建颠倒的图像.我有一个类看起来像这样:

class Picture
{
 private:
 HBITMAP bmp; //Bitmap
 HDC pdc; //Device context
 short int w; //Weidth of bitmap
 short int h; //Heighth of bitmap

 public:
 short int x;
 short int y;
 void draw(HDC);
 void upside_down();
}
Run Code Online (Sandbox Code Playgroud)

我有这个方法:

void Picture::upside_down()
{
 HDC dc = CreateCompatibleDC(pdc);
 HBITMAP bmap = CreateCompatibleBitmap(pdc, w, h);
 SelectObject(dc, bmap);
 BitBlt(dc, 0, 0, w, h, pdc, 0, 0, SRCCOPY);
 StretchBlt(pdc, 0, 0, w, h, dc, 0, 0, w, -h, SRCCOPY);
 DeleteDC(dc);
 DeleteObject(bmap);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,没有任何反应.我想知道它是否具有DC兼容性,我总是在理解其背后的逻辑时遇到问题.

那么,我应该怎么做才能让我的位图翻转?

c++ winapi gdi bitmap stretchblt

2
推荐指数
1
解决办法
2143
查看次数

ffmpeg:音频样本的字节顺序

我使用 ffmpeg 的 avcodec 从我的 C++ 应用程序中的音乐文件中检索原始音频样本。对于我测试的文件,这些文件样本的字节序似乎是小字节序,但我想知道对于我尝试解码的所有文件是否总是如此(即来自 ffmpeg 的实现或至少它的体系结构 -具体是因为我的计算机的体系结构使用小字节序)。如果没有,我认为这将取决于特定文件的编码格式。在这种情况下,我如何检查我正在解码的每个文件适用哪种字节序?我在文档中找不到任何相关信息。

c++ audio ffmpeg decoding libavcodec

2
推荐指数
1
解决办法
2384
查看次数