- 在线时间
- 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
3 c0 M# A( g: f/ RmciSendString("Set cdAudio door open wait",NULL,0,NULL);5 c+ t/ T' B' x' W+ m4 [- H9 ]
! @7 S6 Z9 e3 b
$ Z( ]0 a, K& x& R* B5 X+ g, [
二、关闭CD_ROM! j' Z# X( j2 @
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
. n. k- {/ m) `
" ~- D6 G' g7 ]9 b' f0 K+ T1 k& R
) j. }6 W+ }* [7 z% y0 W) K三、关闭计算机
( M5 E0 O. H9 V) {0 Z& nOSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构% i( {, b; `. q% r6 d" _; [2 v
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);! V* X6 r5 w+ c
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息8 u7 C( Q# y7 B/ S$ P$ m
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)( J' B1 `" l" X) z
{7 Y; @& H+ F" O9 \- x- l$ R0 p: d' _
//Windows98,调用ExitWindowsEx()函数重新启动计算机6 `; \. r2 r4 w) k
DWORD dwReserved;
4 o# {3 y$ ^/ y r7 D; |3 GExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
2 C9 }- x E Q0 B4 n/ E* C//关机、关闭电源等操作
7 \% e& _. j+ ?! K" V9 D$ u2 ?* z j- X- q# i
// 退出前的一些处理程序* q1 Z P/ Z/ w
}
' n1 x% e: q( s! N1 U, n8 `( G; h9 }: N" b# G" ^3 i" d3 v
4 L' P# @6 R/ r% x8 H& ?/ L& h四、重启计算机# q$ W6 C5 b' W4 n( h' D9 V6 n
typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
( C6 G7 ?+ Q( z' N" _: H' I! FHINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
' w* C3 n6 g0 FSHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针 L% S2 d6 Z4 {
if(hInst != NULL)$ C* h8 }: L$ e! f
{3 e8 d2 U% [! D0 C
//获得函数的地址并调用之
- M2 j: P W: P! x/ P/ pShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);8 U7 X. \. t* c6 c! H
(*ShutDownDialog)(0);
' E, C# Q- S d. c% X}9 j9 P1 O" Z& u9 Y$ S, K
1 t! \+ u. m/ W9 @: U5 l
9 I# [6 G2 z5 b! b& p+ I- J$ a
五、枚举所有字体
- n) t% z9 a, Y5 r: T0 g0 ELOGFONT lf;7 [3 I$ T( J! I6 X3 T
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure, _" t+ B) L" a
strcpy(lf.lfFaceName,"");/ `; h6 A3 b$ {/ M: p
CClientDC dc (this);
& x- q3 {' G! _2 ^7 C) r, q% @% g1 y" U' y# O. T+ e
//Enumerate the font families4 s8 [! V& Z1 e* `4 G# T
::EnumFontFamiliesEx((HDC) dc,&lf,
' v! b: @0 G* d(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
, i. X/ [: ?% j# d. z# v/ ^% p$ M( H$ E( u: Q7 {* B1 |3 A% S
//枚举函数5 x5 h6 C- a8 c. w
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
& b7 @& g1 U ^+ m" F/ D8 B{
! I- d; i2 p4 Q8 k( c// Create a pointer to the dialog window
+ |# S% ~; {. i) o a; _CDay7Dlg* pWnd = (CDay7Dlg*) lparam;& u0 u/ N" U; _( J
// add the font name to the list box
0 `% S2 g/ }3 ^" I# W" e
0 p8 {! H" z/ o; EpWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);: k T! k( ?7 S- g* j
- ?5 k# e( q7 N ]& Z3 P// Return 1 to continue font enumeration& F( }# m' ?# i7 h2 G
return 1; K6 T2 s6 M- c/ ?( j
}/ D. b* M% o0 i# N, W) W
其中m_ctlFontList是一个列表控件变量
2 J9 {7 K( u% y" O' [' L( x; N5 T) H9 Z& K% J6 u2 d1 e# r
/ H5 U8 R: u: b
六、一次只运行一个程序实例,如果已运行则退出# e- N$ ?4 A+ q* |8 [
if( FindWindow(NULL,"程序标题")) exit(0);
& _3 r/ E! L8 x/ E# W1 d7 N% S" F. p( I& ^
( k2 g$ |6 p, u! i* Z9 c& d
七、得到当前鼠标所在位置5 }0 A6 o4 a$ h9 E! {
CPoint pt;
. ^6 P; r' J1 E9 a- D8 [GetCursorPos(&pt); //得到位置, C- l1 E/ X2 F& k6 X$ X' n+ ~+ g$ |
: p8 G! b3 V. d+ ]! g; V
% h: Q; z( o2 b; }
八、上下文菜单事件触发事件:OnContextMenu事件
/ G' A ?5 F5 l. U% g s* e
0 @" f6 w7 X; ~$ U# P+ y5 g
) K) `/ ?" {% Q# m7 r4 F U* Z1 [九、显示和隐藏程序菜单
% U* P- V- U4 J; H' UCWnd *pWnd=AfxGetMainWnd(); $ _+ Q- t2 p' `( H0 d
if(b_m) //隐藏菜单
* b/ j0 D9 s% @4 o6 Z3 J' Z9 p+ T{/ e8 W! Y+ c6 f
pWnd->SetMenu(NULL);* S n- d9 A" ?# B! D" d4 \/ c
pWnd->DrawMenuBar();4 V+ A' D+ r) j( i5 K6 C' S
b_m=false;) X( x3 t' [0 d4 f
}( }) D6 g. W% f* n( B3 ?
else6 u7 |# O* R6 e: v2 l
{
8 {0 P% G/ Z( v1 _7 |) M2 ECMenu menu;
* e9 g/ l& Q0 K1 }0 _1 r! s( |3 u. Rmenu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
0 N" b( P9 K- I4 E% g( `pWnd->SetMenu(&menu);
$ A ^3 T/ ]5 J; p hpWnd->DrawMenuBar();
% W) f( S7 v( }5 {* p7 j. ~b_m=true;
; H" B$ a3 g: Omenu.Detach();0 V. f2 Z* j1 ?# J4 n
}
+ ^! o8 Z2 q5 s1 F3 {! v5 z& o
! I. h% n9 }! u' g2 c+ s# B
) k# q& _! ^9 W/ J十、获取可执行文件的图标, e- p. m. j- { _2 N
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);, n* W$ V9 z; V9 b
if (hIcon &&hIcon!=(HICON)-1)1 k% N4 l2 p1 K* W* P
{+ s S2 }- B2 p* U
pDC->DrawIcon(10,10,hIcon);
& E7 A! d: O$ g2 k}
, w7 u) Y$ x7 _0 KDestroyIcon(hIcon);
- h: a* h4 Q0 E9 S& g十一、窗口自动靠边程序演示5 ?; X- b7 m" U D; U+ R3 h
BOOL AdjustPos(CRect* lpRect)! {4 v. W. z/ q" |: ?
{
8 R" w5 o* z. T0 G( V$ N//自动靠边
6 \& W, e1 p: Y1 kint iSX=GetSystemMetrics(SM_CXFULLSCREEN);8 |, C W. a: D. b9 O4 Q8 P
int iSY=GetSystemMetrics(SM_CYFULLSCREEN);, @! e4 ?4 d2 N2 g5 @
9 m1 J0 S. N) u9 I( ARECT rWorkArea;9 G2 e+ V2 l9 D4 A9 D; _
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0); ! ]: [* C! Y: X! K! e
$ n4 R7 j4 ]% _' h* Y! zCRect rcWA;/ ]: K- Y# O8 t9 b/ @1 Q
if(!bResult)
0 e5 Q2 K( ]* b( d, Z% m{# T2 d1 M+ h$ T7 S# K$ {2 Q
//如果调用不成功就利用GetSystemMetrics获取屏幕面积' z0 R1 n& R+ e) F& B* Z
rcWA=CRect(0,0,iSX,iSY);
' U4 b* M5 B: p' g3 B}! V+ V+ [: x. T" V% c
else& `! s3 n/ E; s+ m$ r! e5 ]
rcWA=rWorkArea;
! \" }; H) s- [' ~' ~; n/ |. m
7 W- L/ o, t7 B* u+ ]int iX=lpRect->left;5 M+ u( L1 p ]0 |
int iY=lpRect->top;
3 t& Y: [( d8 V" lif(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
- t2 {" `& b" b5 [$ h. a. O{
$ V2 f0 d' |/ z) K& u5 H//调整左2 O2 Z. ~) M) K( X. a7 Z: x
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);8 G6 Z# u# R/ e* ]
lpRect->OffsetRect(rcWA.left-iX,0);
d9 X, s/ }+ V* m! s- tAdjustPos(lpRect);3 ?* c, q7 Q3 W1 Z
return TRUE;
6 F+ M+ h# [- ?2 e% C}( W' r. n- _8 H' a. x7 }" u
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
2 P6 z7 p8 {7 E" B{ P7 Q0 x, y) G1 e( q( [
//调整上 g3 B k. _# f }: H: ~6 {5 c
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
" S; {" _& W/ c4 Y1 s ZlpRect->OffsetRect(0,rcWA.top-iY);- Y$ l1 _- A' j/ t' {
AdjustPos(lpRect);
1 l/ P; f3 n/ D# M( H( mreturn TRUE;
! P; e6 p' L4 t9 q& [0 f& K& k}! l9 T6 L* U+ k0 W/ b
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())
& z8 Y- N. _7 F) K ]. l+ p' {{ * d* p5 d Z3 e
//调整右( u& O4 `! f8 n* U# t
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);) d S3 {' u+ x8 ~7 H3 `
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
9 a) d) q$ v1 a) f* [AdjustPos(lpRect);3 f$ y+ i; R- U8 Q2 o3 t& ]' K0 U+ J
return TRUE;
" w+ l/ l7 N+ s7 S6 b) A1 [}; o. f2 s$ u3 k- n6 _2 T
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())' q# C& g( F4 K% q& o
{
" Z4 y; ~; s+ ?6 [" `//调整下/ @. [+ G: f, F: Z
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
+ Y8 \8 G7 V# g3 vlpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
8 x( v" ^& g* u9 z: Y) F9 O4 |return TRUE;
. v4 Y& n2 Q- P& V+ \0 u}
7 v+ |% W7 ~/ f6 F9 @return FALSE;
6 V' u8 l+ r8 u}
, \' L3 Y- L3 h' U1 Z" I/ q! r//然后在ONMOVEING事件中使用所下过程调用! l3 l/ q/ |% X2 a
CRect r=*pRect;" n5 o# Y7 @. u9 f z7 r
AdjustPos(&r);
; P8 N- Z# P \, B*pRect=(RECT)r;
) \2 s# L* b5 H( C; Z' p: y' ~/ O y" N" u7 E) _: h
* w) n/ z! r3 S) M" `" g `
十二、给系统菜单添加一个菜单项7 D- w" s- G6 b7 u! f- Q
给系统菜单添加一个菜单项需要进行下述三个步骤:
4 r! l( K6 I! i7 V0 p9 j7 V& O首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
5 R0 k8 ~& {: Y) h. f0 B3 C5 r, j. i5 C# x+ Y
0x0F而小于0xF000;
0 ~8 D) s& U0 i+ Q其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加) l$ u8 z; E4 R
, w- H- Y: g" I) [; A* _( M) Q两个新的菜单项。
( x+ J1 f6 x( I# c' |4 ~7 zint CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)- X U" w/ U* s/ }" S% z
{
& u7 b; }. U/ S# D+ `: i6 M…
. E' [( m' l+ @6 Q//Make sure system menu item is in the right range.2 ^& q+ m6 x6 c1 Y: o2 d5 ?
ASSERT(IDM_MYSYSITEM<0xF000);- _" ]5 b' R' w; M" v3 L4 `4 ?% B
//Get pointer to system menu.
- X) G% L3 S& D' V! Z5 L9 N7 VCMenu* pSysMenu=GetSystemMenu(FALSE);
+ d H" r# G2 J' R' F' ]ASSERT_VALID(pSysMenu);( d2 z- G& p# \5 D2 N
//Add a separator and our menu item to system menu.
o$ U9 x6 a+ ?+ y7 {: J3 ^CString StrMenuItem(_T ("New menu item"));
' L% X% t( O* W( @7 w3 ipSysMenu->AppendMenu(MF_SEPARATOR);
6 ]: J; K$ X( C4 G& U6 D/ O. V P7 ~9 [pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);. Y5 Q. _' ]. W, _5 O
…( ?& I. S9 H. H6 r( g
}</FONT></P> |
zan
|