- 在线时间
- 63 小时
- 最后登录
- 2019-5-3
- 注册时间
- 2004-5-10
- 听众数
- 442
- 收听数
- 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
5 T5 X t4 K! i, P, O$ T0 KmciSendString("Set cdAudio door open wait",NULL,0,NULL);
1 H9 y: E7 ~0 c$ f, @& U& Y' L9 Q4 r7 ^, \( x W
1 Z- @" W/ n8 O! E. O! d二、关闭CD_ROM$ |- R0 f. k; _
mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
& p( r. P6 {7 c6 G. k( m: r+ y$ _- x2 r% u3 X
% ?# j, z1 p7 G5 h8 }- \
三、关闭计算机7 i6 H, d u; i" C# K# |. N
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构9 y! E1 ], t0 e+ _9 `
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
& X* V+ y Y% O( ?3 J' L- WGetVersionEx(&OsVersionInfo); //获取操作系统版本信息
( B, r/ i/ l6 w* W7 ~3 qif(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
. l5 Q7 B ]( L: Z6 G8 F/ d{/ m/ i7 X8 a5 h7 `" H$ \
//Windows98,调用ExitWindowsEx()函数重新启动计算机; R4 Q$ M+ K. ~7 Q N1 t* B5 q6 X
DWORD dwReserved;
3 G$ @5 v6 o; U$ Y: K/ F( q* \ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、 6 z3 F: q0 J- L9 q, s
//关机、关闭电源等操作0 w( ?1 F- g; x3 Z) ]
; U+ p4 m4 X; q C, V: o9 D R5 G// 退出前的一些处理程序3 y' `# _& U5 K2 s! j: V
}5 A, O. ~* V" I% B
: ^' v+ N8 ]4 M. f6 v) y- r/ p
: B3 Z+ T) F- m; Q四、重启计算机
! E- ~# U% [0 Z" j9 i, S3 btypedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
& \+ G5 l; J, Y6 [ w: b" T: DHINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
]" i% s8 O3 X) R3 I! bSHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针) S2 M5 _# r0 V2 i5 @' Y! Z
if(hInst != NULL)
' `3 S. i& y; y f* U{
7 |( ]) r7 j7 x% j# w//获得函数的地址并调用之, c, h: ~& l) v t5 D, M
ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);' z+ k j" J1 b7 [0 |
(*ShutDownDialog)(0);) M9 Z; {# O5 ^0 F( p1 ~
}1 ?2 Q0 w; M% k/ i1 w6 S4 p0 A
) A9 I8 d, p* L- t) Z# K
. E# P J0 n) p0 Y. r$ W五、枚举所有字体% k% l+ ^2 q% s1 J
LOGFONT lf; Y! z- Y) c; B# L
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure7 E7 D" [( y7 }8 \: C
strcpy(lf.lfFaceName,"");
7 _1 z) k5 o5 M( D6 P/ Z) _3 uCClientDC dc (this);
2 q/ v$ F0 U1 k+ Z1 @9 l3 W6 l. T. q( L2 r3 E1 J* g
//Enumerate the font families0 G- P8 v! W4 }6 Q# e" j3 ]# L
::EnumFontFamiliesEx((HDC) dc,&lf,
l0 e2 x8 l% J; [1 o. ]2 L t0 V" {(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
, \) n# C' B+ U
8 w$ |3 a1 l( m$ g% l//枚举函数) [0 p6 z" A4 _
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)' S* [3 X0 o5 O7 _+ T* r
{
6 ]# K) D N% D// Create a pointer to the dialog window
R$ F- R" ]2 X6 z$ }- k2 q7 d# yCDay7Dlg* pWnd = (CDay7Dlg*) lparam;$ k# q2 e$ \: T8 ?* G; b* g
// add the font name to the list box
$ \1 V, O( X5 U) B* h- R4 g( e7 {. [5 z' s
pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
. T a6 H. E" \; T+ r+ x1 W* E8 w0 c1 u4 J$ D% D2 v5 M
// Return 1 to continue font enumeration+ u* o( o6 A, c" L! m
return 1;
0 F9 Y0 o" A; r/ c1 H8 z C, Z}
8 {% x2 O: i, U, b% a: z其中m_ctlFontList是一个列表控件变量
7 @) r& c5 N8 v0 H: E/ l+ O# O( h3 y) y5 D) }& D2 u
$ [; z w W! ^0 d+ g六、一次只运行一个程序实例,如果已运行则退出
V( {; q- j5 oif( FindWindow(NULL,"程序标题")) exit(0);
% B2 ?; ?# c! ]% t0 |; ~% e
; E0 v* T8 h. c- z+ M% l) n" j& H9 ]0 Z
& W$ Q" h" k3 ^4 m" X七、得到当前鼠标所在位置% F1 |' {% `% {0 f4 k
CPoint pt;
" h; M9 I! y1 bGetCursorPos(&pt); //得到位置
8 @' o$ Y. C( V8 b
- ^) ]" U* i8 ?& O. |$ P" K% ]1 f
2 c* P- i$ L- P! d% |6 K! Z八、上下文菜单事件触发事件:OnContextMenu事件9 N2 A2 r% T3 C" k1 P2 T5 S# l
5 s7 L8 d8 q+ c0 }/ G
+ D- @5 ^; H" v0 ` E# t' T; W+ P9 h九、显示和隐藏程序菜单( V) Y" S$ a& g
CWnd *pWnd=AfxGetMainWnd();
0 N! C8 p9 S. D/ Z: bif(b_m) //隐藏菜单7 z- F% n! ~2 U0 L
{
3 t' r% Y1 P8 a; @. PpWnd->SetMenu(NULL);; L; G4 y) s3 X
pWnd->DrawMenuBar();
# ~6 ~: ?7 W2 A7 N, y Rb_m=false;
" @$ l& b6 q& o. Q}# s! h: O4 S& g; B1 Z8 j7 }0 r! U
else) O! q$ B- {' H1 p* m
{# V1 i; Q' d) n
CMenu menu;0 l* z$ O+ _6 K/ [1 v
menu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
2 s. V+ N ~7 C3 @. e3 bpWnd->SetMenu(&menu);
' p. ^6 F' F; V5 v; @; cpWnd->DrawMenuBar();6 d' h7 h- `0 }! D* y8 Z2 u
b_m=true;. I: R, b) R& l4 b- z
menu.Detach();$ w) F S( |* y
}
4 o7 P4 e, q9 Z4 \7 P
2 `* _+ ]+ `7 M
5 }& Y$ ]$ h5 G5 ~% w8 F0 @* V十、获取可执行文件的图标, g/ j A* a7 c) B, C+ R1 p
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);9 ^) L5 o7 Y2 t* U& M+ T+ N
if (hIcon &&hIcon!=(HICON)-1)
7 g* j0 z/ o3 Y& ?5 [& P{
E8 V6 V4 E9 V7 h7 \pDC->DrawIcon(10,10,hIcon);% G, q9 h* n' S$ ?+ W8 |
}
) h" x8 E/ G/ Y3 k4 M; k$ aDestroyIcon(hIcon);1 K9 B( L' f3 M9 l- w7 J
十一、窗口自动靠边程序演示
: q. t5 Z" l3 T* [ sBOOL AdjustPos(CRect* lpRect)6 G# K5 A) m% y, R( x/ z$ m
{/ P( E) ]! \5 [5 F' l- a. t7 B
//自动靠边# G6 V" R9 e9 J/ J _4 A: r
int iSX=GetSystemMetrics(SM_CXFULLSCREEN);
; _2 N% v$ N. i& J) E$ ?int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
& X: k n% N' Q! T- W) E% E$ P: ?/ a
RECT rWorkArea;
5 L8 y! n3 }. L; l9 V) L7 X: aBOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);
: D: f5 {7 k! _
' D9 |# s6 |) ]/ u% x. PCRect rcWA;2 J- ]( W$ Z5 v. R1 e3 }# \3 U' o) \
if(!bResult)4 h' }$ S& }$ q, o9 R
{
" r) F z9 L( [2 |7 g3 [( `1 ]# W//如果调用不成功就利用GetSystemMetrics获取屏幕面积
/ {6 ~ n, v! }3 l5 T% HrcWA=CRect(0,0,iSX,iSY);
9 |6 H! M: ~* Y- k3 h}
' d) p" d0 f1 Y* ^+ ?+ Uelse( W( [0 P9 w1 Q! @; x" r
rcWA=rWorkArea;( l- G1 e! ^* S5 U
5 b0 P: Y' ^" m: Z: ]/ w# A
int iX=lpRect->left;
7 C& k+ T5 V3 gint iY=lpRect->top;
1 p8 k; ]" E* p. Yif(iX < rcWA.left + DETASTEP && iX!=rcWA.left)
- U `* p% B0 Q; l' j8 ?4 n9 G{
, ~' S- F5 c' Y+ g. \) ~2 a' Y//调整左( k6 d7 @& B6 k7 \
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);: D4 U; ]0 L! A
lpRect->OffsetRect(rcWA.left-iX,0);. O/ s, P2 }9 ?, {
AdjustPos(lpRect);
" r1 B( v1 l% `6 {/ Kreturn TRUE;
1 z# Y1 k6 z. t}& H3 j! k) m ^2 y7 r
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)5 S# o" R. J8 m4 o9 R' _
{4 E6 l' j3 i7 Y, t: u I8 V- \
//调整上
5 ?( |7 u j8 N8 a/ K//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
8 t' V7 l* L/ |3 M, \* g5 \% }lpRect->OffsetRect(0,rcWA.top-iY);
( n! h2 x; @1 T( z% G: YAdjustPos(lpRect);$ }4 ~& d) Z$ N
return TRUE;! a5 ]; y* W" b' J6 G0 O
}! N. t' B1 @0 F
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())
% U$ e( s2 c, [! |4 ?: ^0 a{ E# v3 X& q, `" g+ V9 @9 o; n" i
//调整右* l% }: C, I4 M3 k ?- _( ^
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE); X0 a7 d9 X/ ]
lpRect->OffsetRect(rcWA.right-lpRect->right,0);% Z0 w8 k" |: e, e) T& O
AdjustPos(lpRect);; X# u+ A) M4 B& w4 ~
return TRUE;
; ?5 Q. e2 G+ F}* z& H0 N* q/ O! i, H8 O( _+ s, C
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
7 J2 ]. E1 c4 A1 G, m{. ^4 Y% w7 C: |7 A) ?
//调整下
, S2 F! J+ Z5 V0 a f$ W//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE); V: ]! z5 g1 A( j4 R
lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);# y" D: h3 n! n( D2 u! q
return TRUE;
8 C- F) n! O4 C}
* @$ c* S! v1 ], q k6 ^return FALSE;
% {. T8 n& H1 W}
" n- L" G |- {% g( m' h* v//然后在ONMOVEING事件中使用所下过程调用9 X+ f+ e" i/ K0 Y* E% ^
CRect r=*pRect;
8 j" D6 A( T7 r+ A. yAdjustPos(&r);) n& P) `! k, k* k
*pRect=(RECT)r;( x& o/ h4 y" A. S% `8 x
! `3 C# F# i& F8 A: q& \ E% z' \& J9 U% H U
十二、给系统菜单添加一个菜单项$ q/ M" Z$ J" D7 U d @ \2 p
给系统菜单添加一个菜单项需要进行下述三个步骤:
/ n# b, `) U1 @7 I) Q/ Q首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
5 Z5 Q; ?& l, w% R% U/ j5 O E, u; O
# w3 |% `* T- X/ s2 [% p0x0F而小于0xF000;0 J" }% o. `% Y
其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加1 K" _9 p+ ~% T1 X4 A
) L) S$ d) w( @6 i9 Z6 G$ _1 y5 n
两个新的菜单项。3 B, o+ s% I1 Y# t" w
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct); e2 N0 P3 D- M* Q" |7 ~2 l
{
! y' B7 N; a j/ n# b& G# g ~…: q" L0 l+ w/ A# L) O" P5 e* S* b! |, H* p
//Make sure system menu item is in the right range.
5 I: a z: R# _* I0 WASSERT(IDM_MYSYSITEM<0xF000);4 W. U- E8 w5 W f* z
//Get pointer to system menu.
' f, X6 T; ]5 h6 |! DCMenu* pSysMenu=GetSystemMenu(FALSE);0 N/ R1 m( C! b; _8 Z4 q
ASSERT_VALID(pSysMenu);
# y! s- @. |. |//Add a separator and our menu item to system menu.
- P! ^" g2 C9 j3 U. q+ P& t& ]7 ZCString StrMenuItem(_T ("New menu item"));
$ ^+ C* }9 Y" q& `pSysMenu->AppendMenu(MF_SEPARATOR);
5 ]4 f' e+ d4 [pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
$ V3 ?4 W \" |4 w* [7 Y" f j s…
4 C. E4 B2 i3 P}</FONT></P> |
zan
|