- 在线时间
- 63 小时
- 最后登录
- 2019-5-3
- 注册时间
- 2004-5-10
- 听众数
- 440
- 收听数
- 0
- 能力
- -250 分
- 体力
- 10122 点
- 威望
- -12 点
- 阅读权限
- 150
- 积分
- -586
- 相册
- 6
- 日志
- 10
- 记录
- 10
- 帖子
- 2003
- 主题
- 1253
- 精华
- 36
- 分享
- 8
- 好友
- 1292
复兴中华数学头子
TA的每日心情 | 开心 2011-9-26 17:31 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
- 自我介绍
- 数学中国网站(www.madio.cn)是目前中国最大的数学建模交流社区
群组: 越狱吧 群组: 湖南工业大学数学建模同盟会 群组: 四川农业大学数学建模协会 群组: 重庆交通大学数学建模协会 群组: 中国矿业大学数学建模协会 |
<><FONT style="FONT-SIZE: 12px; FONT-FAMILY: MS Shell Dlg, Tahoma, sans-serif, 宋体">一、打开CD-ROM
- z8 i7 `3 j7 M, k1 rmciSendString("Set cdAudio door open wait",NULL,0,NULL);
7 j7 z0 T8 a: w* O5 _$ Y* x( z
2 f, X' S9 g' e& S! d1 G/ p1 l1 A
! S2 s4 W/ i0 i* p二、关闭CD_ROM
6 Y( z v$ b, _$ KmciSendString("Set cdAudio door closed wait",NULL,0,NULL);
( F$ @, p! U8 c- m, W5 Q
7 [8 F0 `& Y) f( s% b% N( t% r
) [, Q; S* i, h. c" `2 `三、关闭计算机) q3 t% A: F9 d& j+ O& p7 T3 {
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构4 B! @. s+ [; ~5 M6 H
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);) o' j/ B" I; ~8 w: w/ \8 r- m- L
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息 d! L5 X2 i( i+ Q5 D3 I
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS), [! b" K, I5 z" F n0 u }9 c
{
7 ^! P% v: ~9 P% V, X3 S+ E0 M1 K//Windows98,调用ExitWindowsEx()函数重新启动计算机
# t. ]" O5 ?$ V% J2 \DWORD dwReserved;7 a; L* O4 i; [! {/ G; T: r7 V
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、 ! \3 B1 F/ D& H
//关机、关闭电源等操作1 s/ V. I ]2 l7 b# M4 F
8 d! C) w: s5 P
// 退出前的一些处理程序4 j, ?- m" F( I) L1 |( N
}
1 ?* U$ g& f) W( E- _' g0 U& n: x
* `1 A, d* c7 E: _( Y四、重启计算机" U+ d& R$ p3 _9 X. y- P5 [7 L
typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
: q3 j$ W/ J7 v& zHINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll$ g7 k2 {) q5 x: e# k r: t
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
% f* `7 b+ |. O: m& z) E+ wif(hInst != NULL)
) j3 I% [7 [. L( `/ V# s{7 e' U& {# d+ F- y2 I- w* N) M* E- e
//获得函数的地址并调用之
. _! O, P0 P) i7 o. A) i2 Q5 \ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
6 o/ Y' k) d' R; z(*ShutDownDialog)(0);
6 }, Q# t, c) U! L6 S/ P. H}! G3 U* t* ^- b$ k. P3 l
/ R' g- t) N0 o. I+ ]# r
- Q6 A" e& r' q7 T {9 J! ^五、枚举所有字体
. E: {% @( L. M" E& d" N! MLOGFONT lf;7 T1 s, I% Q3 ?
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure
. L/ o& _# y1 b& s+ A# u+ Sstrcpy(lf.lfFaceName,"");6 T. D: X8 n: Y, o3 Z7 p
CClientDC dc (this);
r, B- r* e$ I" @6 u+ u9 N) ?# L
; Q+ d: t4 P7 N( u//Enumerate the font families7 w/ ?6 |0 ^* Z( J6 I% ]+ e, I
::EnumFontFamiliesEx((HDC) dc,&lf,
& w$ u4 u* ^$ e2 q) k- D0 J(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
) m }% t4 q' Q7 n9 h. N$ K' z- I; _" G5 n
//枚举函数. {& ?! `: P# b
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)5 F+ k- e' a( _( q# Q
{/ M% B1 `$ ] ~. Q1 C6 @
// Create a pointer to the dialog window
* ]/ t; V% H, c( B" _) \CDay7Dlg* pWnd = (CDay7Dlg*) lparam;) e! |& x0 U! A
// add the font name to the list box6 ]# C1 a' c% J- f
( K. b! i* d/ G6 [& }% e n% BpWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
# b5 Y5 Q$ E0 m+ |$ r3 Q9 c. K
' k- S* _1 C6 Q. H3 m7 T7 c( D// Return 1 to continue font enumeration3 v0 q+ V6 {. N) ~! n" J
return 1;
) g" Q5 W# {7 M+ h# v5 P}3 g- A7 o! |6 i- ^9 h' p
其中m_ctlFontList是一个列表控件变量) F5 L; a/ c: Z: J e# i `
A" r. z3 v( y% p, ~
* c- h+ x3 n5 A6 f
六、一次只运行一个程序实例,如果已运行则退出5 [: v0 G2 T4 ?8 W
if( FindWindow(NULL,"程序标题")) exit(0);% P3 c7 I, a3 [ A) h) i
, R, \( @; a- d3 d; t T
1 x$ h5 P. t& R. s; _4 Z; z
七、得到当前鼠标所在位置
. o. r. w Q7 M! n2 V$ aCPoint pt;
" }" I3 G6 P3 XGetCursorPos(&pt); //得到位置
. {5 x6 q2 W$ W V1 r
! M! O8 W$ F4 M& a' _! F+ R" i
' h9 _6 O* E1 }4 g5 L4 j八、上下文菜单事件触发事件:OnContextMenu事件
! B4 i+ f. Q x/ M/ u) l+ j, \! T. c$ x0 l7 Q c. t& D
Q9 }/ T: t6 w& Y
九、显示和隐藏程序菜单
5 _) s N4 y' C% v& Y) ZCWnd *pWnd=AfxGetMainWnd(); + v: s( S1 ?7 r6 i3 }+ v& z7 P
if(b_m) //隐藏菜单0 e5 h3 r' u4 F, h6 R% }9 R
{/ v" {" Q- E+ b, B+ S' h8 N
pWnd->SetMenu(NULL);! K" ]0 f, \% ` s/ m
pWnd->DrawMenuBar();
' E$ ?7 v- d1 _0 o2 @/ O6 wb_m=false;
1 b2 z6 ^/ w/ }; }}) `' N/ L6 `' u# Z6 I$ P5 e {
else; v1 K5 q1 b- E5 S6 M5 F
{# |/ A$ q' \" d6 c: I. X- G
CMenu menu;
2 K5 |: F7 R, t6 y7 X2 ?5 i9 Gmenu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项$ Y3 ?' y+ {; O& A4 g0 t( O
pWnd->SetMenu(&menu);
, E4 ~/ }3 O( T' C! x. S1 S3 ApWnd->DrawMenuBar();
6 o; [' r6 w' A+ e, Rb_m=true;: L0 ^, E: C3 I r2 G8 d o$ L
menu.Detach();( g' E( G# R! Q2 t
}# T4 ]. D0 {% h O" R1 e+ d# J
: a$ k0 o9 o, [! K9 n
+ \: T3 ~8 r8 B, b& r
十、获取可执行文件的图标
; P2 W- P# p5 s- C# x3 C7 d6 AHICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
7 z/ T% g. I. ^" o: h# m9 x/ B* Hif (hIcon &&hIcon!=(HICON)-1)
& U0 c& v7 E t: i{
; l# M9 I! n2 qpDC->DrawIcon(10,10,hIcon);+ O. b) k& `' F0 d# I
}
7 Z1 b' f3 X5 [, D2 KDestroyIcon(hIcon);# u( p. |: h) g$ Q' l
十一、窗口自动靠边程序演示1 J. U. p: k% `# K* b
BOOL AdjustPos(CRect* lpRect)4 h9 h+ e! P w7 m" {
{
5 i* f: Z f: l( k- l; \2 k: Z; e//自动靠边, [5 @: e% K# l' x# B' z
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);# H/ e: s8 Y9 w4 j# \- t) B5 R$ X
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
Q" e, B1 V- b* _6 T ~5 `
) ^( Q: P3 h" {0 n; URECT rWorkArea;
; A4 p% I7 O2 T i! Y( a. e. FBOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0); " T- {, E" H3 Z" q( X& t1 S
, i! ?6 y' Q! h8 M; H9 G, ^+ p* u) QCRect rcWA;
! n5 H: c8 S/ k8 b0 aif(!bResult)
0 p5 |& `9 P1 d" T. m$ K{
+ d' I& {# m; }# @. r4 Y* ^2 w//如果调用不成功就利用GetSystemMetrics获取屏幕面积' d; k7 v/ L: Z4 b9 X! L! j2 P
rcWA=CRect(0,0,iSX,iSY);& B$ J& X" d. z6 ~
}
( U5 |6 `, H' ?6 d* D3 S: M; Yelse j! h# Q& [' p: o- p' K8 P
rcWA=rWorkArea;# p4 l+ o6 @) W) Y- O
) k3 y( }' g: c9 ]3 z" u! A: e
int iX=lpRect->left;" g2 v" r5 P: J- q$ j
int iY=lpRect->top;1 a$ w A/ d6 f4 ]7 m# Q1 g
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
9 n- f& k; q7 _, \; X! h{. \. y+ o' f W5 z
//调整左1 R. v" g2 g( y0 M% q5 J# u( u( _
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
4 V4 T& f; h8 R: `lpRect->OffsetRect(rcWA.left-iX,0);( @9 I% {( {5 ^& D
AdjustPos(lpRect);
" S. l0 g9 C% q; Y# G) oreturn TRUE;
. I, l0 @" o2 Y9 s3 q}
$ i$ m, }! E2 o3 i+ bif(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
& Z1 ?" s0 _1 x- j: k8 c& \* H{% W8 i% E5 F( {2 {) l5 p
//调整上
9 B k6 ]/ e. L& \& p- M4 L! d& R2 `//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);; @9 ?. H5 b8 k; v
lpRect->OffsetRect(0,rcWA.top-iY);
/ B4 g0 S0 T" Y4 lAdjustPos(lpRect);
3 V) Q) h1 d2 C. P0 kreturn TRUE;
$ S4 d" {3 v! ]6 {}
) L5 _ d- R- lif(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())& x5 M% D3 E# r5 I8 ~ e
{ 2 I# W F& ]9 ?" J) q" L
//调整右
" v) p0 l( Y* R( Q) R% ^//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
/ K& e8 b! [9 v, |. _lpRect->OffsetRect(rcWA.right-lpRect->right,0);1 g+ H2 {0 c4 \/ Z4 q
AdjustPos(lpRect);; r" [5 w" [% |' l/ v
return TRUE;# i$ ]3 `( f# F; \/ E l
}, j6 J+ H: _" s5 p8 o! C' B8 u) l; @
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())5 Q l/ T2 R5 S6 Y+ Q# `
{2 p4 o1 I" `6 _1 O) L
//调整下
5 b2 y+ u8 k) ^//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
: R& u! S( J/ U! J, zlpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
1 `+ Q! Y/ k! w- R; Sreturn TRUE;
8 R8 n+ q- n. B5 z}3 O! `) Z E0 _* s" X: l
return FALSE;
6 U, Y7 w/ {" c: X}# U0 a- @+ U+ c0 l
//然后在ONMOVEING事件中使用所下过程调用
) f h4 R) O# t; B6 FCRect r=*pRect;
3 t% [" c, A3 ]) F+ K5 t3 V2 RAdjustPos(&r);6 q& ?+ l9 F- H; o( x( X6 P+ g5 J
*pRect=(RECT)r;' o# [% Q, i9 r$ s! W
7 O: T' ]9 F8 p7 M7 L* A+ W$ D4 S
, `. w1 U; H ]7 ~0 C十二、给系统菜单添加一个菜单项+ Y2 ]0 f1 ]( m$ A
给系统菜单添加一个菜单项需要进行下述三个步骤:; W1 w" d- K0 p3 }" ~
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
% H3 q3 |( ^6 G0 `# e n- b9 B
7 M7 r& @- \! K* K7 n0x0F而小于0xF000;
8 ], P; U8 {9 y3 G& o8 _& B其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加
) ^' Z/ ]/ i8 c2 I7 Z* N# p# T; S8 V
, k' z1 i" V- T k s两个新的菜单项。6 k0 Q/ }1 c2 T' d# M* ]) z/ k
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)( L3 S' [8 n7 q! w6 ^$ @6 K
{
1 ^2 S' e1 a0 J4 [+ Y$ l…
; j2 Y2 V7 U" [ w# B& j//Make sure system menu item is in the right range. P* c' e) a, z
ASSERT(IDM_MYSYSITEM<0xF000);1 {( l( o% \4 q
//Get pointer to system menu.
+ v1 L9 t3 @: K8 q3 N% n7 m0 UCMenu* pSysMenu=GetSystemMenu(FALSE);) A5 A7 q( J) I
ASSERT_VALID(pSysMenu);
1 c0 M1 h5 M3 m) o3 T/ k! M//Add a separator and our menu item to system menu.( f! J, T/ P$ r8 `4 t1 M
CString StrMenuItem(_T ("New menu item"));" U4 ?" b6 s6 ]
pSysMenu->AppendMenu(MF_SEPARATOR);
2 m4 N5 T% v o: {1 J2 ypSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);0 [: ~/ |9 l: b8 ^
…
, h# H/ ]% V6 k, h( n' F}</FONT></P> |
zan
|