- 在线时间
- 63 小时
- 最后登录
- 2019-5-3
- 注册时间
- 2004-5-10
- 听众数
- 442
- 收听数
- 0
- 能力
- -250 分
- 体力
- 10122 点
- 威望
- -12 点
- 阅读权限
- 150
- 积分
- -586
- 相册
- 6
- 日志
- 10
- 记录
- 10
- 帖子
- 2003
- 主题
- 1253
- 精华
- 43
- 分享
- 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) W& z" T6 q9 ]
mciSendString("Set cdAudio door open wait",NULL,0,NULL);& t- Y/ c5 m' n
3 Q# L% _# _ ^. ?: ]9 `0 V
/ b6 R4 P, S) r# D( h/ |
二、关闭CD_ROM& n, R) n+ i# r( o
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);: V1 f$ C6 F+ p, T# a7 B0 P+ s- I
8 q: X# Z, }2 Q: u& S
) D5 M2 Q0 ~; m, \+ ?5 ]
三、关闭计算机
! H& t! U" b6 u7 n z- }: {OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构 [: ]+ h: m9 h. v
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);( }# T8 A1 |* E# R1 c/ j: P
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息
0 J) a3 c( F u! ^if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
6 _+ y6 }, ~) l* u7 [{' P z- F& a* C7 q0 a( x* f4 Y
//Windows98,调用ExitWindowsEx()函数重新启动计算机
/ E U e2 J- t9 m" A! D' YDWORD dwReserved;
2 U; x* s# E, r& W" YExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、 3 ~( q% X/ K- i; a) H+ F$ ~4 h
//关机、关闭电源等操作8 y. l, |$ s( ^, w" T
' I: W& z$ s7 h [9 C! I
// 退出前的一些处理程序
1 b: g z( e3 [& N! H% `} c, |: o% _8 g( l% z: S& ?
7 p; N1 N& k( h& O% r& |, t3 g1 u T6 k2 e
四、重启计算机) |: w! E6 U* }5 W
typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
4 T7 \7 A9 e" ?7 ZHINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll" o% e" L$ d4 p* Y
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
0 N ^ V# h$ B0 g7 f2 q c. ^if(hInst != NULL)0 h, N r: c2 T! k
{# o6 f! c, o, E: m3 V% R
//获得函数的地址并调用之. ]7 M1 L. H6 ]% v; G* o: N) ~
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
5 n0 g9 S j d+ i(*ShutDownDialog)(0);
; s- E+ T1 R7 [8 q8 ~; ]9 y}: L2 \8 f# U. h, Y3 J2 B+ }
, b0 [* b3 s8 g' b, J
, z, C. I: l9 T$ O9 ]2 F6 f- {五、枚举所有字体
( n, P) S& I0 p7 z% W% Y- i% SLOGFONT lf;/ Z3 a; I4 h* ]" L( Y; X
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure5 E( ^ C) `: `* J
strcpy(lf.lfFaceName,"");0 a/ Z/ I- C) r/ v. ]
CClientDC dc (this); P7 e& N" E! b
- [8 T- A9 M5 \9 Q1 N* v//Enumerate the font families
1 D/ w1 |/ \4 n2 v7 B7 X/ K::EnumFontFamiliesEx((HDC) dc,&lf,
- f( V: t+ Q% l: j: N(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);, r: U$ l! ]1 |6 t1 M
" l9 X; g/ I4 N5 E//枚举函数: r. v( X: h1 k3 l7 F8 g
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
0 ^- u/ N: I/ R: {{
9 r6 q! x5 |. p- ~% n// Create a pointer to the dialog window' P( Y4 `- V. z- l$ D" N: z
CDay7Dlg* pWnd = (CDay7Dlg*) lparam;4 o( }+ ]/ ]7 m. H
// add the font name to the list box
6 c; D% \$ }& c L( s- L' \! B$ N4 z; `) k- e, K: y' R
pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
. X# J* n& X% g* L: `
3 l( { M# S8 T, W' J// Return 1 to continue font enumeration
, I& K: i) c( T& u$ ~9 H8 z! Treturn 1;8 m7 z- c) Q* X/ r* X" G
}
" {# y7 ~7 o% g$ }% j其中m_ctlFontList是一个列表控件变量
9 Y! m# d+ T; p+ E+ j9 y
. ]1 ?6 N5 F* ?; ~8 H- F
' m7 b' h- z0 z9 B8 s/ {/ R六、一次只运行一个程序实例,如果已运行则退出
. L" g" U4 z* M# Tif( FindWindow(NULL,"程序标题")) exit(0);
. S* U" L. T& i% e+ t: E, @/ p P: E7 H- o
( y& ~+ r' t6 c- z' N9 m l
七、得到当前鼠标所在位置
. U+ f7 k8 _) ], w! _" UCPoint pt;* i8 F" i+ [8 u8 M; g$ j# g
GetCursorPos(&pt); //得到位置
, T2 M3 a X9 b6 Z
' i3 e: x. _. k6 F
* h$ n' W% q8 l! _0 P八、上下文菜单事件触发事件:OnContextMenu事件& h* T% z/ X8 V9 g# c/ ^, t) X6 n
2 J& U6 t/ U* ]& c/ Q0 i' J
3 R8 z7 u9 p# Z) {九、显示和隐藏程序菜单
4 u4 `. y0 O. E! U Q9 e7 X+ I# pCWnd *pWnd=AfxGetMainWnd(); + S& I- T8 @; R) c+ a$ V
if(b_m) //隐藏菜单- m2 L4 P+ q( s8 O( @: @
{' b+ u. o5 }4 b: `# Y
pWnd->SetMenu(NULL);8 ?0 D. C+ x4 a) M6 W, p0 a& E
pWnd->DrawMenuBar();
; A, X" H% G; P8 \6 d/ n) \. n4 ~b_m=false;3 m6 b: g9 U/ g+ A7 X9 j
}# a4 S# J9 _( \; c
else
+ h/ p; f! [9 I+ y{( _% G" ~" q2 Y
CMenu menu;- s; x4 M$ g% E: B( N) K
menu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
& Q7 y9 g# d1 q* OpWnd->SetMenu(&menu);! B5 ?$ k; W4 i% A) [* I
pWnd->DrawMenuBar();4 a7 ]: j' F% K
b_m=true;
# h3 ~5 z9 ]1 u" i) k4 o: |0 Emenu.Detach();
# u0 o" W% p: f. y( K! e- F}: @% h& \" c, B
; Q5 I3 _$ I* r- k$ _: R! K% z
5 c5 p. ], R. V' S十、获取可执行文件的图标
' B9 h* i5 i3 r! O7 {HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
* f4 Q. D: m Q$ k7 v; iif (hIcon &&hIcon!=(HICON)-1)4 V4 }0 L3 ]8 G; v
{
; p L* H3 [8 F, U! D& X- N* a" LpDC->DrawIcon(10,10,hIcon);
6 Y' j! \# X% s( l- r, }}, I# S" k% V: K& k- {
DestroyIcon(hIcon);. H! ~! e/ |( B9 s7 g* E9 D u
十一、窗口自动靠边程序演示- {8 z6 l7 I/ b, Y. @
BOOL AdjustPos(CRect* lpRect)
. |, M( L' f5 C# ?{2 P' S0 ~; r4 Y2 e2 d, v
//自动靠边! z3 J' D& z, }: x. e3 b
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);2 @! w6 j3 R) T5 Z- m
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
" K) F' i3 F n: t! s5 e+ Z; Q, N1 o7 x
RECT rWorkArea;
0 M/ ^% X' ^7 V" {( O+ PBOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0); - n; r' h2 j; l: Z- I$ S
. `3 L, u) m- Y- NCRect rcWA;9 N) L1 g& y; b& U8 V9 D/ h
if(!bResult)
( I' q; ]- k. Z& @/ t+ V" {( | f. D- l! N{
0 D" r: o5 J$ O9 O* y//如果调用不成功就利用GetSystemMetrics获取屏幕面积" A: s- {$ P( O8 b$ K7 `; D
rcWA=CRect(0,0,iSX,iSY);
* l3 Q5 a+ P9 i# G, W! C5 n* i}
& }! ~" k$ |7 `4 V: N0 r; z( Selse# @0 B7 w5 @5 s7 k
rcWA=rWorkArea;6 p) p2 b$ ]$ G, r
8 _0 c# B, Z7 U/ Fint iX=lpRect->left;
. u8 V0 c9 J# i0 Iint iY=lpRect->top;
7 S7 R" D: y# X o5 m/ x6 k9 \3 a2 i! Nif(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
: k! m. r" t+ h% J. [- y{' _$ |- k! {/ ?/ y& e1 v; n8 v
//调整左
& ~5 A; }- o( C5 d7 E$ W% J//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
& _: K; c4 o$ Q" @lpRect->OffsetRect(rcWA.left-iX,0);
" h3 b, P0 T; ~+ e0 cAdjustPos(lpRect);3 i% w/ I, l5 C2 G; f* E# L1 i2 R
return TRUE;
' h: j" O& H( G0 V}
1 d. G2 c3 T+ J% {1 Vif(iY < rcWA.top + DETASTEP && iY!=rcWA.top)9 r) C7 C. Y" S) _6 d
{3 G `: [ h; o8 P: ^, {
//调整上/ @" D( e$ l( w, Q! V5 c' A& W2 A
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
4 y2 h. Y$ y8 N) S. llpRect->OffsetRect(0,rcWA.top-iY);6 r2 P) s$ e, A
AdjustPos(lpRect);0 x. @/ N6 v, b) J1 j2 X8 J
return TRUE;4 l% o1 S+ ?3 X. j( ~1 @
}
, V; t+ s/ K7 I! J/ a# _3 yif(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width()) k: |- G9 K. |2 C+ \6 H( B' S* ^
{ ! T# o2 @4 Z5 u8 {/ |
//调整右; C" J, S( B0 o8 ?* K2 H7 d3 q) `
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);/ j P# B& P4 Z$ y6 s! z' z; s
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
; M j% }+ X( B5 oAdjustPos(lpRect);
: s- M' n( c: Q5 Freturn TRUE;
" Y9 c# f$ {0 T3 e) A; C}
. E V, C4 J N u7 k7 Wif(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
$ V5 w9 A9 ~% \& g! f& v6 S9 h{* e+ [5 t3 O: \% z
//调整下
, m$ h' I+ p/ N2 s" V//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
& n7 w3 c6 F h: R ~2 ?3 L3 ~lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);' N! T! d7 F% j2 A; c* z
return TRUE;: v, L* D7 ^# ~- O7 i2 ?- {1 R
}+ K' ~/ r5 L1 S2 G- @( X7 t: c, H, ]
return FALSE;
5 L7 N" c. m- [# ]# W5 Y n}
7 E9 e/ I- M) @( ~$ m) o) d//然后在ONMOVEING事件中使用所下过程调用, h- @: r t$ u% w+ s/ {
CRect r=*pRect;8 Q( v2 z: y+ J' w0 C
AdjustPos(&r);
, j+ J# G" B# q5 p*pRect=(RECT)r;" O8 l/ M8 c- R( ~
+ u5 I7 @1 k) [; f% v( V! y1 A
4 o: {4 Y) q) @' G& k& u; x4 l) W6 N
十二、给系统菜单添加一个菜单项
?( E g- ?) e/ D3 }给系统菜单添加一个菜单项需要进行下述三个步骤:6 j3 f9 U7 k0 }8 y
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
. _6 Y9 c$ c2 ]- o% b" K$ v* {. Q5 K
0x0F而小于0xF000;' r& O' w7 [- U6 ]5 J
其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加8 t1 c( i) I+ z4 k0 }
, J. B: k8 l$ K' R# C7 X
两个新的菜单项。, Y9 }5 s' d+ d, l* ~% C
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
3 C" x7 ~* a; Z0 X{$ v* o* j, u; W: z
…
* d2 G! x8 X. u5 P8 K5 E//Make sure system menu item is in the right range., { ?: q3 X2 z+ O
ASSERT(IDM_MYSYSITEM<0xF000);
9 H5 |! T3 P0 y$ k+ R$ ^" K7 ]8 v0 e//Get pointer to system menu.
6 x' z c+ q, m2 O' V5 ACMenu* pSysMenu=GetSystemMenu(FALSE);. r% K! X/ M2 E2 k+ W2 A
ASSERT_VALID(pSysMenu);
, G! v& _ T$ \) z//Add a separator and our menu item to system menu.* C2 M+ u; c' S: H( I5 P) u
CString StrMenuItem(_T ("New menu item"));0 X' k% n# k1 J- f
pSysMenu->AppendMenu(MF_SEPARATOR);6 T2 u1 a" l$ \4 _' I! d& q
pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);2 G" F: z! w X6 a' U1 G5 j
…
% \* f# z. z% o% u) T3 M. f}</FONT></P> |
zan
|