long hBMPColorMask =
win32.CreateDIBSection(screenDC, bmi, WindowsDefs.DIB_RGB_COLORS, valuesPtr, null, 0);
// copy rgb-array from BufferedImage to values array
int[] rgb = bufImg.getRGB(0, 0, width, height, null, 0, width);
Int32Pointer values = bridge.createInt32Pointer(valuesPtr.get(0));
values.set(rgb, 0, size);
long hBMPAlphaMask =
win32.CreateDIBSection(screenDC, bmi, WindowsDefs.DIB_RGB_COLORS, valuesPtr, null, 0);
win32.ReleaseDC(0, screenDC);
// set bitmap mask
int[] maskArray = new int[size];
for(int i = 0; i < size; i++) {
if ((rgb[i] & 0xFF000000) != 0) {
maskArray[i] = 0xFFFFFF;
} else {
maskArray[i] = 0;
}
}
values = bridge.createInt32Pointer(valuesPtr.get(0));
values.set(maskArray, 0, size);
// fill icon info
Win32.ICONINFO iconInfo = win32.createICONINFO(false);
iconInfo.set_fIcon(icon ? 1 : 0);
if (!icon) {