- 在线时间
- 63 小时
- 最后登录
- 2019-5-3
- 注册时间
- 2004-5-10
- 听众数
- 443
- 收听数
- 0
- 能力
- -250 分
- 体力
- 10122 点
- 威望
- -12 点
- 阅读权限
- 150
- 积分
- -516
- 相册
- 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
9 I( }5 i) W2 s J: b$ k9 ~mciSendString("Set cdAudio door open wait",NULL,0,NULL);. g' Z2 ~7 N( V! n% c
8 I) Y6 |% ?- B* {8 K) E
& C/ u5 N; l* T. I6 y二、关闭CD_ROM
]; {# V: I4 O- p* bmciSendString("Set cdAudio door closed wait",NULL,0,NULL);# w, d) `5 ?$ n0 m& C. r& i' H
8 V) d0 d4 U- W6 \4 s, x9 l) _
b( C: ]1 w8 W9 ?: T三、关闭计算机' ]8 G; S2 E* |! e2 s$ I
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构: \! x" d+ Q- _. Y0 J/ \
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);8 m* e' O. U& L( X
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息, O3 I0 w `* K2 L" {) m; u
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)( I+ D5 \' \* ?/ F) z! ]* T1 l
{6 _ j# `* G4 m
//Windows98,调用ExitWindowsEx()函数重新启动计算机2 E5 E1 ]9 z7 f7 H
DWORD dwReserved;# f' @6 d! v7 ?$ A4 E( U# Q
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
" C3 i( f; i: a+ E) O$ A$ ^//关机、关闭电源等操作
, B- u0 T" X* z( J9 } C2 Z' O& {0 N
// 退出前的一些处理程序
4 j6 ?+ G% P A- l7 H/ s}2 A1 x, v8 x: W# u# ?
2 y% S$ h1 a, q: u, R7 g# R
8 A6 ` N" ]0 }; }, ~) m( `0 e
四、重启计算机
7 G" g; H6 U/ n# Vtypedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
( Q2 d! Z! \/ a( V( z* jHINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
+ b) e' I) K1 ?0 T6 ~( W6 KSHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针9 K5 S% U4 I+ O* ^4 }5 Y/ h( P
if(hInst != NULL)+ A# z% ^( z- q
{3 @3 Z K2 P7 ^0 T" ?! d, Z
//获得函数的地址并调用之
1 b+ Y6 i' y* e4 e, ^' ZShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);9 {+ p' s5 Y, ?
(*ShutDownDialog)(0);: |. I# ?2 Q/ t' t. `7 p- }
}
1 L! e2 c9 [$ p# n7 j1 k4 ?% g+ l. T; u
! Q% r, f% o% d4 k" z
五、枚举所有字体
. L$ L" K/ U- jLOGFONT lf;
8 j* u3 Y: f' }5 Y/ z( ~lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure
6 y3 t6 ?/ Q$ e; Cstrcpy(lf.lfFaceName,"");: M3 d8 ?4 a1 K1 r' F) D8 _4 a
CClientDC dc (this);
9 L1 U3 c* Q- u6 X. T _1 A4 _" U8 _) N) ]1 C' }
//Enumerate the font families
/ y# v' r% e. j5 w5 x::EnumFontFamiliesEx((HDC) dc,&lf,8 { Z$ l9 i2 p6 I3 _
(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
$ S, N: b. O: \9 L" a4 _' z3 ]1 a/ o) ]
//枚举函数% W9 j: r9 o: Y4 t5 S3 @
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
( ]* c$ L( ^. t{
( t, U- b; u' Y# v L// Create a pointer to the dialog window( t6 ~# S1 n+ O
CDay7Dlg* pWnd = (CDay7Dlg*) lparam;1 I- P3 }+ s: @0 Y/ i. T
// add the font name to the list box
% P# @% E# w4 [+ W
( C) `. p0 {! `9 z5 _. U7 bpWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
* S& |) X) d4 P: x4 Z& ^
# f2 T0 r+ d2 x; [: g; t' h& l* o// Return 1 to continue font enumeration! e" a0 o1 D6 ^# ~* J, I
return 1;) Y- i$ u% |2 I& q! M t% f
}
$ Q* U; [0 _8 }6 X其中m_ctlFontList是一个列表控件变量
% m1 g1 a9 ?& m$ n( E& K6 m' c) u5 s7 x
% I; `5 T5 q9 K J8 ?) l- o" f3 P六、一次只运行一个程序实例,如果已运行则退出- }9 c" j; u: V( E/ N% ]
if( FindWindow(NULL,"程序标题")) exit(0);/ Y5 W1 z7 k8 P1 [2 ~# @
) M9 n# h3 r; R7 j+ E
) f1 ~- G% z; `/ ?% Q+ q七、得到当前鼠标所在位置
1 E3 `9 K+ _& w% b, x0 N$ t4 ?- yCPoint pt;; }4 M J o2 q
GetCursorPos(&pt); //得到位置* i( Q4 Z1 |7 T6 S. P- A
1 u( I: i- X0 ^' R4 y% m* R+ J2 O
! ^4 {& i* i0 Q8 Y6 q
八、上下文菜单事件触发事件:OnContextMenu事件
0 a" I1 z* }6 K! H) `- }+ Z5 c% l1 I) g. d0 v6 \
. o5 w) ]& }/ \/ r' \' A
九、显示和隐藏程序菜单* A' v% H* B* j9 K4 g+ ^+ G
CWnd *pWnd=AfxGetMainWnd(); & b1 x& c- a B+ G" b C6 d
if(b_m) //隐藏菜单
* X$ W! l5 r* s9 a, h{4 w4 B! ^' c. }: y
pWnd->SetMenu(NULL);3 R& U7 e1 \. f, }
pWnd->DrawMenuBar();
7 l1 Y% W+ O( G x1 i' bb_m=false;% A, m3 U: F: g# C' r4 F
}
) V$ U' a9 \9 Q' m0 W# _else
8 B6 ^* S) O; S9 a: [/ W" q{
% U/ ^4 a8 V7 B" N3 lCMenu menu;
( ]0 i/ B" d" X- N' K2 hmenu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
+ N7 ?: H, I* D: V0 _6 W* I9 e% YpWnd->SetMenu(&menu);2 j# l3 T! j5 a7 g6 B: L) U6 F
pWnd->DrawMenuBar();
7 m3 n) |6 S# p6 U" m! k; ab_m=true; G! a/ b) z6 t4 B
menu.Detach();
& u+ G2 s0 e& V! `1 I}
% O: w, e1 R: c: B* T' P$ l' }$ |3 x" H& I2 w% @( Z9 K" X
# L. F' ?. u* g+ I- u十、获取可执行文件的图标
- n7 h0 b( A. ?HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);" P% ~4 {/ T9 z' l
if (hIcon &&hIcon!=(HICON)-1) J8 u" b: V/ q! f
{
- n/ Q; b: [0 M: C' }pDC->DrawIcon(10,10,hIcon);
4 A1 c; D2 O0 r( |3 D& s}, f1 e" q/ a1 M, w* {6 [
DestroyIcon(hIcon);
9 ~& N6 [ [6 |2 `$ ^8 c k十一、窗口自动靠边程序演示
( O" }; P1 d) p; ]BOOL AdjustPos(CRect* lpRect)
8 u6 ]" w# A- f$ T, O8 C i{
3 Z$ s) K# p+ c6 }8 c$ D3 u//自动靠边& L! n+ l5 C8 k: k6 f' i( s
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);
& v! f2 Y7 ]% l4 Iint iSY=GetSystemMetrics(SM_CYFULLSCREEN);- q8 D7 Z' D) Z* P' N2 d6 i
1 u+ O& e- f h; g
RECT rWorkArea;2 E7 r# u$ x. r, |
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0); 0 R3 S: c) L5 S
6 q" m: q, E- I- w e
CRect rcWA;) J& j* F: Q7 T6 w7 |/ r& U
if(!bResult)
/ w& N4 ^. n7 R( o0 o{
( U3 \. c; d7 G2 u4 ]//如果调用不成功就利用GetSystemMetrics获取屏幕面积
" |! X; t2 L6 c8 K0 N, M7 BrcWA=CRect(0,0,iSX,iSY);: x3 C! J3 D9 s) [2 C
}4 V+ Z+ u4 V0 W7 _! k0 _
else, p- _& |" J; f5 T6 h
rcWA=rWorkArea;
; U9 [! B' \9 O/ X2 b% S0 z, c: o9 u. q. u, s; }4 Q' x
int iX=lpRect->left;& R+ v* X0 \+ m6 |7 ?, _7 B
int iY=lpRect->top;) s2 p4 J7 L: P- l9 L# X
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)% C- Z$ G5 Q1 Q/ q) x! ~
{& b3 a6 g/ q3 g+ l4 H4 R9 T
//调整左& v" S* J. K% \6 ^5 e4 g+ D
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
V: Z% R+ ]( [7 Y# D; O: OlpRect->OffsetRect(rcWA.left-iX,0);! w& Q2 u: O9 M3 X
AdjustPos(lpRect);, p+ q; C( h7 v3 b
return TRUE;/ ]" f$ t9 ?9 x5 W7 M
}
1 R* c; e7 G5 E3 i: sif(iY < rcWA.top + DETASTEP && iY!=rcWA.top)! l, a$ W& o# T" c. L2 K- T
{
9 `8 j7 y* w7 z! \2 F//调整上
1 Q: R3 [, \, j% A* ^ ~. x//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);: F& ]8 t; {( P1 K
lpRect->OffsetRect(0,rcWA.top-iY);; A$ _9 l9 N9 [* h* m7 ^
AdjustPos(lpRect);
) q0 B1 [/ W, \6 Breturn TRUE;
& q+ O! r6 @2 K, d& F$ s}
; L+ y5 G/ d) F2 ]! ]2 \if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())
. k" \9 l& P6 o$ f% A. T3 E9 d: }{ . a4 i0 ~3 I, j) v! O4 h; g
//调整右
: N8 `* ]. i1 v, X8 D5 N9 W//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
& t; A. l9 }% R; t, I! @! k4 PlpRect->OffsetRect(rcWA.right-lpRect->right,0);
% U: I( A* V4 k1 GAdjustPos(lpRect);$ `7 m) M; F% _1 q
return TRUE;
8 N. G3 i$ R' C I}
: j- B/ [* L8 i, e; R( U9 gif(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())5 i4 N9 J9 p) @, c/ l5 \
{
( u G7 m4 A8 }" M; z//调整下: x3 c0 S3 y! t# M
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
. H1 n. z* n5 ]0 Z9 B+ G6 tlpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
( U% _& `5 O5 X4 t. M# [return TRUE;. X3 n* F( `4 i/ H
}4 c, V; x' [1 \3 S" Z
return FALSE;- a: c- b' i7 H6 L' j2 y
}
# U& T" \/ k5 W; f' B//然后在ONMOVEING事件中使用所下过程调用8 o* n, e+ ~! U
CRect r=*pRect;) ? x6 U) j' r. t$ v1 H
AdjustPos(&r);
( a+ {/ g8 [3 h, w9 J$ `*pRect=(RECT)r;
1 N+ }( b2 N; Y4 z" U5 g# G( H( N( ]$ L2 @1 ]3 K7 }3 c6 I
4 ^) p: t, u3 m J0 F
十二、给系统菜单添加一个菜单项& q+ ?7 S6 X/ n U, F9 f
给系统菜单添加一个菜单项需要进行下述三个步骤:& y4 L/ U3 y1 y& b- ?% q) k$ W
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
2 k A: Q0 Q! T/ s4 z3 | P# T
* U0 T+ F9 ~ o0x0F而小于0xF000;
' E) z. `; f: s3 Q3 g6 j3 r其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加
! @/ r2 a# p$ C. ?9 N5 c$ w; C" }0 v( X& a- O* H
两个新的菜单项。
6 }; Q5 I- x) ]+ y) W, nint CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)* E! y, v) Y, t$ a0 q; \9 F
{% n- H; Q# F6 ]$ ^
…7 W1 c) B7 i# k# m$ y! ~+ K& E8 P9 _) u
//Make sure system menu item is in the right range.
0 x- |4 @1 W7 A% dASSERT(IDM_MYSYSITEM<0xF000);
9 W, `8 Y( ?# | {//Get pointer to system menu.; o2 N# p2 B2 V" ?4 P- W- g. g
CMenu* pSysMenu=GetSystemMenu(FALSE);" ?' Z' [. g5 O6 S) H8 P% | k4 H
ASSERT_VALID(pSysMenu);
, G3 B' E5 {6 Y( q//Add a separator and our menu item to system menu.
3 Y& ]7 Z3 u1 V/ g, x. `CString StrMenuItem(_T ("New menu item"));4 D4 Z3 r$ L1 f1 d
pSysMenu->AppendMenu(MF_SEPARATOR);) K$ h8 |3 ^$ A4 v' V O
pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
4 F- F' u U& `4 @6 w…* ^# h4 d& c7 d3 i; P
}</FONT></P> |
zan
|