锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
2
3 if (condition1) break;
4
5 if (condition2) break;
6
7 } while (0);
]]>
1.寮曡█
銆銆C++璇█鐨勫垱寤哄垵琛鋒槸“a better C”錛屼絾鏄繖騫朵笉鎰忓懗鐫C++涓被浼糃璇█鐨勫叏灞鍙橀噺鍜屽嚱鏁版墍閲囩敤鐨勭紪璇戝拰榪炴帴鏂瑰紡涓嶤璇█瀹屽叏鐩稿悓銆備綔涓轟竴縐嶆涓嶤鍏煎鐨勮璦錛孋++淇濈暀浜嗕竴閮ㄥ垎榪囩▼ 寮忚璦鐨勭壒鐐癸紙琚笘浜虹О涓?#8220;涓嶅交搴曞湴闈㈠悜瀵硅薄”錛夛紝鍥犺屽畠鍙互瀹氫箟涓嶅睘浜庝換浣曠被鐨勫叏灞鍙橀噺鍜屽嚱鏁般備絾鏄紝C++姣曠珶鏄竴縐嶉潰鍚戝璞$殑紼嬪簭璁捐璇█錛屼負浜嗘敮 鎸佸嚱鏁扮殑閲嶈澆錛孋++瀵瑰叏灞鍑芥暟鐨勫鐞嗘柟寮忎笌C鏈夋槑鏄劇殑涓嶅悓銆?br>銆銆2.浠庢爣鍑嗗ご鏂囦歡璇磋搗
銆銆鏌愪紒涓氭浘緇忕粰鍑哄涓嬬殑涓閬撻潰璇曢錛?/p>
銆銆闈㈣瘯棰?br>銆銆涓轟粈涔堟爣鍑嗗ご鏂囦歡閮芥湁綾諱技浠ヤ笅鐨勭粨鏋勶紵
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
銆銆鍒嗘瀽
銆銆鏄劇劧錛屽ご鏂囦歡涓殑緙栬瘧瀹?#8220;#ifndef __INCvxWorksh銆?define __INCvxWorksh銆?endif” 鐨勪綔鐢ㄦ槸闃叉璇ュご鏂囦歡琚噸澶嶅紩鐢ㄣ?/p>
銆銆閭d箞
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
銆銆鐨勪綔鐢ㄥ張鏄粈涔堝憿錛熸垜浠皢鍦ㄤ笅鏂囦竴涓閬撴潵銆?br>
銆銆3.娣卞眰鎻瘑extern "C"
銆銆extern "C" 鍖呭惈鍙岄噸鍚箟錛屼粠瀛楅潰涓婂嵆鍙緱鍒幫細棣栧厛錛岃瀹冧慨楗扮殑鐩爣鏄?#8220;extern”鐨勶紱鍏舵錛岃瀹冧慨楗扮殑鐩爣鏄?#8220;C”鐨勩傝鎴戜滑鏉ヨ緇嗚В璇昏繖涓ら噸鍚箟銆?/p>
銆銆琚玡xtern "C"闄愬畾鐨勫嚱鏁版垨鍙橀噺鏄痚xtern綾誨瀷鐨勶紱
銆銆extern鏄疌/C++璇█涓〃鏄庡嚱鏁板拰鍏ㄥ眬鍙橀噺浣滅敤鑼冨洿錛堝彲瑙佹э級鐨勫叧閿瓧錛岃鍏抽敭瀛楀憡璇夌紪璇戝櫒錛屽叾澹版槑鐨勫嚱鏁板拰鍙橀噺鍙互鍦ㄦ湰妯″潡鎴栧叾瀹冩ā鍧椾腑浣跨敤銆傝浣忥紝涓嬪垪璇彞錛?/p>
銆銆extern int a;
銆銆浠呬粎鏄竴涓彉閲忕殑澹版槑錛屽叾騫朵笉鏄湪瀹氫箟鍙橀噺a錛屽茍鏈負a鍒嗛厤鍐呭瓨絀洪棿銆傚彉閲廰鍦ㄦ墍鏈夋ā鍧椾腑浣滀負涓縐嶅叏灞鍙橀噺鍙兘琚畾涔変竴嬈★紝鍚﹀垯浼氬嚭鐜拌繛鎺ラ敊璇?/p>
銆銆閫氬父錛屽湪妯″潡鐨勫ご鏂囦歡涓鏈ā鍧楁彁渚涚粰鍏跺畠妯″潡寮曠敤鐨勫嚱鏁板拰鍏ㄥ眬鍙橀噺浠ュ叧閿瓧extern澹版槑銆備緥濡傦紝濡傛灉妯″潡B嬈插紩鐢ㄨ妯″潡A涓畾涔夌殑鍏ㄥ眬鍙? 閲忓拰鍑芥暟鏃跺彧闇鍖呭惈妯″潡A鐨勫ご鏂囦歡鍗沖彲銆傝繖鏍鳳紝妯″潡B涓皟鐢ㄦā鍧桝涓殑鍑芥暟鏃訛紝鍦ㄧ紪璇戦樁孌碉紝妯″潡B铏界劧鎵句笉鍒拌鍑芥暟錛屼絾鏄茍涓嶄細鎶ラ敊錛涘畠浼氬湪榪炴帴闃舵涓粠 妯″潡A緙栬瘧鐢熸垚鐨勭洰鏍囦唬鐮佷腑鎵懼埌姝ゅ嚱鏁般?/p>
銆銆涓巈xtern瀵瑰簲鐨勫叧閿瓧鏄痵tatic錛岃瀹冧慨楗扮殑鍏ㄥ眬鍙橀噺鍜屽嚱鏁板彧鑳藉湪鏈ā鍧椾腑浣跨敤銆傚洜姝わ紝涓涓嚱鏁版垨鍙橀噺鍙彲鑳借鏈ā鍧椾嬌鐢ㄦ椂錛屽叾涓嶅彲鑳借extern “C”淇グ銆?/p>
銆銆琚玡xtern "C"淇グ鐨勫彉閲忓拰鍑芥暟鏄寜鐓璇█鏂瑰紡緙栬瘧鍜岃繛鎺ョ殑錛?/p>
銆銆鏈姞extern “C”澹版槑鏃剁殑緙栬瘧鏂瑰紡
銆銆棣栧厛鐪嬬湅C++涓綾諱技C鐨勫嚱鏁版槸鎬庢牱緙栬瘧鐨勩?/p>
銆銆浣滀負涓縐嶉潰鍚戝璞$殑璇█錛孋++鏀寔鍑芥暟閲嶈澆錛岃岃繃紼嬪紡璇█C鍒欎笉鏀寔銆傚嚱鏁拌C++緙栬瘧鍚庡湪絎﹀彿搴撲腑鐨勫悕瀛椾笌C璇█鐨勪笉鍚屻備緥濡傦紝鍋囪鏌愪釜鍑芥暟鐨勫師鍨嬩負錛?
void foo( int x, int y );
銆銆璇ュ嚱鏁拌C緙栬瘧鍣ㄧ紪璇戝悗鍦ㄧ鍙峰簱涓殑鍚嶅瓧涓篲foo錛岃孋++緙栬瘧鍣ㄥ垯浼氫駭鐢熷儚_foo_int_int涔嬬被鐨勫悕瀛楋紙涓嶅悓鐨勭紪璇戝櫒鍙兘鐢熸垚鐨勫悕瀛椾笉鍚岋紝浣嗘槸閮介噰鐢ㄤ簡鐩稿悓鐨勬満鍒訛紝鐢熸垚鐨勬柊鍚嶅瓧縐頒負“mangled name”錛夈?/p>
銆銆_foo_int_int榪欐牱鐨勫悕瀛楀寘鍚簡鍑芥暟鍚嶃佸嚱鏁板弬鏁版暟閲忓強綾誨瀷淇℃伅錛孋++灝辨槸闈犺繖縐嶆満鍒舵潵瀹炵幇鍑芥暟閲嶈澆鐨勩備緥濡傦紝鍦–++涓紝鍑芥暟 void foo( int x, int y )涓巚oid foo( int x, float y )緙栬瘧鐢熸垚鐨勭鍙鋒槸涓嶇浉鍚岀殑錛屽悗鑰呬負_foo_int_float銆?br>銆銆鍚屾牱鍦幫紝C++涓殑鍙橀噺闄ゆ敮鎸佸眬閮ㄥ彉閲忓錛岃繕鏀寔綾繪垚鍛樺彉閲忓拰鍏ㄥ眬鍙橀噺銆? 鐢ㄦ埛鎵緙栧啓紼嬪簭鐨勭被鎴愬憳鍙橀噺鍙兘涓庡叏灞鍙橀噺鍚屽悕錛屾垜浠互"."鏉ュ尯鍒嗐傝屾湰璐ㄤ笂錛岀紪璇戝櫒鍦ㄨ繘琛岀紪璇戞椂錛屼笌鍑芥暟鐨勫鐞嗙浉浼鹼紝涔熶負綾諱腑鐨勫彉閲忓彇浜嗕竴涓嫭涓鏃犱簩 鐨勫悕瀛楋紝榪欎釜鍚嶅瓧涓庣敤鎴風▼搴忎腑鍚屽悕鐨勫叏灞鍙橀噺鍚嶅瓧涓嶅悓銆?/p>
銆銆鏈姞extern "C"澹版槑鏃剁殑榪炴帴鏂瑰紡
銆銆鍋囪鍦–++涓紝妯″潡A鐨勫ご鏂囦歡濡備笅錛?/p>
// 妯″潡A澶存枃浠躲moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
int foo( int x, int y );
#endif
銆銆鍦ㄦā鍧桞涓紩鐢ㄨ鍑芥暟錛?/p>
// 妯″潡B瀹炵幇鏂囦歡銆moduleB.cpp
#include "moduleA.h"
foo(2,3);
銆銆瀹為檯涓婏紝鍦ㄨ繛鎺ラ樁孌碉紝榪炴帴鍣ㄤ細浠庢ā鍧桝鐢熸垚鐨勭洰鏍囨枃浠秏oduleA.obj涓鎵綺foo_int_int榪欐牱鐨勭鍙鳳紒
銆銆鍔爀xtern "C"澹版槑鍚庣殑緙栬瘧鍜岃繛鎺ユ柟寮?/p>
銆銆鍔爀xtern "C"澹版槑鍚庯紝妯″潡A鐨勫ご鏂囦歡鍙樹負錛?/p>
// 妯″潡A澶存枃浠躲moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
extern "C" int foo( int x, int y );
#endif
銆銆鍦ㄦā鍧桞鐨勫疄鐜版枃浠朵腑浠嶇劧璋冪敤foo( 2,3 )錛屽叾緇撴灉鏄細
銆銆錛?錛夋ā鍧桝緙栬瘧鐢熸垚foo鐨勭洰鏍囦唬鐮佹椂錛屾病鏈夊鍏跺悕瀛楄繘琛岀壒孌婂鐞嗭紝閲囩敤浜咰璇█鐨勬柟寮忥紱
銆銆錛?錛夎繛鎺ュ櫒鍦ㄤ負妯″潡B鐨勭洰鏍囦唬鐮佸鎵緁oo(2,3)璋冪敤鏃訛紝瀵繪壘鐨勬槸鏈粡淇敼鐨勭鍙峰悕_foo銆?/p>
銆銆濡傛灉鍦ㄦā鍧桝涓嚱鏁板0鏄庝簡foo涓篹xtern "C"綾誨瀷錛岃屾ā鍧桞涓寘鍚殑鏄痚xtern int foo( int x, int y ) 錛屽垯妯″潡B鎵句笉鍒版ā鍧桝涓殑鍑芥暟錛涘弽涔嬩害鐒躲?/p>
銆銆鎵浠ワ紝鍙互鐢ㄤ竴鍙ヨ瘽姒傛嫭extern
“C”榪欎釜澹版槑鐨勭湡瀹炵洰鐨勶紙浠諱綍璇█涓殑浠諱綍璇硶鐗規х殑璇炵敓閮戒笉鏄殢鎰忚屼負鐨勶紝鏉ユ簮浜庣湡瀹炰笘鐣岀殑闇姹傞┍鍔ㄣ傛垜浠湪鎬濊冮棶棰樻椂錛屼笉鑳藉彧鍋滅暀鍦ㄨ繖涓璦鏄庝箞
鍋氱殑錛岃繕瑕侀棶涓闂畠涓轟粈涔堣榪欎箞鍋氾紝鍔ㄦ満鏄粈涔堬紝榪欐牱鎴戜滑鍙互鏇存繁鍏ュ湴鐞嗚В璁稿闂錛夛細
銆銆瀹炵幇C++涓嶤鍙婂叾瀹冭璦鐨勬販鍚堢紪紼嬨?br>銆銆鏄庣櫧浜咰++涓璭xtern "C"鐨勮绔嬪姩鏈猴紝鎴戜滑涓嬮潰鏉ュ叿浣撳垎鏋恊xtern "C"閫氬父鐨勪嬌鐢ㄦ妧宸с?br>銆銆4.extern "C"鐨勬儻鐢ㄦ硶
銆銆錛?錛夊湪C++涓紩鐢–璇█涓殑鍑芥暟鍜屽彉閲忥紝鍦ㄥ寘鍚獵璇█澶存枃浠訛紙鍋囪涓篶Example.h錛夋椂錛岄渶榪涜涓嬪垪澶勭悊錛?/p>
extern "C"
{
#include "cExample.h"
}
銆銆鑰屽湪C璇█鐨勫ご鏂囦歡涓紝瀵瑰叾澶栭儴鍑芥暟鍙兘鎸囧畾涓篹xtern綾誨瀷錛孋璇█涓笉鏀寔extern "C"澹版槑錛屽湪.c鏂囦歡涓寘鍚簡extern "C"鏃朵細鍑虹幇緙栬瘧璇硶閿欒銆?/p>
銆銆絎旇呯紪鍐欑殑C++寮曠敤C鍑芥暟渚嬪瓙宸ョ▼涓寘鍚殑涓変釜鏂囦歡鐨勬簮浠g爜濡備笅錛?/p>
/* c璇█澶存枃浠訛細cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern int add(int x,int y); // "extern" is optional [Zero]
#endif
/* c璇█瀹炵幇鏂囦歡錛歝Example.c */
#include "cExample.h"
int add( int x, int y )
{
return x + y;
}
// c++瀹炵幇鏂囦歡錛岃皟鐢╝dd錛歝ppFile.cpp
/*
[Zero] below, can be written as
extern "C" int add(int,int);
#include "cExample.h"
*/
extern "C"
{
#include "cExample.h"
}
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}
銆銆濡傛灉C++璋冪敤涓涓狢璇█緙栧啓鐨?DLL鏃訛紝褰撳寘鎷?DLL鐨勫ご鏂囦歡鎴栧0鏄庢帴鍙e嚱鏁版椂錛屽簲鍔爀xtern "C" {銆}銆?/p>
銆銆錛?錛夊湪C涓紩鐢–++璇█涓殑鍑芥暟鍜屽彉閲忔椂錛孋++鐨勫ご鏂囦歡闇娣誨姞extern "C"錛屼絾鏄湪C璇█涓笉鑳界洿鎺ュ紩鐢ㄥ0鏄庝簡extern "C"鐨勮澶存枃浠訛紝搴旇浠呭皢C鏂囦歡涓皢C++涓畾涔夌殑extern "C"鍑芥暟澹版槑涓篹xtern綾誨瀷銆?br>銆銆絎旇呯紪鍐欑殑C寮曠敤C++鍑芥暟渚嬪瓙宸ョ▼涓寘鍚殑涓変釜鏂囦歡鐨勬簮浠g爜濡備笅錛?/p>
//C++澶存枃浠?cppExample.h
#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H
extern "C" int add( int x, int y );
#endif
//C++瀹炵幇鏂囦歡 cppExample.cpp
#include "cppExample.h"
int add( int x, int y )
{
return x + y;
}
/* C瀹炵幇鏂囦歡 cFile.c
/* 榪欐牱浼氱紪璇戝嚭閿欙細#include "cExample.h" */
extern int add( int x, int y );
int main( int argc, char* argv[] )
{
add( 2, 3 );
return 0;
}
鍏堢湅涓嬮潰鐨勬祴璇曚唬鐮?1)鍜?2)錛?br> =====================================================================
嫻嬭瘯浠g爜(1) :
const char* a[] = { "a", "bcedf" };
// 嫻嬭瘯涓嬮潰鐨?/span>sizeof(a)錛屽畠鐨勭粨鏋滄槸’8’, 鍘熷洜鍦ㄤ簬a鏄寚閽堟暟緇勶紝閲岄潰瀛樺偍鐨勬槸鎸囬拡鍏冪礌銆?/span>
// 鍦ㄨ繖閲屾槸涓や釜鎸囬拡鍏冪礌鐨勬暟緇勩傛晠涓?/span>4*2=8.
cout << sizeof(a) << endl; // print '8'
// test sizeof(*a), sizeof(a[0]), sizeof(a[0][0])
cout << sizeof(*a) << endl; // print '4' 榪欓噷*a鏄眰鍑虹涓涓瓧絎︿覆鐨勫湴鍧,娉ㄦ剰a鏄寚閽堢殑鎸囬拡銆?/span>
cout << sizeof(a[0]) << endl;// print '4' 榪欓噷鏄?/span>a[0] = *a,璺熶笂闈㈢殑涓鏍楓?/span>
cout << sizeof(a[0][0]) << endl; // print '1' 榪欓噷鏄涓涓瓧絎︿覆鐨勭涓涓瓧絎錛屼竴涓瓧鑺傘?br>
嫻嬭瘯浠g爜(2) :
struct TestStruct {
char c_elem; // 1 bytes
int int_elem; // 4 bytes
};
cout << sizeof(TestStruct) << endl; // it prints '8' .
struct TestStruct1 {
char c_elem1;
char c_elem2:
char c_elem3;
... // num 涓猚har綾誨瀷鏁版嵁鎴愬憳
};
cout << sizeof(TestStruct1) <<endl; // it prints num.
// 杈撳嚭鐨勭粨鏋滀笌鍏蜂綋鐨勭郴緇熺粨鏋勬湁鍏籌紝姝ゅ鏄?2浣嶆満錛屾晠涓轟簡瀵誨潃鐨勫揩鎹峰拰鏂逛究錛岀郴緇熶細鑷姩鐨勫~琛?padding).
// int綾誨瀷鏄?涓瓧鑺傦紝char綾誨瀷涓?涓瓧鑺傦紝浣嗘槸姝ゅ浼氳嚜鍔ㄥ~琛?涓瓧鑺傚埌struct緇撴瀯涓嬌鍏舵垚涓?涓瓧鑺傘?br> // 浣嗘槸濡傛灉struct涓彧鏈変竴縐嶇被鍨嬶紝璀char鎴杋nt綾誨瀷鏃訛紝涓嶄細浜х敓姝ょ濉ˉ鐨勬儏鍐點備絾鏄鏋滀笉鏄紝瀹冧細杈撳嚭
// 4鐨勫嶆暟涓瓧鑺傘?br>======================================================================
*
姣旇緝瀹界殑鐭ヨ瘑闈紝騫朵笖鑳藉鏃舵椂琛ュ厖鑷繁鐨勭煡璇嗗拰瀹屽杽鑷繁鐨勭煡璇嗙粨鏋?/span>
*
鑰愬績濂斤紝鐗瑰埆鏄湪璋冭瘯鍜屽涔犻樁孌碉紝涓栫晫涓婃病鏈夎仾鏄庣殑浜哄彧鏈夊埢鑻︾殑浜恒傚仛寮鍙戝叾瀹炲氨涓や歡浜嬫儏瀛︿範鍜屾敼閿欙紝鍦ㄨ繖涓や歡浜嬫儏涓棿鐨勫紑鍙戣繃紼嬪叾瀹炴槸姣旇緝綆鍗曠殑
*
姘歌繙璁頒綇錛氫唬鐮佹槸緇欎漢鐪嬬殑鑰屼笉鏄粰鏈哄櫒榪愯鐨勶紝璁$畻鏈哄湪鎵ц紼嬪簭鏃舵槸涓嶆曠瘡鐨勶紝鑰屼漢鍦ㄧ湅浠g爜鏃舵槸闈炲父绱殑
*
鑹ソ鐨勭紪鐮佷範鎯紝鑷沖皯淇濊瘉鑷繁鑳藉闅忔椂鐪嬫噦鍑犱釜鏈堝墠鑷繁鎵鍐欑殑浠g爜
*
灝介噺璁╀綘鐨勪唬鐮佽兘澶熷緢瀹規槗鐨勮鍒漢鐞嗚В錛屽啓浠g爜鏃舵兂鎯充綘浼氫笉浼氬湪涓や釜鏈堝悗琚埆浜洪獋
*
涓嶈瀹瑰繊鑷繁鐘噸澶嶇殑閿欒鍜屽啓閲嶅鐨勪唬鐮?/span>
*
鐭ラ亾濡備綍鍋氭瘮寰楀埌浠g爜鏇撮噸瑕?/span>
*
灝介噺涓嶈鍋氬凡緇忔湁寰堝浜哄凡緇忓仛榪囩殑浜嬫儏
*
瀛︿細灝婇噸鍒漢鐨勫紑鍙戞垚鏋滐紝闄ら潪涓嶅緱宸蹭笉瑕佷笅鍐沖畾鍏ㄩ潰鏇挎崲浠ュ墠鐨勭郴緇?/span>
*
鐝嶆儨鑷繁鐨勬椂闂翠笌宸ヤ綔鎴愭灉錛屽敖閲忚鍒漢鍒嗕韓鑷繁鐨勫紑鍙戞垚鏋?/span>
*
閬垮厤鍋囪錛屽鎬濊冩瀬绔儏鍐典笌寮曡搗閿欒鐨勫彲鑳芥э紝鍔姏鍑忓皯浣庣駭閿欒
*
涓嶈鐩鎬俊鑷沖皯鏄笉瑕佽交淇¤嚜宸變負鑷繁鎵鍋氱殑嫻嬭瘯緇撴灉
*
鎳傚緱鍧氭寔鑷繁鐨勫紑鍙戞濊礬錛屽茍鎳傚緱鐞嗚В涓庡惛鏀跺埆浜虹殑鎬濇兂
*
瀛︿細涓庡叾浠栦漢淇濇寔涓鑷達紝浣嗕笉鑳芥斁寮冭嚜宸辯殑寮鍙戠壒鑹?/span>
*
鎳傚緱鍚戜綘鍛ㄥ洿鐨勪漢瀛︿範錛屼笉璁烘槸寮鍙戣兘鍔涗笂鐨勮繕鏄紑鍙戠粡楠屼笂鐨?/span>
*
鎳傚緱杞歡緇撴瀯鐨勭殑閲嶈鎬э紝鍒嗘瀽浠g爜鍓嶅厛鍒嗘瀽浠g爜鐨勭粨鏋?/span>
*
瀛︿細鎬葷粨錛屽畾鏈熸葷粨鑷繁鎵瀛︿細鐨勭煡璇嗭紝鐪嬬湅鑷繁鍓嶆鏃墮棿鍥犱負鍚勭鍘熷洜鎵嫻垂鐨勬椂闂?/span>
*
瀛︿細璁″垝錛屽敖閲忎笉瑕佽涓洪氳繃寤墮暱鑷繁鐨勫伐浣滄椂闂存潵瀹屾垚浠誨姟
*
瀛︿細姝g‘浼拌鑷繁鐨勮兘鍔涘拰宸ヤ綔鏃墮棿
涓嬮潰榪欎簺鏄垜璁や負涓浜涙瘮杈冮傚悎鎴戣嚜宸辯殑鏂歸潰錛屼笉涓瀹氬姣忎釜浜洪兘鍚堥傦細
*
澶氱湅浜涙潅蹇楋紝娌′簨鎯呯殑鏃跺欏彲浠ョ湅鐪嬩互鍓嶇湅榪囩殑鍙傝冧功錛屼功涓緢鍙兘鏈変綘浠ュ墠娌℃湁娉ㄦ剰鍒扮殑涓浜涚粏鑺?/span>
*
涓嶈澶棭鍘誨仛涓浜涗笌寮鍙戞棤鍏崇殑浜嬫儏錛屽洜涓哄涔犵殑榛勯噾鏃舵湡鏄緢鐭殏鐨?/span>
*
瀛︿細鍒嗘瀽鍒漢鐨勭郴緇燂紝澶氱湅鐪嬪埆浜烘墍寮鍙戠殑緋葷粺鐨勫厛榪涚殑涓闈€傝繖閲屽寘鎷埆浜虹殑寮鍙戞濊礬錛屽疄鐜版椂鎵閲囩敤鐨勭粨鏋?/span>
*
鏃跺父鎰熷埌鑷繁灝嗚娣樻卑錛岀粡甯稿煁鎬ㄨ嚜宸辯殑涓嶅姫鍔?/span>
*
鐭ラ亾鑷繁緙哄皯浠涔?/span>
*
寮鴻揩鑷繁鍋氫竴浜涜嚜宸變笉鍠滄鍋氱殑浜嬫儏錛屾瘮濡傝鍐欐枃妗?/span>
*
鑳藉鏈夊媷姘旈噸鍐欒嚜宸辨墍寮鍙戠殑緋葷粺錛屼絾褰撲綘閲嶅仛鏃朵綘搴旇閲囧彇鍜屽墠涓嬈′笉鍚岀殑宸ヤ綔鏂瑰紡鍜屾柟娉曪紝鍚﹀垯閲嶅仛灝辨病鏈夊繀瑕?/span>
*
灝嗛棶棰樼畝鍗曞寲鑰屼笉鏄鏉傚寲
*
灝嗙淮鎶ゆ椂浼氫駭鐢熺殑涓閮ㄥ垎闂杞Щ鍒板紑鍙戞椂鎴栨槸璁捐鏃舵潵瑙e喅
*
鏈夋椂鍊欎篃涓嶅Θ闂棶鑷繁錛氭垜涓嶅仛寮鍙戞椂鍘誨仛浠涔?/span>
*
鍧氭寔涓鴻嚜宸卞仛姣忓懆鐨勫紑鍙戣鍒掞紝鍦ㄤ簨鎯呮病鏈夊仛瀹屼互鍓嶄笉瑕佽交鏄撹漿縐昏嚜宸辯殑娉ㄦ剰鍔?/span>
*
灝藉彲鑳藉鐨勫皢浣犳墍鍋氱殑鏁欑粰鍒漢錛屽洜涓轟綘鏈変竴澶╁彲鑳戒笉鍐嶈礋璐h繖涓郴緇?/span>
*
鍋氫簨涓瀹氳鏈夊鏈夌粓錛岄櫎闈炴槸鏈変笉寰楀凡鐨勭悊鐢卞惁鍒欎笉瑕佸湪宸ヤ綔瀹屾垚鍓嶆彁鍓嶇寮
*
涓嶈灝嗕綘涓哄叕鍙稿仛鐨勪笢瑗垮甫璧幫紝浣犲洜璇ュ甫璧扮殑鏄紑鍙戠粡楠屽拰瀵瑰紑鍙戠殑璁よ瘑鑰屼笉鏄唬鐮佸拰浜у搧
* 鎰熷埌绱椂灝變紤鎭竴涓嬶紝緇欒嚜宸辨斁涓亣涔熸棤濡紝姣曠珶浜轟笉鏄満鍣?/span>
聽聽聽璁ょ湡鑰冭檻涓涓嬶紝寰楀埌鏈鏈夊ぉ璧嬬殑欏圭洰寮鍙戜漢鍛樼殑鏈浣蟲柟娉曟槸鍩瑰吇錛岃岄潪璐拱銆?br />
銆銆鍦ㄩ槄璇繪湁鍏蟲晱鎹峰紑鍙戠殑鏉愭枡鏃訛紝鎴戝彂鐜幫紝鏃犺鏄紶緇熺殑杞歡寮鍙戞妧鏈紝榪樻槸鏁忔嵎鏂規硶錛岄兘瑕侀珮搴︿緷璧栫啛緇冪殑寮鍙戜漢鍛樻墠鑳界‘淇濇垚鍔熴傝繖涓浜嬪疄璁╂垜瑙﹀姩銆傜敱浜庤澶氬洜绱犵殑褰卞搷錛屽叿鏈夌浉浼肩粡鍘嗙殑寮鍙戜漢鍛樼殑琛ㄧ幇姘村鉤鍗寸浉宸緢澶э紝榪欑偣宸蹭負浜轟滑鎵鎺ュ彈錛涙墍浠ヤ漢浠浼樼鐨勫紑鍙戜漢鍛樻瘮杈冨叧娉ㄤ篃灝變笉瓚充負濂囦簡銆傚敖綆″姝わ紝涓涓垨涓灝忕兢寮鍙戜漢鍛橈紝鍒╃敤鈥滆嫳闆勬ā寮忊濆紑鍙戯紝閫氳繃浠栦滑鐨勫鐚簿紲炰笌鍧氶煣姣呭姏錛岃繕鏄畬鎴愪簡璁稿寮鍙戝伐浣溿?br />
銆銆寰堟槑鏄撅紝鎴戜滑闇瑕佷紭縐鐨勫紑鍙戜漢鍛樸備絾闂鏄紝鍒板摢鍘繪壘浼樼鐨勫紑鍙戜漢鍛樺憿錛?br />
銆銆鍗佸嚑騫存潵鎴戜竴鐩村弬涓庢嫑鑱樺伐浣滐紝鎴戝彲浠ユ涓嶈繜鐤戝湴鍛婅瘔浣狅細鏈夊彲鑳芥壘鍒版渶浼樼鐨勫紑鍙戜漢鍛橈紝浣嗘槸鍙兘鎬т笉澶с傝繖涓嶆槸涓浠跺鏄撶殑浜嬶紝鍗充嬌璇誨畬涓鍗冧喚綆鍘嗭紝鍙兘涔熷彧鑳芥壘鍒頒竴涓や釜鐪熸浼樼鐨勫紑鍙戜漢鍛樸?br />
銆銆璁ょ湡鑰冭檻涓涓嬶紝浣犱細鍙戠幇錛屽彧鏈夐氳繃鍩瑰吇錛岃屼笉鏄喘涔幫紝鎵嶈兘寰楀埌鏈浼樼鐨勫紑鍙戜漢鍛樸?br />
銆銆浠涔堥犲氨鏈浼樼鐨勫紑鍙戜漢鍛橈紵
銆銆鍏充簬鏄粈涔堥犲氨鏈浼樼鐨勫紑鍙戜漢鍛橈紝澶у鎸佷笉鍚岀殑鐪嬫硶銆備笉綆℃槸鏁忔嵎榪樻槸浼犵粺鐨勫紑鍙戞妧宸ч兘闇瑕佸紑鍙戜漢鍛樻嫢鏈夌◢寮備簬浜虹殑涓滆タ銆備絾鏄紝鏃犺寮鍙戜漢鍛樺簲鐢ㄥ摢縐嶆妧宸э紝榪欓兘褰掔粨涓轟竴涓瘝錛氭濊冦?br />
銆銆浣嶄簬Bloom璁ょ煡鎶鑳芥暀鑲茬洰鏍囧垎綾繪渶搴曞眰鐨勬槸鐭ヨ瘑銆傚嵆鍥炴兂錛堟垨璇嗗埆錛夋暟鎹笌淇℃伅銆傚簲鐢ㄥ湪寮鍙戞柟闈紝榪欏氨鎰忓懗鐫璇嗗埆C#璇硶鎴栧洖鎯沖嚭鎵ц寰幆鐨勬紜娉曘?br />
銆銆浣嶄簬璁ょ煡鍒嗙被鏈欏跺眰鐨勬槸緇煎悎涓庤瘎浼般傜患鍚堟寚鑳藉鍚堟垚涓嶅悓鐨勫洜绱犱互褰㈡垚鍏ㄦ柊鐨勮В鍐蟲柟妗堛傝岃瘎浼版槸鎸囧瑙傚康銆佹柟娉曟垨鏉愭枡鍋氬嚭鍒ゆ柇鐨勮兘鍔涖傚湪宸ヤ綔榪囩▼涓紝寮鍙戜漢鍛橀渶瑕佷笉鏂湴搴旂敤榪欎簺楂樺眰嬈$殑璁ょ煡鑳藉姏銆?br />
銆銆璁稿浜鴻涓猴紝涓庢弿榪拌鐭ヨ繃紼嬬殑宸紓鐩告瘮錛屽皢榪欎竴瑙傚康琛ㄨ揪涓烘濊冩洿涓鴻嚜鐒躲傞氬父錛屽楂樺眰嬈$殑瑙傚康錛堜緥濡傚浣曠患鍚堢墖孌墊潵褰㈡垚瑙e喅鏂規錛夋墍鍋氱殑鎬濊冭秺澶氾紝寮鍙戜漢鍛樺氨鏇翠紭縐銆?br />
銆銆嫻峰簳鎹為拡
銆銆鍦ㄥ畬鍏ㄦ斁寮冩嫑鑱橈紙璐拱錛夋渶浼樼鐨勫紑鍙戜漢鍛樹箣鍓嶏紝鎴戜滑鍏堥氳繃媯楠屼笓涓氭妧鑳芥潵浜嗚В涓涓嬫嫑鑱樿繃紼嬨傛垜渚嬭鍏簨鍦板搴旇仒寮鍙戣亴浣嶇殑鍊欓変漢榪涜浜嗕竴嬈″彛澶存祴璇曘傜敱浜庢垜闈㈣瘯鐨勫ぇ澶氭暟寮鍙戜漢鍛橀渶瑕佽兘澶熺啛緇冨湴鎿嶄綔鏁版嵁搴擄紝鎴戦棶浠栦滑涓涓畝鍗曠殑闂錛?br />
銆銆緇欎綘涓涓甫瀹㈡埛id鍩熶笌鍚嶇О鐨勫鎴瘋〃錛屼互鍙婁竴涓甫搴忓彿id錛屽鎴穒d涓庡叾瀹冪粏鑺傜殑搴忓彿绱㈠紩琛紝鐢ㄤ粈涔堟煡璇㈠彲榪斿洖涓嶅甫搴忓彿鐨勫鎴瘋〃錛?br />
銆銆姝ら棶棰樼殑絳旀闇瑕佸簲鐢ㄥ閮ㄨ繛鎺ワ紙outer join錛夌煡璇嗐傦紙鍦⊿QL-87璇硶涓紝浣犲彲浠ュ簲鐢?=錛屼絾榪欎竴絳旀姝f棩鐩婂皯瑙併傦級鎴戠殑闈炴寮忕粺璁¤〃鏄庯紝絳斿姝ら棶棰樼殑浜烘暟鍦?0%浠ヤ笅銆傚鉤鍧囨潵璇達紝鎴戦潰璇曠殑寮鍙戜漢鍛樻嫢鏈夊ぇ涓撳鍘嗭紝鏈?鍒?騫寸殑宸ヤ綔緇忛獙銆備絾鏄紝鎹垜鐨勮瀵燂紝澶氬勾鐨勫伐浣滅粡楠屼笌浠栦滑鏄惁絳斿姝ら棶棰樺叧緋諱笉澶с?br />
銆銆瀵規垜鑰岃█錛屾棤鍔涘洖絳旀闂琛ㄦ槑寮鍙戜漢鍛樺茍涓嶅畬鍏ㄤ簡瑙QL鎵瑕佹眰鐨勪互闆嗗悎涓哄熀紜鐨勯昏緫鏂瑰紡銆傛垜璁や負榪欐槸涓涓紭縐寮鍙戜漢鍛樼殑鍩烘湰鎶鑳姐?br />
銆銆鍙︿竴涓棶棰樻洿鏈夎叮錛屽洜涓哄畠娌℃湁姝g‘絳旀錛?/strong>
銆銆
浣犳渶鍠滄寰蔣.NET涓殑鍝」鍔熻兘錛?br />
銆銆鏄庢樉鍦幫紝浣犲彲浠ュ湪榪欎釜闂涓彃鍏ヤ換浣曟妧鏈傞棶棰樼殑絳旀鍙互娓呮鍦板憡璇変綘寮鍙戜漢鍛樼殑鎬濊冩柟鍚戙傚鏋滃畠鍛婅瘔鎴戞槸IntelliSense錛堝府鍔╀綘璁板繂瀵硅薄涓庢柟娉曠晫闈㈢殑Visual Studio鍔熻兘錛夛紝鎴戝氨鐭ラ亾浠栦滑涓昏鍏沖績濡備綍灝嗕唬鐮佸姞鍏ョ紪杈戝櫒錛岃繖騫朵笉鏄紭縐寮鍙戜漢鍛樼殑鎬濊冩柟寮忋傞『渚胯涓涓嬶紝濡傛灉浠栦滑緇欏嚭閭d釜絳旀錛屼粬浠彲鑾峰緱鈥滃姞鍑燴濄傦紙鍙︿竴鍑伙紵鍗斥滀綘榪樺枩嬈㈠摢欏瑰姛鑳斤紵鈥濓級
銆銆鎴戝湪瀵繪壘涓綾昏〃鏄庝粬浠鍦ㄦ濊冩枃鏈紪杈戞浠ュ鐨勪簨鎯呯殑絳旀銆傛垜鍦ㄥ鎵捐繖鏍風殑絳旀錛氣滃洜涓鴻繍琛屾椂闂寸被鍨嬬殑淇℃伅錛屽彲緙栧啓鐏墊椿浠g爜鐨勮兘鍔涖傗濊繖鏍風殑絳旀琛ㄦ槑浠栦滑瀵瑰伐浣滆繘琛屼簡娣卞叆鎬濊冿紝榪欐槸鎴愪負鏈浼樼鐨勫紑鍙戜漢鍛樼殑鍩烘湰鏉′歡銆?br />
銆銆鈥滀綘鏈涓嶅枩嬈粈涔堬紵鈥濊繖涓棶棰樺悓鏍峰瘜浜庡惎紺恒傗滃繕璁癈#涓殑鍒嗗彿鈥濊繖鏍風殑絳旀璁╂垜鎬鐤戝欓夊紑鍙戜漢鍛樻槸鍚﹁揪鍒版紜殑鎬濊冨眰嬈°傗滄棤鍔涙湁鏁堝簲鐢ㄥ瀮鍦炬敹闆嗗櫒鈥濊繖鏍風殑絳旀琛ㄦ槑浠栦滑鏃笉浜嗚В騫沖彴鐨勯渶瑕侊紝涔熺己涔忓鐞嗗鏉傞棶棰樼殑緇忛獙銆?br />
銆銆闂鈥滀綘鏈鍠滄/涓嶅枩嬈粈涔堬紵鈥濈殑鍥炵瓟姣擲QL闂鐨勫洖絳旇濂藉緱澶氾紝浣嗕粛鐒跺茍涓嶄箰瑙傘傚弬鍔犻潰璇曠殑寮鍙戜漢鍛橈紝瓚呰繃70%鍥炵瓟鐨勬槸鐞愮鐨勯棶棰橈紝鍏跺畠10%宸﹀彸鐨勭瓟妗堣〃鏄庝粬浠涔堢紪鐮佺殑姘村鉤涓嶉珮錛岃涔堢己涔忛珮灞傛鐨勬濊冦?br />
銆銆鏈緇堢殑緇撴灉琛ㄦ槑錛岃鎵懼埌鏈浼樼鐨勫紑鍙戜漢鍛樺嚑涔庢槸涓嶅彲鑳界殑浜嬫儏銆傚疄闄呬笂錛屾垜涔熷彲鑳藉彧鎷涜仒鍒?鍒?涓彲縐頒箣涓烘渶浣沖紑鍙戜漢鍛樼殑浜恒?br />
銆銆
鍩瑰吇浼樼鐨勫紑鍙戜漢鍛?br />
銆銆鎵懼埌鏈夋綔璐紝鍗沖ソ濂囧績寮恒佷釜鎬уソ瀛︾殑寮鍙戜漢鍛樿鏇村鏄撲竴浜涖傝繖浜涘紑鍙戜漢鍛樼‘瀹炲笇鏈涘湪鑷繁涓庝粬浜虹殑鐢熸椿涓彂鎸ラ噸瑕佺殑浣滅敤銆備粬浠彲鑳藉茍涓嶄簡瑙e叧緋繪暟鎹簱錛屼絾浠栦滑涔愪簬瀛︿範銆備粬浠甫鏉ュ涔犵殑鐑儏錛岃鍛ㄥ洿鐨勪漢鍏呮弧媧誨姏銆?br />
銆銆鍦ㄨ澶氭満鏋勶紝榪欑鐑儏鍗翠互鏈嶄粠鐨勫悕涔夊彈鍒板帇鍒躲傗滄垜浠竴鏍烽偅鏍峰仛鈥濈殑蹇冩佹墦娑堜簡浠諱綍鏀瑰杽鐘跺喌鐨勫皾璇曘傚洜姝わ紝寮鍙戜漢鍛樺父甯告劅鍒板洶鎯戙傚洜涓虹粍緇囦竴鏂歸潰澹版槑甯屾湜緇勫緩涓栫晫綰х殑寮鍙戝洟闃燂紙姣忎釜緇勭粐閮藉笇鏈涙嫢鏈夎繖鏍風殑鍥㈤槦錛夛紱鍙︿竴鏂歸潰錛屼粬浠張涓嶆効鎰忓仛鍑哄彉闈┿?br />
銆銆浣嗘槸錛屾垜浠彲浠ラ噰鍙栬鍔紝浠ヤ繚璇佹柊寮鍙戜漢鍛樼殑騫插姴涓庢湡鏈涗笉浼氬彈鍒板帇鍒躲備互涓嬫槸鎴戝氨鍩瑰吇浼樼寮鍙戜漢鍛樻彁鍑虹殑涓浜涘緩璁細
銆銆鎸囧錛?/strong>鎸囧畾涓涓甯堟潵甯姪寮鍙戜漢鍛樸傝繖涓漢蹇呴』鏄竴涓祫娣卞紑鍙戜漢鍛橈紝寮鍙戞潈濞佹垨鍏沖績鍥㈤槦鍜岃繘紼嬫敼鍠勩佷箰浜庡姪浜虹殑鏋勬灦甯堛傝繖涓漢涓嶅簲鏄紑鍙戜漢鍛樼殑鐩存帴棰嗗鎴栫粡鐞嗭紙濡傛灉鍙兘鐨勮瘽錛夈傛寚瀵間氦璋堝簲璇ヤ互寮鍙戜漢鍛橈紝鑰屼笉鏄粍緇囩殑闇姹備負涓績銆?
銆銆浠g爜瀹℃煡錛?/strong>浠g爜瀹℃煡鏄彁楂樺紑鍙戣兘鍔涚殑鏈夋晥鎵嬫銆備絾寰堝緇勭粐鍗存瀬灝戣繖鏍峰仛銆傚彟澶栵紝浜轟滑寰堝皯鎶婂畠褰撲綔鏄涔犳満浼氾紝鑰屾妸瀹冨綋浣滆船浣庡紑鍙戜漢鍛樼殑鏃舵満銆傝榪涜浠g爜瀹℃煡錛屾妸瀹冨綋浣滃煿璁笌鏁欒偛錛岃岄潪鍘嬪埗鐨勬墜孌點?
銆銆娓愯繘浣撻獙錛?/strong>鍚戝紑鍙戜漢鍛樻彁渚涘閲忓垎閰嶆潵榧撳姳浠栦滑涓嶆柇鎴愰暱銆傜敱浜庢垜浠棤娉曟帶鍒跺皢鏉ョ殑欏圭洰錛岃繖鍙兘鏄渶闅句互鎵ц鐨勬柟娉曘備絾鏄紝鎻愪緵灝藉彲鑳藉鐨勬笎榪涘垎閰嶇粨鏋勫皢浼氬彇寰楅暱鏈熷洖鎶ャ?
銆銆瀛︿範鎸戞垬錛?/strong>闄や簡娓愯繘鍒嗛厤浠ュ錛岃繕瑕佹壘鍑哄叾瀹冩柟寮忔縺鍔卞紑鍙戜漢鍛樺涔犲敖鍙兘澶氱殑鐭ヨ瘑錛屽嵆浣胯繖浜涚煡璇嗕笉鑳界珛鍗寵搗浣滅敤銆備緥濡傦紝濡傛灉浣犳湁涓瀹剁綉緇滃紑鍙戝晢搴楋紝榧撳姳寮鍙戜漢鍛樺涔犳櫤鑳藉鎴鳳紙Smart Client錛夋妧鏈紝浠ュ府鍔╁紑鍙戜漢鍛樺吇鎴愬涔犱範鎯?
銆銆鍐呴儴鍩瑰吇
銆銆灝界浣犳兂涓轟笅涓涓」鐩壘鍒頒紭縐鐨勫紑鍙戜漢鍛橈紝浣嗕紭縐鐨勫紑鍙戜漢鍛樺茍涓嶅鏄撴壘鍒般傞」鐩殑鎴愬姛涓昏榪樻槸渚濋潬鐜板湪鍥㈤槦閲岀殑寮鍙戜漢鍛樸備粬浠秺浼樼錛屼綘鎴愬姛鐨勬満浼氬氨瓚婂ぇ銆傛壘鍒版妧鏈啛緇冪殑鍙潬浜烘墠鏉ュ畬鎴愪綘鐨勯渶姹傝偗瀹氫細寰堝洶闅俱傝嚜宸卞煿鍏誨紑鍙戜漢鍛橈紝鏄幏寰椾綘鎵闇瑕佺殑寮鍙戜漢鍛樺敮涓鐜板疄鐨勬柟娉曘?/p>
鑷畾涔夌殑綾諱粠鏌愮鎰忎箟涓婃潵璁詫紝涔熸槸涓縐嶇敤鎴瘋嚜瀹氫箟鐨勬暟鎹紝褰㈠struct銆?br />鍩轟簬姝よ冭檻錛屽畬鍏ㄥ彲浠ヤ粠闈濵FC鎵╁睍DLL涓鍏ラ潪MFC鐨勭敤鎴瘋嚜瀹氫箟鐨勭被銆?/font>
鏂規濡備笅錛?br />1) 棣栧厛寤虹珛涓涓狣LL( WIN32 DLL)宸ョ▼錛屽垱寤哄ご鏂囦歡*.dll錛岃嚜瀹氫箟涓涓被錛?br />鍦ㄧ被鐨勫墠闈㈡坊鍔?__declspec(dllexport)"鍏抽敭瀛楋紝琛ㄧず璇ュ伐紼嬪埌澶勮繖涓被銆?br />渚嬪: class __declspec(dllexport) myClass ...
2) 鍦ㄥ叾瀹炵幇鏂囦歡涓紝娣誨姞澶存枃浠?#include "*.h""錛屽茍瀹炵幇鐩稿簲鐨勭被瀹炵幇閮ㄥ垎銆?/font>
3) 緙栬瘧鎵ц鐢熸垚*.dll鏂囦歡錛屽皢鍏禖OPY鍒板簲鐢ㄦ祴璇曞伐紼嬬殑鎵ц鐩綍涓?debug/release)
涓嬶紝COPY DLL宸ョ▼鐨勫ご鏂囦歡*.h鍒板簲鐢ㄦ祴璇曞伐紼嬬殑鐩綍涓嬶紝娣誨姞榪涢」鐩腑錛屽茍灝嗗叾涓殑
"__declspec(dllexport)"淇敼涓?__declspec(dllimport)"銆?/font>
4) 鍦ㄥ叾瀹炵幇鏂囦歡涓坊鍔犲ご鏂囦歡"#include "*.h""錛岀劧鍚庡鍏跺鍏ョ殑綾昏繘琛岀浉搴旂殑鎿嶄綔銆?/font>
5) 緙栬瘧榪愯嫻嬭瘯紼嬪簭錛屼究鍙互瀹炵幇綾葷浉鍏崇殑鎿嶄綔銆?/font>
NOTE: 瀵逛簬闈欐?鍔ㄦ侀摼鎺ュ埌MFC鐨勮鍒橠LL涔熷彲浠ヨ揪鍒板悓鏍風殑鏁堟灉錛屽鍏ヨ嚜瀹氫箟鐨勭被銆?/font>
1錛?span style="FONT: 7pt 'Times New Roman'">聽 灝?/span> scbarg.h 錛?/span> scbarg.cpp 錛?/span> sizecbar.h 錛?/span> sizecbar.cpp 錛?/span> mybar.h 錛?/span> mybar.cpp 鏂囦歡 copy 鍒頒綘鐨勫伐紼嬬洰褰曚笅錛屾墦寮 vc 錛屽皢榪欏嚑涓枃浠舵坊鍔犺繘宸ョ▼銆?/span>
2錛?span style="FONT: 7pt 'Times New Roman'">聽 鎵撳紑 stdafx.h 鏂囦歡錛屽湪鍏朵腑鍔犲叆錛?/span> #include "sizecbar.h" 錛?/span> #include "scbarg.h" 銆?/span>
3錛?span style="FONT: 7pt 'Times New Roman'">聽 涓?/span> CmainFrame 綾繪坊鍔犳垚鍛樺彉閲忥細 CMyBar聽聽聽聽聽聽聽 m_wndMyBar 銆?/span>
4錛?span style="FONT: 7pt 'Times New Roman'">聽 閲嶈澆 CMainFrame::DestroyWindow() 錛屽湪鍏朵腑鍔犲叆
聽聽聽聽聽聽 CString sProfile(_T("BarState"));
聽聽聽聽聽聽 m_wndMyBar.SaveState(sProfile);
SaveBarState(sProfile);
5錛?span style="FONT: 7pt 'Times New Roman'">聽 淇敼 CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 濡備笅錛?/span>
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
聽聽聽聽聽聽 if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
聽聽聽聽聽聽聽聽聽聽聽聽聽 return -1;
聽聽聽聽聽聽
聽聽聽聽聽聽 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
聽聽聽聽聽聽聽聽聽聽聽聽聽 | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
聽聽聽聽聽聽聽聽聽聽聽聽聽 !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 TRACE0("Failed to create toolbar\n");
聽聽聽聽聽聽聽聽聽聽聽聽聽 return -1;聽聽聽聽聽 // fail to create
聽聽聽聽聽聽 }
聽
聽聽聽聽聽聽 if (!m_wndStatusBar.Create(this) ||
聽聽聽聽聽聽聽聽聽聽聽聽聽 !m_wndStatusBar.SetIndicators(indicators,
聽聽聽聽聽聽聽聽聽聽聽聽聽 聽 sizeof(indicators)/sizeof(UINT)))
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽 TRACE0("Failed to create status bar\n");
聽聽聽聽聽聽聽聽聽聽聽聽聽 return -1;聽聽聽聽聽 // fail to create
聽聽聽聽聽聽 }
聽聽聽聽聽聽
if (!m_wndMyBar.Create(_T("My Bar"), this, 123))
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽TRACE0("Failed to create mybar\n");
聽聽聽聽聽聽聽聽聽聽聽return -1;聽聽聽聽聽 // fail to create
聽聽聽聽聽聽 }
聽聽聽聽聽聽 // TODO: Delete these three lines if you don't want the toolbar to
聽聽聽聽聽聽 //聽 be dockable
聽聽聽聽聽聽
m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |
聽聽聽聽聽聽 CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
聽聽聽聽聽聽 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
聽聽聽聽聽聽
m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);
聽聽聽聽聽聽 EnableDocking(CBRS_ALIGN_ANY);
聽聽聽聽聽聽 DockControlBar(&m_wndToolBar);
聽聽聽聽聽聽
DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT);
聽聽聽聽聽聽
CString sProfile(_T("BarState"));
聽聽聽聽聽聽聽if (VerifyBarState(sProfile))
聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽m_wndMyBar.LoadState(sProfile);
聽聽聽聽聽聽聽聽聽聽聽LoadBarState(sProfile);
聽聽聽聽聽聽聽}
聽聽聽聽聽聽 return 0;
}
娉細綰㈣壊瀛椾綋閮ㄥ垎涓烘墍鍔犲唴瀹廣?/font>
6錛?span style="FONT: 7pt 'Times New Roman'">聽 鍦ㄢ滄煡鐪嬧濊彍鍗曚笅娣誨姞鑿滃崟欏?/span> mybar 錛岃鍏?/span> id 涓猴細 ID_VIEW_MYBAR.
7錛?span style="FONT: 7pt 'Times New Roman'">聽 涓哄叾娣誨姞 CMainFrame::OnViewMybar() 錛?/span> CMainFrame::OnUpdateViewMybar(CCmdUI* pCmdUI) 鍑芥暟錛屽唴瀹逛負錛?/span>
void CMainFrame::OnViewMybar()
{
聽聽聽聽聽聽 // TODO: Add your command handler code here
聽聽聽聽聽聽 BOOL bShow = m_wndMyBar.IsVisible();
聽聽聽聽聽聽 ShowControlBar(&m_wndMyBar, !bShow, FALSE);
}
void CMainFrame::OnUpdateViewMybar(CCmdUI* pCmdUI)
{
聽聽聽聽聽聽 // TODO: Add your command update UI handler code here
聽聽聽聽聽聽 pCmdUI->Enable();
聽聽聽聽聽聽 pCmdUI->SetCheck(m_wndMyBar.IsVisible());
}
緙栬瘧榪愯鍗沖彲錛屽鏋滀綘鎯蟲敼鍙?/span>
workshop
涓殑
cedit
鎴愬憳鍙橀噺錛堝鏈緥
workshop
涓殑鏍戯級錛屽彧闇鏀瑰彉
mybar
涓殑浠g爜鍗沖彲銆?br />涓嬭澆榪炴帴錛?font color="#0000ff">CMyBar.rar(http://www.shnenglu.com/zerolee/admin/Files.aspx)