SendDlgItemMessage([HWND to a dialog],GetDlgItem(hwnd,filterTimeOn),BM_SETIMAGE,(WPARAM)IMAGE_ICON,(LPARAM)hMyIcon);
And I don't know where your filterTimeOn comes from, but it has to be the identifier of the button.
As for the color: I like it! No, seriously I don't know whether it is possible using CreateDialog(), but this function uses CreateWindow, which is much more powerful, but that comes at the price of being more comlicated. You can create one window as the background of the Dialog and one window as the button that shows on top of it. Wrap is in a class or something and you can always use it again and customize it.