- 在线时间
- 63 小时
- 最后登录
- 2019-5-3
- 注册时间
- 2004-5-10
- 听众数
- 440
- 收听数
- 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-ROM8 Q$ Z9 V' b+ Q# q6 W, R
mciSendString("Set cdAudio door open wait",NULL,0,NULL);7 O) _" n) z+ e& b
1 }; X, a6 ~0 J
+ f6 Q _+ Y+ g9 u- ^1 e
二、关闭CD_ROM
8 E3 {. }6 f2 s2 J. L- [% L) x2 jmciSendString("Set cdAudio door closed wait",NULL,0,NULL);8 Y2 U, K3 J# D6 R
6 ]$ Z X B% l, _
. H% x+ |$ X( E: o三、关闭计算机. a$ F- Y$ c$ e' k
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构
# C/ D8 t5 c# E8 O6 m/ OOsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);7 w N4 o7 n) O7 b8 v
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息, S" Q, {! b1 B! e* ?
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)5 r- _- z1 F5 ~- ?& ?- P
{
4 w( }# ~7 x2 m8 _5 E0 v$ n//Windows98,调用ExitWindowsEx()函数重新启动计算机
$ F: W) v6 s* H/ o' ^; aDWORD dwReserved;
( ~, G$ F9 S. G& ]ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
* L) n1 C& T, W' A! d//关机、关闭电源等操作1 I) t4 Y# j- d- F" q4 B# Y' F( c
' k7 j5 g2 d& W6 F. e9 l4 s* `// 退出前的一些处理程序
' S: u) e' z/ r8 h( w5 d! q- y. v}
/ X+ n4 P0 d! z/ j' Z/ [
7 ^" \) M0 r" \9 Y' X" d2 V; W& ^; N: C4 f2 B
四、重启计算机
: d, u0 ]; l- ]9 ?- P- |9 b: Jtypedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针) \+ n$ O& h# K7 l" Y; U. c
HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
+ s( d+ C* ~" Y0 |, aSHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
7 ]! [' M# d8 C9 u! Y) W4 N* ]+ tif(hInst != NULL)
! |2 p! n+ H! S S3 B0 K% q, Z( ~{ \' _5 {( K2 ?, i. r
//获得函数的地址并调用之
; o A2 U- l( |! q- LShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);# [( i5 ]8 @, V1 c
(*ShutDownDialog)(0);0 I# s; ~/ _; G! e
}
. \' m/ z* O7 J( R2 h* D' B9 T5 t9 x: Z4 |* @! b2 J5 d& D, l2 ?
$ `: k' O7 u% x, u0 P
五、枚举所有字体
/ {/ j& \7 s9 A) \, }) hLOGFONT lf;2 c W F0 w5 B) B$ H9 ?
lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure0 M) ~9 H) F5 h; R& T- o
strcpy(lf.lfFaceName,"");' _& U% M% a2 {: |$ f" |0 q
CClientDC dc (this);9 A9 K5 x5 g- `% _/ ]! J
, |$ X8 L+ \- W; G7 l
//Enumerate the font families( e9 P& H) y, ]- o# A
::EnumFontFamiliesEx((HDC) dc,&lf,3 C$ K' {! P$ I4 g, |' X; a1 T5 }* \
(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);
; o$ c6 d3 K1 t
. T1 O0 r5 `- M, B3 C) N" g//枚举函数1 ^; l0 q5 ~% p- H2 L
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
+ w' t. L( d5 w6 |" M% y{# U2 n7 R1 x1 N7 \1 R6 s' R! O! Z
// Create a pointer to the dialog window
" Q$ O5 @) C: v$ vCDay7Dlg* pWnd = (CDay7Dlg*) lparam;) {2 o; J0 r% w7 C+ w- A9 [
// add the font name to the list box; g" k, h( M" w% L
, }( i+ ?- v$ N- S2 OpWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);
- ^6 C+ Q% P- E* r% t h# O, C* l% w" R
// Return 1 to continue font enumeration
" e3 R n3 C$ S8 Lreturn 1;0 a7 W4 o4 u4 Y0 d0 n; K+ y
}# R; d6 |( O% i# d6 `# J u4 i
其中m_ctlFontList是一个列表控件变量
/ g8 U9 a9 C1 L1 r, J7 ]6 p" B+ G( j3 ]4 b+ `) ^7 ~ t
3 v3 O5 A, Z/ W7 d; D) n3 u4 T6 D六、一次只运行一个程序实例,如果已运行则退出6 y4 F$ J; V( q9 z* e4 G
if( FindWindow(NULL,"程序标题")) exit(0);
2 l) M$ v+ C ?. K( ~; V+ s- p, \0 U3 d; z
, m! ^2 Z4 m9 }: F! h- G% N
七、得到当前鼠标所在位置
7 }# I/ D3 ]' w+ vCPoint pt;, |7 C0 C# s2 I# G4 E. p
GetCursorPos(&pt); //得到位置7 ^* j- F1 K& x$ V' X+ b# |
3 f8 y3 b( r4 q$ F
8 V1 T# {) D& G! B
八、上下文菜单事件触发事件:OnContextMenu事件
1 g8 [4 d- y+ I7 M; C; m6 m: V% G
0 P h- [$ u$ w7 V V) p& @7 X
) V+ Q2 r& j5 W4 {* j九、显示和隐藏程序菜单 Z+ b' O; B2 J L4 e
CWnd *pWnd=AfxGetMainWnd();
: g# r# ~0 {5 p& L" }1 Qif(b_m) //隐藏菜单
, e5 O" S# M5 ?# Z% g{
* H( Z7 _4 R x1 s( r! s' i% N2 n5 rpWnd->SetMenu(NULL);
' ~' h% N7 r8 ^' q' P4 F$ XpWnd->DrawMenuBar();
5 ^* g; a* r& Kb_m=false;! w- A9 F7 v( @% a6 S' T8 A
}
* s# g4 v" K- W6 nelse0 P7 K( ?- z8 r) z
{' `1 [1 V- f9 f5 E$ @! ^0 v
CMenu menu;4 c. E9 M# _* y
menu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项' L# G- W( O/ F7 } |
pWnd->SetMenu(&menu);
) u; b" ^7 A+ X* v6 v" b0 `pWnd->DrawMenuBar();% ~( n+ o# ^. O! X+ }6 i, y
b_m=true;" n( T' h! S+ K" K( |
menu.Detach();
0 v" U d: e4 Z( l- L}
G }* N1 X$ Y5 M1 x0 T
/ {) a4 ?& A8 s" m; [! L O0 G, Y" d4 _2 |8 I4 q( [
十、获取可执行文件的图标3 n8 r! H% P* ^3 u m- M
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
/ K; V# M) O4 f1 m* m! {if (hIcon &&hIcon!=(HICON)-1)
: h7 c2 L0 X5 T; x{
5 M8 ^: [) F2 n+ _pDC->DrawIcon(10,10,hIcon);
) s. m# }; T, X}
- o9 i/ m" N( S2 N8 uDestroyIcon(hIcon);
3 r. c0 c1 y w |. m十一、窗口自动靠边程序演示
" u5 u+ T; T; s3 JBOOL AdjustPos(CRect* lpRect)
0 Y; D ~% b; ~. b7 v/ t2 \{; D! |1 K+ C" f. t
//自动靠边
. F v3 q% M- eint iSX=GetSystemMetrics(SM_CXFULLSCREEN);
/ L; \, b6 y& G/ f8 xint iSY=GetSystemMetrics(SM_CYFULLSCREEN);
% C& J2 t# U/ j' {) P# }+ Y: X4 l+ k. o' }& u
RECT rWorkArea;8 O; k6 s5 U4 G" s; Q& I b4 i
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkArea, 0);
6 g3 O, |" J, A5 l. G r( h% I: ]9 K1 L& R6 f( Y( {
CRect rcWA;3 z; ]2 L! o5 \6 K' g* L8 e: [
if(!bResult)/ A! H) E* s+ N- t
{' D' ?; M5 L+ Y8 r3 x5 ]
//如果调用不成功就利用GetSystemMetrics获取屏幕面积, {9 J. W d$ ~
rcWA=CRect(0,0,iSX,iSY);
1 \! E7 w- a0 [2 @ m/ p}
- d: L* K" S2 J# `% F6 `else) L/ ]1 S/ v6 H. I+ v9 W
rcWA=rWorkArea;
6 R0 }! v- W1 s0 h
6 h/ @$ ` F7 Jint iX=lpRect->left;
5 b4 L) f- P& n! |! cint iY=lpRect->top;! x4 W9 \6 i9 w; S, N) D7 m/ m# B
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)- r7 z! d2 _& \" S1 C* n" w
{
+ ]( \9 M4 X+ u& k8 i& k- @//调整左
t3 c; T/ f' K# T0 V//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);$ i7 Z: |% R5 V) j0 f
lpRect->OffsetRect(rcWA.left-iX,0);$ D, A9 \/ R' D1 e
AdjustPos(lpRect);
' d, F; m+ W5 L, }- [" greturn TRUE;
1 f5 X# F, B" F- x" U, U. V. a) q}
' A" [% S+ w0 @8 Mif(iY < rcWA.top + DETASTEP && iY!=rcWA.top)
( J! g9 Q4 J: n( r) c+ R{% {! _9 a* f6 N* ~ ]
//调整上8 J U2 K/ t5 l1 Z5 o* ]$ {
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
% o) l4 z- G) L3 I( hlpRect->OffsetRect(0,rcWA.top-iY);' m: }$ n3 E: [# l. |* r+ q0 M
AdjustPos(lpRect);, M+ M, D3 N% d; |
return TRUE;
: d7 G) X0 w$ I! X" ~' _}. N7 }/ w+ Q! y A7 y
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())* G. L+ [5 t7 H% m8 R7 }0 g
{
3 X8 \& L1 B8 ?6 \# v: I//调整右
6 i# ]2 \5 s+ U5 ~//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);9 h4 m9 b: U4 }9 m% A/ G: H
lpRect->OffsetRect(rcWA.right-lpRect->right,0);
! l v$ h% [1 Z+ I$ x, LAdjustPos(lpRect);$ h# a( g: p! R1 H9 M( m" t
return TRUE;
4 c! V; ]; F) _/ }9 E}! ?) @3 B7 C& M' `, ~# W0 D+ A
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height())
6 g F; t0 ]3 T5 `- } d4 [! v{1 C2 [: @$ D% A: Z' C0 `
//调整下
0 l5 ]' Z# p( j8 n2 _. ^//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);. V2 R4 G( x( S& U( Y6 f
lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);
- K3 E+ F" @1 e4 ireturn TRUE;# R2 u9 L0 [5 s2 Z
}
4 ]0 X( M* u. s9 P5 O0 ?' \" f5 @return FALSE;6 r; {- G. F) U" u$ d
}9 {* ]! t7 v" W6 j6 v* c3 v
//然后在ONMOVEING事件中使用所下过程调用
* [8 M* [! e) P7 k, C MCRect r=*pRect;
9 X+ [) U# L& |; n. A' P' w- ]AdjustPos(&r);
* w [ ?5 O5 e5 x; a*pRect=(RECT)r;
- o9 {6 y, l) g2 |. P, y2 W# a7 H: n4 S( G8 F7 q* Z' J4 L$ f* E2 B
- |0 L: I; Y1 [6 d; x十二、给系统菜单添加一个菜单项
4 W% B+ u6 k& R+ }* W; U给系统菜单添加一个菜单项需要进行下述三个步骤:
; v3 ^0 `# T% [" \首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于# @; u s0 u1 @8 N: F3 w' u
; i! W" w% V6 v% a P0x0F而小于0xF000;& Y/ E* K) F' i% j$ _
其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加4 ?7 o* ?6 W) l5 F! ^* g' U# `$ }' z
' L' j$ o4 v. X5 s0 e两个新的菜单项。' K: a) A* n; r6 r8 G' a
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)! _5 }0 {0 [: D* _3 l$ M
{
- s" L3 h2 F& U8 w/ k…
9 w4 V2 P; Y e. ~, {//Make sure system menu item is in the right range.
0 A+ y* b; u; v- ~ASSERT(IDM_MYSYSITEM<0xF000);
( g' c- p. \/ X( {: f//Get pointer to system menu.
. x3 o ~7 K9 o: F x& h, oCMenu* pSysMenu=GetSystemMenu(FALSE);
: L: m/ }& M2 p3 G# U! SASSERT_VALID(pSysMenu);
/ E8 g$ o6 r6 C4 D//Add a separator and our menu item to system menu.7 f: w U( J$ f+ L! I
CString StrMenuItem(_T ("New menu item"));
1 }& M" Z4 A) P+ y; k; UpSysMenu->AppendMenu(MF_SEPARATOR);/ h# k; B2 }# v2 m g
pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);" G) R" p- }% ^
…
g) W4 I* Q) j' [}</FONT></P> |
zan
|