我想做一个小程序,具体内容是一些小位图在一个通明的窗口上随意运动
我用cdialog类,创建了一个透明的窗口(整个屏幕的),可是不能让它一启动
程序就弹出来,而位图的移动还没开始实现!
请各位高手指点
我用cdialog类,创建了一个透明的窗口(整个屏幕的),可是不能让它一启动
程序就弹出来,而位图的移动还没开始实现!
请各位高手指点
解决方案 »
- 什么是运行库
- 询问一下windows编程中关于字符串中'\t'和'\n'的最佳方法
- 还是问下文件分割问题.
- 使用VC6.0 编写的EXE程序运行后,占用内存一直在增加,有什么好办法检查下内存的分配吗
- 请高手帮忙啊。跟着孙鑫VC视频学习,需要比较深入的学习windowSDK编程吗?
- 请问一个有关定时间器的比较弱的问题
- InstallShield制作的安装程序在2k和nt下正常运行,在98下不行,why?(100分)
- VC++ ADO编程中怎么使用记录集的filter查询特定的记录
- 如何画一个圆形按键
- 有什么办法,使我能够知道程序是什么时间开始运行的?
- 菜鸟初来,江湖救急
- 如何取得ComboBox中的选项值
程序就弹出来,而位图的移动还没开始实现!
”不明白、
我是说怎样一开始就让透明窗口出来
而不是出dialog
我信箱[email protected]
如果有例程发给我好么?
一定加分
已经有这种类了,可以参考,很多的
然后用MoveWindow来移动PICTURE控件就行了
DWORD starttime=GetTickCount();
while((GetTickCount()-starttime)<10000);//等待10秒
CMyDialog dlg; //谈出对话矿
dlg.DoModal();
.....
{
CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
} // Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);//TopMost
m_sld.SetRange(10,255);
m_sld.SetPos(128); SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
} return TRUE; // return TRUE unless you set the focus to a control
}
void CApi_egDlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
BYTE eff=(BYTE)m_sld.GetPos();
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)
fun(this->GetSafeHwnd(),0,eff,2);
FreeLibrary(hInst);
}; CString str;
str.Format("%%%d",100*eff/255);
// InvalidateRect(CRect(10,10,30,30));
GetDlgItem(IDC_STATIC1)->SetWindowText(str);
*pResult = 0;
}
加入了一幅位图,位图也能够在窗口中移动
我用的是先移动一幅位图,然后用一幅白色位图擦除前面的位图
可是总是出一条白色的轨迹(白色位图话出来的)
我用光栅操作
bitbit{bitmap,srcinvert)
bitbit{mask,srcand}
bitbit(bitmap,srcinvert)
这样轨迹是没了
可是位图成反色的了
请教高手