QQ登录

只需要一步,快速开始

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

[分享] VC技巧集锦

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

1253

主题

442

听众

-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
    % I) ^4 m" f" O$ d6 ?mciSendString("Set cdAudio door open wait",NULL,0,NULL);
    4 v' |9 M% J/ t3 H2 v- s- d" t; R2 E$ x2 z* a9 s  j7 ]
    - X, k, ]* f" P! w6 R! U
    二、关闭CD_ROM
    ( H% k, E6 t! U0 {! B8 ImciSendString("Set cdAudio door closed wait",NULL,0,NULL);
    ' n) o# `5 H6 r. D0 B% m; {! e  w6 t: a! \
    : I$ z1 K- W2 J; R( a
    三、关闭计算机$ i- S+ Z# E: k$ K
    OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构0 r3 v$ ?8 Q. f- \
    OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);7 k) e! K$ Z: F3 V2 D, V9 H+ P9 s
    GetVersionEx(&amp;OsVersionInfo); //获取操作系统版本信息
    - [+ r2 H# P: s% t  fif(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)  d) R) t, ^- t) F) m
    {2 e% J  o* e! S7 p4 N2 m
    //Windows98,调用ExitWindowsEx()函数重新启动计算机
    , K* l! c+ f0 Z' c4 n; mDWORD dwReserved;, i  t" d/ }4 y
    ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、 - J8 A, C5 P0 s/ ?4 b( w
    //关机、关闭电源等操作0 s" S& ]2 C. l( r6 t3 R9 K/ I

    7 ^4 @1 g- C, H4 ^* T* r// 退出前的一些处理程序! v. x* m& t8 O0 }- _3 J4 {
    }: d+ I* Q2 P+ J" A7 Z  [

    % O- o& R  C1 m  ?; e
    7 F" Q! R) o9 a  K+ w4 E+ o四、重启计算机/ y& l9 r" @( F( s) y7 t: g
    typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针: Q- O% L* _' J4 S+ G
    HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
    : ?6 E5 r7 u5 ^1 Z' B! e8 o* ySHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
    4 F, K* @+ O" rif(hInst != NULL)
    & s$ U# @( E, X( a3 f' j; W' W{
    : t: |- w" C6 E' f: e! I//获得函数的地址并调用之2 I3 ]6 N) R. V7 Q6 l# O( ]
    ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
    $ [+ J& x# c/ A; e4 [(*ShutDownDialog)(0);
    + ^9 D- h! E* g- Q0 g- Z  _}% K" p8 r$ M9 V4 D" ^8 P

    + u, t, |+ {3 _3 j: g# B' n2 r9 c1 @8 \+ g0 V0 A6 e
    五、枚举所有字体9 p; G  T+ O, R# |& P( [) L/ e/ {
    LOGFONT lf;6 r% n$ L% h& }* e
    lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structure8 o$ ^  b! S7 ]; Y
    strcpy(lf.lfFaceName,"");1 l# H8 |$ h' _! F& I
    CClientDC dc (this);
    8 T) R8 s% s/ _: r' ^0 D# ~/ s& I" N4 A7 y' B/ F
    //Enumerate the font families* O0 Y: h8 l8 x& b; V
    ::EnumFontFamiliesEx((HDC) dc,&amp;lf,
    / Z: ?, W5 r' N, a(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);' L3 V0 Q; n  z

    4 z  U: R5 I1 I3 A+ L, B//枚举函数
    % H& N8 U5 s+ ]6 c3 R  v. Aint CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
    4 _2 ]5 m- I. I( B; m{
    % X. s! u* ^; Y" U( y/ q: s// Create a pointer to the dialog window
    6 H# O- O4 }1 ?) T! b/ wCDay7Dlg* pWnd = (CDay7Dlg*) lparam;
    8 E. O1 ^4 [( b7 D1 n// add the font name to the list box
    6 Y/ |6 U  I0 _3 Z. M. n" S3 E" V
    # w& [% b' L+ H6 PpWnd -&gt;m_ctlFontList.AddString(lpelf -&gt;elfLogFont.lfFaceName);
    $ N& s0 L/ e; ^9 e( N# w: x
    8 u" h3 _! f; r# U9 }// Return 1 to continue font enumeration4 j. B2 [1 D# A
    return 1;! J! g" s4 |* r3 v  w( ]7 M. m/ W' @
    }
    * `/ S4 Y) W+ M7 J$ p1 p8 a其中m_ctlFontList是一个列表控件变量
    2 p8 m  k, ?& B* Q6 J9 W% n$ p% ?% a
    % v: ^: Y# p: k: l# ~( d
    六、一次只运行一个程序实例,如果已运行则退出
    $ U3 m/ S! j+ Y5 t- U/ uif( FindWindow(NULL,"程序标题")) exit(0);
    % S8 [- O8 }; u% B7 o, f
    5 Y! t+ k* v- a, P6 l9 i
    8 n- t1 B) D7 ?) Z& F+ M* V2 K七、得到当前鼠标所在位置
    1 |+ [. N' B! E; O, }. Y) ]CPoint pt;
    : ^- j' c( ^* g% w5 U1 S0 H( Z- ?GetCursorPos(&amp;pt); //得到位置$ L7 A) K$ h9 L2 @9 Z6 [6 M* s

    * D  Y8 y  Z3 G% E& |8 ]
    / z# J" T* b8 {八、上下文菜单事件触发事件:OnContextMenu事件
    ; f0 q+ o1 m: p3 \9 k4 K( x
    * X* w. C+ s: P
    $ t* j: [" ~& S) P, b九、显示和隐藏程序菜单6 l  _4 R" [6 ~) v( W, a& {/ p
    CWnd *pWnd=AfxGetMainWnd();
    3 w8 V+ k$ ^- b2 P- sif(b_m) //隐藏菜单1 [) ^0 T5 |+ F5 X; ]
    {: _7 K! Q/ \! s
    pWnd-&gt;SetMenu(NULL);
    % n5 B/ ^* Q2 j& z; ~# r8 UpWnd-&gt;DrawMenuBar();
    9 N+ E/ l  n0 @& T* [: [; r# cb_m=false;
    / {3 p- m1 X! f" U# d0 i}; ^6 ~4 p8 Q3 Q; y
    else5 O6 W& y) A: _& m# m
    {
    0 V5 J* y) d  R7 a, W: a" F; GCMenu menu;- Z* z1 {2 N2 G/ j& ~+ T
    menu.LoadMenu(IDR_MAINFRAME); ////显示菜单 也可改变菜单项
    4 k6 g3 [$ d. c4 o/ m* N, b: d. u9 qpWnd-&gt;SetMenu(&amp;menu);
    : Y+ M8 Z& k+ t. H5 |pWnd-&gt;DrawMenuBar();2 i& D" v- _, i+ U3 j9 [
    b_m=true;& L- s# R* ]' H+ z# U, \1 w8 r
    menu.Detach();
      w  o9 `9 `# B2 `}
    0 }  u9 J6 b- b! H! H' [
    3 `4 U6 F( r6 ?5 a5 F2 ?# U4 u3 G) B8 m9 T
    十、获取可执行文件的图标
    7 s/ N2 T6 s- I9 H3 w* tHICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);
    . b1 @- z% O# y% N0 Z6 N- b0 k3 `7 Yif (hIcon &amp;&amp;hIcon!=(HICON)-1)" n* J' l7 r$ P0 P7 `6 l% }
    {- I7 m6 q; D/ b0 R
    pDC-&gt;DrawIcon(10,10,hIcon);
    8 [5 r( T1 a3 B! v0 }: ?}
    ' _# w; r9 h9 B  ADestroyIcon(hIcon);6 R, L2 E* x$ L) M. _5 J6 H
    十一、窗口自动靠边程序演示
    - w5 r1 G3 Z! |& T( M- C9 hBOOL AdjustPos(CRect* lpRect)7 [8 p: m+ r! I5 }) K& u; E
    {8 T; w& \% E) d9 p7 T
    //自动靠边
    6 o0 |$ q' _+ k% p. G) Kint iSX=GetSystemMetrics(SM_CXFULLSCREEN);. o) [9 l+ }/ _0 e  }
    int iSY=GetSystemMetrics(SM_CYFULLSCREEN);
    ; }/ a3 t8 V0 z; [- K1 q, O
    6 Y/ B1 ?% ~5 R9 eRECT rWorkArea;6 c$ v5 s% q8 t- K' M
    BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &amp;rWorkArea, 0); 6 T2 M4 i! a* N6 e$ n

    2 q! d1 J1 i1 S# o7 YCRect rcWA;) q8 P- t+ r* R
    if(!bResult)
    % i" ~7 V8 U6 {4 L+ j8 g8 t5 b$ [{
    ) B# S* X7 ]0 R) f4 M8 f/ K//如果调用不成功就利用GetSystemMetrics获取屏幕面积
    - l4 f  z7 Z) x  {rcWA=CRect(0,0,iSX,iSY);
    & a" h8 \1 o* R% w0 J1 v! L( F}% H* i3 K% U6 N+ W. k' Z
    else
    ) A; A* ]9 g7 H3 e6 A( M8 h0 brcWA=rWorkArea;7 h0 I; f1 h/ {. F7 Y5 l/ H

    9 J( z2 q! z% m, }, ~1 X( wint iX=lpRect-&gt;left;
    # ?4 K' {! C3 Y9 Rint iY=lpRect-&gt;top;! C) M6 [2 [, `# ~" o+ b
    if(iX &lt; rcWA.left + DETASTEP &amp;&amp; iX!=rcWA.left)( M0 X; P' n" p% b( I
    {
    6 A8 p( F! y  l/ ]//调整左. l/ V$ |3 E0 E
    //pWnd-&gt;SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);
    + K, [/ `( U- `1 p) A0 ilpRect-&gt;OffsetRect(rcWA.left-iX,0);
    ; g0 f- S4 r3 E  A1 M& O- MAdjustPos(lpRect);
    6 L) h' M% i4 D- n6 b) [; F2 nreturn TRUE;+ F0 y. G5 Y: U- F: I% [- L" T" t
    }: e& q8 g8 D; a' a  m
    if(iY &lt; rcWA.top + DETASTEP &amp;&amp; iY!=rcWA.top)
    ; C; F2 g, z1 ?' ^{
      I; Z3 c& M6 G9 K+ K" {//调整上, Y" X" d2 y4 y8 G* `  x' r
    //pWnd-&gt;SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);
    2 d3 V, \- c- _" e) ]7 BlpRect-&gt;OffsetRect(0,rcWA.top-iY);% y! J3 Y  H- V4 K2 s$ S4 \
    AdjustPos(lpRect);( o' E, p6 t  r) v9 u. S
    return TRUE;
    : q# ^% }# v4 m# q( H! Z+ s8 U+ E}# P( N0 l( O' \7 r% s- m
    if(iX + lpRect-&gt;Width() &gt; rcWA.right - DETASTEP &amp;&amp; iX !=rcWA.right-lpRect-&gt;Width())
    - B" |9 [/ ]3 O+ W" i- E{
    . S/ Y" J7 x5 X  E//调整右
    , P' W6 y! n7 B8 ~//pWnd-&gt;SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);
    6 c$ Y6 ~% a1 glpRect-&gt;OffsetRect(rcWA.right-lpRect-&gt;right,0);& ^9 `5 L; V$ A$ [6 M$ u
    AdjustPos(lpRect);
    8 @+ _$ O% F* P  E. Oreturn TRUE;
    7 Z. T* h( M9 C}* q0 {: \" X) x# T# X
    if(iY + lpRect-&gt;Height() &gt; rcWA.bottom - DETASTEP &amp;&amp; iY !=rcWA.bottom-lpRect-&gt;Height())2 n" s4 [. B) \9 R# m' @
    {
    : I3 D: V& Z* P//调整下/ m+ r3 _4 C/ g% D! `7 W; f) \
    //pWnd-&gt;SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);
    * r  c: A6 [1 J4 WlpRect-&gt;OffsetRect(0,rcWA.bottom-lpRect-&gt;bottom);
    / r" V. N2 q# breturn TRUE;. g& }- s: p6 \( q$ |# G3 t7 A& O( b
    }) v1 ^9 D' Z' W
    return FALSE;. i/ j, B4 D3 e
    }% d# u& D- W" d5 }8 _% x) r
    //然后在ONMOVEING事件中使用所下过程调用
    % l/ p; ^$ r" e6 X2 B) w, ?CRect r=*pRect;
    $ K4 _: U7 y0 k2 P& O, wAdjustPos(&amp;r);  T) W2 _* Z% N2 @& f0 I! ^9 @
    *pRect=(RECT)r;2 ]% b9 f: \" v& R  q
    ) X" g7 h+ Q7 {! d! ^* z* D
    . m/ v8 r( s, B, u- a; |% x  K
    十二、给系统菜单添加一个菜单项
    7 H) w4 r! C* R4 N给系统菜单添加一个菜单项需要进行下述三个步骤:! G3 K- K# w4 L' ^2 [' t6 [
    首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于
    - ~3 U2 s# c0 I$ D' @2 o/ J+ `2 G0 t4 H
    0x0F而小于0xF000;' [- Q; o  u0 C/ ^* ~' F- Q
    其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。下例给系统菜单添加
    ) b* U1 I4 c! k' U9 V) C+ O( {+ ?0 B/ T* |
    两个新的菜单项。
    0 H: K3 b4 d- w; Q2 f& wint CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)
      _1 _3 H3 F0 A- w{! h; L& v& a+ l/ o6 i# P; H7 A

    5 E. P5 l. s: \$ K$ b//Make sure system menu item is in the right range.2 V2 b3 Z& \, e2 u+ w3 Y, @
    ASSERT(IDM_MYSYSITEM&lt;0xF000);+ i' e( z) c8 a$ |6 ~: @" p
    //Get pointer to system menu.2 i& ^9 m: Y% ~9 Q, f- c
    CMenu* pSysMenu=GetSystemMenu(FALSE);
    $ w8 E7 z' i$ Z: T6 CASSERT_VALID(pSysMenu);
    8 P' x, @; g! R) T& \- V9 R% h% V//Add a separator and our menu item to system menu.
    / {: {9 h8 W4 J$ x9 f% G% C) iCString StrMenuItem(_T ("New menu item"));6 v, y* M+ Z1 g) z
    pSysMenu-&gt;AppendMenu(MF_SEPARATOR);
    $ \- e! T" L6 i* w. x! c7 qpSysMenu-&gt;AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
    , S+ z" V5 \7 Z6 K# o: y: r& h$ l; L6 }; Y
    }</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

    既然你诚信诚意的推荐了,那我就勉为其难的听听吧!! A- E1 u3 n* V2 J5 f3 {. {6 H( X
    数学中国社区太棒了!% Y- |% ?8 F. t" o. P
    其实我一直觉得楼主的品味不错!呵呵!
    * ^3 W& O) G- u; F% i, T3 U+ p数学中国社区 不走平凡路
    回复

    使用道具 举报

    LM386 实名认证       

    1

    主题

    4

    听众

    157

    积分

    升级  28.5%

    该用户从未签到

    自我介绍
    数模爱好者

    新人进步奖 最具活力勋章

    回复

    使用道具 举报

    7

    主题

    5

    听众

    1162

    积分

    升级  16.2%

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

    [LV.2]偶尔看看I

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

    很好
    : Y' \& U4 w/ w1 ~
    / M) M* S2 D: z. i2 j$ K) G; s& I但是。。。。。。。
    - T( u( Z: c( H& n
    , m4 N: i$ W  b' g/ f有点乱,
    回复

    使用道具 举报

    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-6-2 18:14 , Processed in 0.766623 second(s), 110 queries .

    回顶部