关于SDK编程的几个巨难问题(对于我来说),高手和非高手请进-> 还有一个问题,是VB的我怎样才能把一个ActiveX控件加到一个用CreateWindowEx创建的窗口上 ~~~~~~~~~~~~~~~~~~~~~~~~,并能响应ActiveX Control的事件?困扰我很久啦! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是在OnRButtonDown里TrackPopUpMenu的,完全可以达到你说的这个效果 对了,还有个问题如何立即关闭显示器?要求:1.不准用手关2。不准叫其他人用手关3。用Win32 SDK 似的,在OnContextMenu里响应也可以这样的。你的程序有些问题罢 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; POINT p; TCHAR szHello[MAX_LOADSTRING]; LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message) { case WM_CONTEXTMENU: GetCursorPos(&p); TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0); break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... RECT rt; GetClientRect(hWnd, &rt); DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;} 上面的 case WM_CONTEXTMENU: GetCursorPos(&p); TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0); break;就座不到我说的效果,该怎么改呢? 你真不幸,case WM_CONTEXTMENU: GetCursorPos(&p); TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0); break;我拷过来一试就灵。 case WM_CONTEXTMENU: SendMessage(hWnd,WM_CANCELMODE,0,0); GetCursorPos(&p); TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0); break;这样也不行 有这样的事?我是Win98+VC6+SP5我加了句SendMessage(hWnd,WM_CANCELMODE,0,0);后菜单能被隐藏了,但是不会在新的地方在显示,难道我见鬼了? 问题一:我在WM_CONTEXTMENU消息中用TrackPopupMenuEx展开一个菜单,我希望用户在窗口其他地方右击鼠标时,原有正在显示的菜单能被隐藏,并在新的位置重新显示菜单。但是有个问题,如果有菜单正在显示,用户在窗口其他地方右击鼠标时,能收到WM_CONTEXTMENU消息,但是TrackPopupMenuEx并不能重新显示菜单。如果我先发送一个WM_CANCELMODE消息,原来的菜单可以被隐藏,但是TrackPopupMenuEx仍然不能重新显示菜单,该怎么办呢?就像IE那样,你右击页面后弹出菜单,你别等菜单消失,在页面其他地方右击鼠标,菜单会在新的位置重新出现 问题二:如何立即关闭显示器?要求:1.不准用手关2。不准叫其他人用手关3。用Win32 SDK 问题三:还有一个问题,是VB的我怎样才能把一个ActiveX控件加到一个用CreateWindowEx创建的窗口上 ~~~~~~~~~~~~~~~~~~~~~~~~,并能响应ActiveX Control的事件?困扰我很久啦! 还有一种方法,你可以试一下:ExitWindowsEx( EWX_POWEROFF, 0 ); //注意://1、主板需为ATX结构//2、如果是在NT下,可能要关系到优先级问题 问题1解决 james_razor(Blade) 50分问题2,不能有关击界面!而且我是要关闭显示器,而不是把系统转入睡眠状态 谢谢,谢谢。还好我没有把SetSystemPowerState贴上去,要不你会不会倒扣我分啊,呵呵。 ginkgoboy(彝族舞曲),答非所问,得-50分:) 好象有一个shell 叫做 RUNDLL.EXE user.exe,exitwindows,先建立快街方式,你用vc 里的函数调用不就行了? 呵呵,jifeng(疾风)你误会了,我当然知道你要节省能量,我是问xiao_tian(啸天)的RUNDLL.EXE user.exe,exitwindows是干什么用的,我看不懂啊。 开启系统的节电mode不就可以了吗?不懂!!! 我就是希望不管用户是否开启系统的节电mode,都有我说的效果 SO EASY的问题,大家为什么不看看别人的原代码呢THAT‘S:SetForegroundWindow(HWND hWnd) 在调用TrackPopupMenu之前调用。 还有一个问题,是VB的我怎样才能把一个ActiveX控件加到一个用CreateWindowEx创建的窗口上 ~~~~~~~~~~~~~~~~~~~~~~~~,并能响应ActiveX Control的事件?困扰我很久啦! 这个问题比较繁。首先创建是没有问题的,使用CreateControl或是干脆用CoCreateInstance但如果要在SDK中进行ActiveX的消息响应,则需要实现ActiveX的Sink具体可以看Inside Com+ BaseServices中的第八章:连接点。记得加分 好啦,还有问题2问题二:如何立即关闭显示器?要求:1.不准用手关2。不准叫其他人用手关3。用Win32 SDK to:phy(beatrice) 不是我不给分,一给分就没人看了,你这么看中分么,我一定会给的,即使你没回答问题为了感谢各位的热心,我再加100分 如何立即关闭显示器?SendMessage(HWND, WM_SYSCOMMAND, SC_MONITORPOWER, 0); HWND為應該程序句柄。 不好意思﹐錯了﹐應該是﹕SendMessage(WM_SYSCOMMAND, SC_MONITORPOWER, 0); To gxh(): 这位兄弟手段高明啊!佩服 gxh的方法正确我试过了,LPRARM为1可以进入省电模式,2可以关闭显示器。jifeng,还有一个问题是不是。 给分太早了!你那个第二个问题,关于vb的那个,其实由个很简单的方法可以解决:首先把控件放到一个Form上,得到 ACTIVEX control的hwnd,然后SetParent到你那个CreateWindowEx的窗口上。如果你无法得到hwnd, 可以先放一个 pictureBox在form上,然后把activex ctrl放picturebox上,然后ChildWindowFromPoint或者EnumChildWindows什么的都能得到hwnd再把picturebox.visible=false就ok了如何?简单吧?为什么给分那么快 :( 给分太早了!你那个第二个问题,关于vb的那个,其实由个很简单的方法可以解决:首先把控件放到一个Form上,得到 ACTIVEX control的hwnd,然后SetParent到你那个CreateWindowEx的窗口上。如果你无法得到hwnd, 可以先放一个 pictureBox在form上,然后把activex ctrl放picturebox上,然后ChildWindowFromPoint或者EnumChildWindows什么的都能得到hwnd再把picturebox.visible=false就ok了如何?简单吧?为什么给分那么快 :( TrackPopupMenu()有一个参数TPM_LBUTTON(大概),将他chang to TPM_RBUTTON,粽子把left-->right 就ok了 触发线程的Event句柄一定要是静态的吗??? 64位操作系统中如何支持32位的COM? skin++最小化按钮问题(属性页使用skin++以后最小最大化按钮显示不出来) 文件读写的奇怪问题 非模式对话框显示问题 如何系统盘盘符?请不吝指教! [异常处理]请各位大侠帮忙啊~~急~~ ListCtrl 问题 在VC60 debug的时候,出现Find Symbols 对话框是怎么回事,该如何解决? 一个有关浏览器的编程问题. 怎么让很多进程共享一段内存!? 怎么读取位图,反馈坐标!!!
1.不准用手关
2。不准叫其他人用手关
3。用Win32 SDK
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
POINT p;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message)
{
case WM_CONTEXTMENU:
GetCursorPos(&p);
TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0);
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
case WM_CONTEXTMENU:
GetCursorPos(&p);
TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0);
break;就座不到我说的效果,该怎么改呢?
case WM_CONTEXTMENU:
GetCursorPos(&p);
TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0);
break;
我拷过来一试就灵。
SendMessage(hWnd,WM_CANCELMODE,0,0);
GetCursorPos(&p);
TrackPopupMenu(GetSubMenu(GetMenu(hWnd),0),0,p.x,p.y,0,hWnd,0);
break;
这样也不行
如何立即关闭显示器?
要求:
1.不准用手关
2。不准叫其他人用手关
3。用Win32 SDK
问题三:
还有一个问题,是VB的我怎样才能把一个ActiveX控件加到一个用CreateWindowEx创建的窗口上
~~~~~~~~~~~~~~~~~~~~~~~~
,并能响应ActiveX Control的事件?困扰我很久啦!
还有一种方法,你可以试一下:ExitWindowsEx( EWX_POWEROFF, 0 ); //注意:
//1、主板需为ATX结构
//2、如果是在NT下,可能要关系到优先级问题
还好我没有把SetSystemPowerState贴上去,要不你会不会倒扣我分啊,呵呵。
THAT‘S:SetForegroundWindow(HWND hWnd)
在调用TrackPopupMenu之前调用。
我怎样才能把一个ActiveX控件加到一个用CreateWindowEx创建的窗口上
~~~~~~~~~~~~~~~~~~~~~~~~
,并能响应ActiveX Control的事件?困扰我很久啦! 这个问题比较繁。首先创建是没有问题的,使用CreateControl或是干脆用CoCreateInstance
但如果要在SDK中进行ActiveX的消息响应,则需要实现ActiveX的Sink
具体可以看Inside Com+ BaseServices中的第八章:连接点。
记得加分
如何立即关闭显示器?
要求:
1.不准用手关
2。不准叫其他人用手关
3。用Win32 SDK to:phy(beatrice) 不是我不给分,一给分就没人看了,你这么看中分么,我一定会给的,即使你没回答问题为了感谢各位的热心,我再加100分
HWND為應該程序句柄。
SendMessage(WM_SYSCOMMAND, SC_MONITORPOWER, 0);
To gxh():
这位兄弟手段高明啊!佩服
jifeng,还有一个问题是不是。
首先把控件放到一个Form上,
得到 ACTIVEX control的hwnd,然后SetParent到你那个CreateWindowEx的窗口上。如果你无法得到hwnd, 可以先放一个 pictureBox在form上,然后把activex ctrl放picturebox上,然后ChildWindowFromPoint或者EnumChildWindows什么的都能得到hwnd
再把picturebox.visible=false就ok了如何?简单吧?为什么给分那么快 :(
首先把控件放到一个Form上,
得到 ACTIVEX control的hwnd,然后SetParent到你那个CreateWindowEx的窗口上。如果你无法得到hwnd, 可以先放一个 pictureBox在form上,然后把activex ctrl放picturebox上,然后ChildWindowFromPoint或者EnumChildWindows什么的都能得到hwnd
再把picturebox.visible=false就ok了如何?简单吧?为什么给分那么快 :(