- 在线时间
- 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
" X, Q" W' c& C6 n( t _4 NmciSendString("Set cdAudio door open wait",NULL,0,NULL);3 R* M2 L/ L- C4 h0 Q+ W6 j
9 p- ]7 w L& \- q, M: _2 O0 S# f0 Z0 |4 T/ x# z
二、关闭CD_ROM, z" R6 j7 Z" O) M8 j2 p' ~. q
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);1 U5 L. C- s) X, s
, G* w6 ?! Q1 Q# }" h. K0 ^5 V) C% P3 Z3 p! [, o. P/ x% d
三、关闭计算机9 P; i% R6 b, F
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构- _1 U7 e* m8 x0 J' Z3 m
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
( t1 q' }% B2 O( XGetVersionEx(&OsVersionInfo); //获取操作系统版本信息9 c- ~5 g4 l- N6 ~
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)5 Z8 n+ d4 M! N& `6 p! O
{
0 l% B; v$ I9 I% K* a% K2 ]//Windows98,调用ExitWindowsEx()函数重新启动计算机. f) N8 O8 F+ P
DWORD dwReserved;; E! Z1 g: J2 Z. p! C
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
2 m: ^- {; F9 f9 o# o, k3 C//关机、关闭电源等操作0 [( I* J7 a; U; c1 p9 k5 X8 a
/ I' w: _' a: W" z' z// 退出前的一些处理程序
2 Z1 b' L& X+ N! M}( P' S3 C4 s2 l
" R; W* v; ?' X* f, ?0 U/ R
, w' ]: \7 @6 H4 L四、重启计算机0 S& e$ ^9 Y% O. p" U
typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针+ I, M; E# T: N4 o8 M
HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll- O5 L& z( ~0 k" Y
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
- `3 J4 z6 Y* L5 V) Pif(hInst != NULL)
3 t$ Z! h2 [8 @+ J3 i{
, b* F5 s# z' ~8 w/ T//获得函数的地址并调用之& |4 s% j. k' {# X4 S' K1 a% h
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);. r! `6 u0 s$ C1 K* G$ N# O8 t, H
(*ShutDownDialog)(0);
. T- \0 z% D! \) O' |) o}) U+ X- B9 a2 E, m0 x
. g9 T6 E1 L* Y6 U! @; k0 R
3 O# G! c% }' H9 x: U* e五、枚举所有字体; Z& B5 \( v8 }; X) r7 d3 W, t
LOGFONT lf;* U7 G; c) \5 a* z( _+ N
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure* Z o7 I) S! T* K1 Q
strcpy(lf.lfFaceName,"");
, |' q+ Y! l/ V8 }CClientDC dc (this);) v$ W' c% k2 U6 y3 Z
1 O" f( \. w( ]% U( _% k7 P7 e/ n
//Enumerate the font families) Q" o$ \* ]% B
::EnumFontFamiliesEx((HDC) dc,&lf,! l9 R1 E, U2 T9 T
(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);9 G2 U! @/ s7 J6 j! K( B f
/ l, `5 [ o! o9 _7 P8 z: {1 F
//枚举函数
" C9 K! p7 n$ `6 |! G! eint CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
( M7 I: o# G7 G, Q: ^4 u{
8 i4 K& | \) t! P* Z8 k/ {/ n9 a2 k// Create a pointer to the dialog window
) Y3 N7 { }- k1 nCDay7Dlg* pWnd = (CDay7Dlg*) lparam;" P' D+ O0 ~4 V$ A
// add the font name to the list box
! b* C1 F) D% b0 [: a
8 x4 Y3 X3 Q0 v* F! b# W% P ?6 J8 ypWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
: |8 c k$ [' Z+ ^6 h* T9 k* U9 l: ^! b1 h, ~# o- V2 [+ ^3 s. z
// Return 1 to continue font enumeration
! c9 [3 c% c4 N: [$ Areturn 1;
/ K1 |% N8 s% `. J! _3 D) \}
0 T" s. ?* \2 G6 f+ Y+ x其中m_ctlFontList是一个列表控件变量0 e: ]- O, u! E
6 `) m* L* f) H5 x
% ~ Y" N& e* N- X/ n* _: r! \六、一次只运行一个程序实例,如果已运行则退出
9 Y' J9 w) W' x* v% nif( FindWindow(NULL,"程序标题")) exit(0);
$ ~( _4 y+ _5 T5 h; O! H- m) I2 y ~- d R6 x3 n
! m4 ~. J8 h% ~1 u! S七、得到当前鼠标所在位置
1 _: `' P. Q8 ^" g4 YCPoint pt;" ^$ ]% I* {: q' u* O
GetCursorPos(&pt); //得到位置
: X4 T0 j! w( v0 B! @+ K5 O
3 v4 C$ L8 ]: t4 q
% p; |+ d5 g6 u4 P2 t2 M/ z八、上下文菜单事件触发事件:OnContextMenu事件; W- q q3 r( [- K7 w; J+ S
8 y" G3 ^: ^" {$ J: O2 {
* k1 F9 F7 T8 @: ?+ u& H九、显示和隐藏程序菜单
2 q3 c) E" j; f3 \' J6 u6 ECWnd *pWnd=AfxGetMainWnd();
- I# y# x6 u' p6 kif(b_m) //隐藏菜单
% M) l$ B2 h; k{
7 y3 P- b/ i2 cpWnd->SetMenu(NULL);
3 i; C" {) G cpWnd->DrawMenuBar();0 s: v6 H. M. q/ a' u$ A( J
b_m=false;
7 z) J. f/ E& E9 U}
7 J1 |$ x. [6 X, c. W2 Xelse- q1 ?- O+ Q+ K0 e/ l/ e0 u5 u
{% b+ v2 \% w6 g, P
CMenu menu;
4 n. F& B( |# [/ N* m9 h3 dmenu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
; b/ c7 e& E8 ZpWnd->SetMenu(&menu);
9 c/ b; M/ u) GpWnd->DrawMenuBar();/ @8 K3 W- V. V( b0 g" Y
b_m=true;
; i+ k0 r. V% M4 I+ n2 X) J: _2 c3 [menu.Detach();& l: F0 X- U" L: C7 h+ [
}6 M: a9 p5 f$ K5 ]
& g( J/ q& F! w+ x: m) [5 ^
* v! n, B# M& N/ p& i# J# l$ |4 [十、获取可执行文件的图标
# z1 a0 c0 O/ }! T% RHICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
~5 g; y; c' W, a6 n2 Dif (hIcon &&hIcon!=(HICON)-1)
" T' X8 f& A: U3 N4 j{& k# Y' f- S0 i5 k
pDC->DrawIcon(10,10,hIcon);
+ _: F! W) S N9 p& s+ Q# _7 W}
y6 C9 ^6 Q: j. c/ |2 w% VDestroyIcon(hIcon);8 `# v& x# L1 N `% u; z
十一、窗口自动靠边程序演示
* y5 {6 X) S6 y* rBOOL AdjustPos(CRect* lpRect)
5 V) v. h7 i& N+ J G' I5 S, X{9 ?* Q0 l) j9 v6 b! T( W
//自动靠边
Q; j% j3 ~4 \9 {4 i5 T+ Cint iSX=GetSystemMetrics(SM_CXFULLSCREEN);
# n, h- M) G$ gint iSY=GetSystemMetrics(SM_CYFULLSCREEN);# V! ^ k- Y# Y3 m4 p. y
% p6 I* |, H; K! r* |( U' wRECT rWorkArea;
+ y, K1 c: M1 j( w% H; A3 yBOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0); % u- V/ u' R4 S+ Y* }, a1 d: `
/ K ?0 W) ^2 ^' [* w9 _' qCRect rcWA;; e7 _4 J2 D$ }/ v5 z6 k/ ^- ]
if(!bResult)- Z d' j0 z7 L5 p
{* }, b' R" O8 a6 J3 Z1 Z
//如果调用不成功就利用GetSystemMetrics获取屏幕面积
" v0 U$ [- h- ^' KrcWA=CRect(0,0,iSX,iSY);, Z1 }- W, x+ _% l
}
# f, W/ D& \" j* qelse$ d, T9 Y q9 m' ^2 G
rcWA=rWorkArea;' N4 `, E! ~5 A+ i3 W
1 o3 M' t; l& u! qint iX=lpRect->left;+ C3 m) S1 Z c. B- B' `: r7 G! R2 V0 `
int iY=lpRect->top;8 L: A2 i3 u; A9 l( p. ]7 D
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
5 ]) w, _" Z v& W{/ F1 p3 G" \% O. t5 g. c4 n
//调整左( x2 O- z+ ?5 P5 U9 Q9 ^# H0 t( J
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);+ V2 T* F) U) w+ ^
lpRect->OffsetRect(rcWA.left-iX,0);
) y/ c" ^, c6 oAdjustPos(lpRect);
) o @8 X5 S: U+ ^8 v5 ureturn TRUE;
5 {- i+ N; B/ w7 q}
V, ]9 b8 l6 g" V' T' kif(iY < rcWA.top + DETASTEP && iY!=rcWA.top)- M* r. X( W4 Q6 @ S
{
1 G' |: V; S, \7 b! X//调整上) |4 D* g6 \( [, b
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
5 z, x- k! M6 ?& ulpRect->OffsetRect(0,rcWA.top-iY);
, N* C' w) H0 X- yAdjustPos(lpRect);
$ Q& R8 F5 Z& C, ^+ q# oreturn TRUE;
1 F* {! x) K [' \ g4 y}
3 Y. b# g0 E) _+ e! A5 K8 v/ Kif(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())4 U, [0 \) D1 }: h
{
/ Y5 ^- j" G4 L1 b//调整右
5 n9 U0 O8 h Z% ]//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);2 V# g1 i: D! z; y$ }
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
5 m+ b- s' E# K0 t5 \; OAdjustPos(lpRect);
4 u6 k/ A$ H$ A- O+ Qreturn TRUE;
, }2 t2 A2 [9 @/ @2 [0 `}& @3 w0 ]' m6 ?$ w6 p. j8 M1 g' t# P
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
) Y# ^2 A* g5 x5 R t! q* B{
! _ Q+ S- r7 y& }( l( g$ L) p% o//调整下 A$ ?5 n* m& D+ _
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
. F' P v9 z& z& t) P0 X. ~/ G; alpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);, N7 V! K) q, e# {) i3 ~8 \
return TRUE;; K( ?% |: B# ?
}4 Y( a" v0 b* m: ~, z; b2 A4 r
return FALSE;8 d2 t. P. J2 l6 J# i0 F
}3 h' D* W: Y9 x
//然后在ONMOVEING事件中使用所下过程调用7 Z% {7 s# e0 [" L) c
CRect r=*pRect;; l" B% ^/ I$ _9 T8 f
AdjustPos(&r);
" O/ Y5 r( k, J0 U; U*pRect=(RECT)r;9 J6 k/ {3 B5 q
% S' _, m4 G8 A8 G1 R. w3 ]
8 S1 y! {- W7 r
十二、给系统菜单添加一个菜单项1 r2 `8 o" i8 m( J/ {
给系统菜单添加一个菜单项需要进行下述三个步骤:, j7 r* a: ?3 y, [' S7 q
首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于- V; a4 l1 y( v% f+ {- r
- I) Y3 A, _% c; S9 ]0x0F而小于0xF000;
z7 T. J7 U. k: K其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加: X2 y* U% q" j# X# {
1 f) e& r8 \ |+ ^0 m4 c0 t0 a& D两个新的菜单项。
) t0 l$ L+ g c- l* |int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
& P1 c0 @4 L+ m# k8 e p{: T& u! e4 Z$ g0 S: n2 I B
…
( n6 c k4 m4 j- f; C6 S, Z//Make sure system menu item is in the right range.
0 D4 @, A- y' G9 D: NASSERT(IDM_MYSYSITEM<0xF000);
' m2 b9 ^+ S1 P: \" Y* b" }( O//Get pointer to system menu.
0 O# z1 j% C. T8 |5 xCMenu* pSysMenu=GetSystemMenu(FALSE);* k! u" ?3 X& W' z* a
ASSERT_VALID(pSysMenu);9 N ^% L% B. c+ j. S
//Add a separator and our menu item to system menu.5 V* G, Z1 Y: e5 O
CString StrMenuItem(_T ("New menu item"));! G, V# s O0 y
pSysMenu->AppendMenu(MF_SEPARATOR);
8 E! t/ T, g$ h- b; j1 kpSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
6 J7 I2 W$ P$ ~) a( ~5 u. V…+ x$ D, Y0 ^* j8 p" X+ j: F
}</FONT></P> |
zan
|