QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 24723|回复: 16
打印 上一主题 下一主题

[分享] VC技巧集锦

[复制链接]
字体大小: 正常 放大

1253

主题

443

听众

-516

积分

复兴中华数学头子

  • TA的每日心情
    开心
    2011-9-26 17:31
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    自我介绍
    数学中国网站(www.madio.cn)是目前中国最大的数学建模交流社区

    邮箱绑定达人 优秀斑竹奖 发帖功臣 元老勋章 新人进步奖 原创写作奖 最具活力勋章 风雨历程奖

    群组越狱吧

    群组湖南工业大学数学建模同盟会

    群组四川农业大学数学建模协会

    群组重庆交通大学数学建模协会

    群组中国矿业大学数学建模协会

    跳转到指定楼层
    #
    发表于 2004-9-27 18:30 |只看该作者 |正序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    <><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(&amp;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,&amp;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 -&gt;m_ctlFontList.AddString(lpelf -&gt;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(&amp;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-&gt;SetMenu(NULL);* S  n- d9 A" ?# B! D" d4 \/ c
    pWnd-&gt;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-&gt;SetMenu(&amp;menu);
    $ A  ^3 T/ ]5 J; p  hpWnd-&gt;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 &amp;&amp;hIcon!=(HICON)-1)1 k% N4 l2 p1 K* W* P
    {+ s  S2 }- B2 p* U
    pDC-&gt;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), &amp;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-&gt;left;5 M+ u( L1 p  ]0 |
    int iY=lpRect-&gt;top;
    3 t& Y: [( d8 V" lif(iX &lt; rcWA.left + DETASTEP &amp;&amp; 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-&gt;SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);8 G6 Z# u# R/ e* ]
    lpRect-&gt;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 &lt; rcWA.top + DETASTEP &amp;&amp; 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-&gt;SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
    " S; {" _& W/ c4 Y1 s  ZlpRect-&gt;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-&gt;Width() &gt; rcWA.right - DETASTEP &amp;&amp; iX !=rcWA.right-lpRect-&gt;Width())
    & z8 Y- N. _7 F) K  ]. l+ p' {{ * d* p5 d  Z3 e
    //调整右( u& O4 `! f8 n* U# t
    //pWnd-&gt;SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);) d  S3 {' u+ x8 ~7 H3 `
    lpRect-&gt;OffsetRect(rcWA.right-lpRect-&gt;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-&gt;Height() &gt; rcWA.bottom - DETASTEP &amp;&amp; iY !=rcWA.bottom-lpRect-&gt;Height())' q# C& g( F4 K% q& o
    {
    " Z4 y; ~; s+ ?6 [" `//调整下/ @. [+ G: f, F: Z
    //pWnd-&gt;SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
    + Y8 \8 G7 V# g3 vlpRect-&gt;OffsetRect(0,rcWA.bottom-lpRect-&gt;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(&amp;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&lt;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-&gt;AppendMenu(MF_SEPARATOR);
    6 ]: J; K$ X( C4 G& U6 D/ O. V  P7 ~9 [pSysMenu-&gt;AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);. Y5 Q. _' ]. W, _5 O
    ( ?& I. S9 H. H6 r( g
    }</FONT></P>
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    数学中国网站是以数学中国社区为主体的综合性学术社区,下分建模、编程、学术理论、工程应用等版块。从2003年11月建站以来一直致力于数学建模的普及和推广工作,目前已经发展成国内会员最多,资源最丰富,流量最大的数学建模网络平台。我们始终秉承服务大众的理念,坚持资源共享、共同进步的原则,努力营造出严肃、认真、务实、合作的学术氛围,为中国数学的发展做出应有的贡献。
    ottiou 实名认证       

    16

    主题

    5

    听众

    849

    积分

    升级  62.25%

  • TA的每日心情

    2017-9-14 18:53
  • 签到天数: 167 天

    [LV.7]常住居民III

    2013挑战赛参赛者

    新人进步奖

    群组开源分享

    群组数学专业考研加油站

    群组2013数模夏令营A题

    群组2013数模夏令营B题

    群组2013数模夏令营C题

    回复

    使用道具 举报

    GraBUAA        

    0

    主题

    3

    听众

    232

    积分

    升级  66%

  • TA的每日心情
    开心
    2012-5-25 09:22
  • 签到天数: 41 天

    [LV.5]常住居民I

    回复

    使用道具 举报

    0

    主题

    3

    听众

    15

    积分

    升级  10.53%

  • TA的每日心情
    郁闷
    2012-6-6 17:20
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

    1

    主题

    3

    听众

    349

    积分

    升级  16.33%

  • TA的每日心情
    奋斗
    2014-7-16 18:27
  • 签到天数: 123 天

    [LV.7]常住居民III

    社区QQ达人

    群组2012第三期美赛培训

    回复

    使用道具 举报

    1

    主题

    4

    听众

    51

    积分

    升级  48.42%

  • TA的每日心情
    难过
    2011-10-5 20:14
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    回复

    使用道具 举报

    baccy101 实名认证       

    0

    主题

    3

    听众

    52

    积分

    升级  49.47%

  • TA的每日心情

    2011-9-11 07:50
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    群组Matlab讨论组

    回复

    使用道具 举报

    1

    主题

    3

    听众

    125

    积分

    升级  12.5%

  • TA的每日心情
    开心
    2011-6-3 07:35
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    既然你诚信诚意的推荐了,那我就勉为其难的听听吧!
    ; b. G5 X' a3 ^  f! d4 Z数学中国社区太棒了!
      _+ q5 o& S8 m8 P+ U0 q1 _其实我一直觉得楼主的品味不错!呵呵!" O* I" X1 [2 w% x& C2 e& [/ |
    数学中国社区 不走平凡路
    回复

    使用道具 举报

    LM386 实名认证       

    1

    主题

    4

    听众

    157

    积分

    升级  28.5%

    该用户从未签到

    自我介绍
    数模爱好者

    新人进步奖 最具活力勋章

    回复

    使用道具 举报

    7

    主题

    5

    听众

    1162

    积分

    升级  16.2%

  • TA的每日心情
    开心
    2012-12-10 22:28
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    新人进步奖 最具活力勋章 发帖功臣

    很好
    " W' h" l, R' f& C/ m, v+ h+ J
    但是。。。。。。。# r/ I9 u8 |# p8 K# L
    + m/ F- _8 i% J* v
    有点乱,
    回复

    使用道具 举报

    juneshumo 实名认证       

    0

    主题

    4

    听众

    186

    积分

    升级  43%

    该用户从未签到

    自我介绍
    参加数学建模只是一个途径,为的是能能提高自己的能力,从中得到锻炼,为以后更好的发展奠定基础……

    群组数学建模

    群组LINGO

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-18 04:46 , Processed in 0.721303 second(s), 110 queries .

    回顶部