如何在c#中引用c++中的window.h 文件? 如何在C++中打开建好的MFC文件?

c++ \u4e2d\u5f15\u7528windows.h\u5934\u6587\u4ef6\uff0c\u5728c#\u4e2d\u600e\u4e48\u5f15\u7528\u5462\uff1f\u5f88\u6025\u7684\u8bf4\u3002\u6c42\u5927\u5bb6\u5e2e\u5e2e\u5fd9\u3002

C#\u91cc\u9762\u4e0d\u7528\u5f15\u7528\u5934\u6587\u4ef6\uff0c\u53ea\u8981\u5305\u542b\u76f8\u5e94\u7684\u547d\u540d\u7a7a\u95f4\u5c31\u53ef\u4ee5\u4e86\u3002
\u6bd4\u5982\uff1a
using System.Data;

1\u3001\u5728\u6253\u5f00\u7684ie\u6d4f\u89c8\u5668\u7a97\u53e3\u53f3\u4e0a\u65b9\u70b9\u51fb\u9f7f\u8f6e\u56fe\u6807\uff0c\u9009\u62e9\u201cInternet\u9009\u9879\u201d\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a

2\u3001\u5728\u6253\u5f00\u7684Internet\u9009\u9879\u7a97\u53e3\u4e2d\uff0c\u5207\u6362\u5230\u5b89\u5168\u680f\uff0c\u5728\u5b89\u5168\u9009\u5361\u4e2d\u70b9\u51fb\u201c\u81ea\u5b9a\u4e49\u7ea7\u522b\u201d\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a

3\u3001\u5728\u201c\u5b89\u5168\u8bbe\u7f6e-Internet \u533a\u57df\u201d\u754c\u9762\u627e\u5230\u201cJava \u5c0f\u7a0b\u5e8f\u811a\u672c\u201d\u3001\u201c\u6d3b\u52a8\u811a\u672c\u201d\uff0c\u5e76\u5c06\u8fd9\u4e24\u4e2a\u9009\u9879\u90fd\u9009\u62e9\u4e3a\u201c\u7981\u7528\u201d\uff0c\u7136\u540e\u70b9\u51fb\u786e\u5b9a,\u5982\u4e0b\u56fe\u6240\u793a\uff1a

不能引用,因为C#中没有宏定义这个说法.用const就可以了.
public const int GWL_STYLE = -16;
public const int GWL_EXSTYLE = -20;
public const int GWL_USERDATA = -21;
public const int GWL_ID = -12;
public const int DWL_MSGRESULT = 0;
public const int DWL_DLGPROC = 4;
public const int DWL_USER = 8;
[DllImport("user32", EntryPoint="SetWindowLong")] public static extern int SetWindowLongA(int hwnd, int nIndex, int dwNewLong)

然后调用给参数就可以了.通常API的宏在C#中都是用const来声明的

用enum也可以,下面是我对WINDOWS MESSAGE的封装

public enum WindowsMessages
{
WM_ACTIVATE = 0x6,
WM_ACTIVATEAPP = 0x1C,
WM_AFXFIRST = 0x360,
WM_AFXLAST = 0x37F,
WM_APP = 0x8000,
WM_ASKCBFORMATNAME = 0x30C,
WM_CANCELJOURNAL = 0x4B,
WM_CANCELMODE = 0x1F,
WM_CAPTURECHANGED = 0x215,
WM_CHANGECBCHAIN = 0x30D,
WM_CHAR = 0x102,
WM_CHARTOITEM = 0x2F,
WM_CHILDACTIVATE = 0x22,
WM_CLEAR = 0x303,
WM_CLOSE = 0x10,
WM_COMMAND = 0x111,
WM_COMPACTING = 0x41,
WM_COMPAREITEM = 0x39,
WM_CONTEXTMENU = 0x7B,
WM_COPY = 0x301,
WM_COPYDATA = 0x4A,
WM_CREATE = 0x1,
WM_CTLCOLORBTN = 0x135,
WM_CTLCOLORDLG = 0x136,
WM_CTLCOLOREDIT = 0x133,
WM_CTLCOLORLISTBOX = 0x134,
WM_CTLCOLORMSGBOX = 0x132,
WM_CTLCOLORSCROLLBAR = 0x137,
WM_CTLCOLORSTATIC = 0x138,
WM_CUT = 0x300,
WM_DEADCHAR = 0x103,
WM_DELETEITEM = 0x2D,
WM_DESTROY = 0x2,
WM_DESTROYCLIPBOARD = 0x307,
WM_DEVICECHANGE = 0x219,
WM_DEVMODECHANGE = 0x1B,
WM_DISPLAYCHANGE = 0x7E,
WM_DRAWCLIPBOARD = 0x308,
WM_DRAWITEM = 0x2B,
WM_DROPFILES = 0x233,
WM_ENABLE = 0xA,
WM_ENDSESSION = 0x16,
WM_ENTERIDLE = 0x121,
WM_ENTERMENULOOP = 0x211,
WM_ENTERSIZEMOVE = 0x231,
WM_ERASEBKGND = 0x14,
WM_EXITMENULOOP = 0x212,
WM_EXITSIZEMOVE = 0x232,
WM_FONTCHANGE = 0x1D,
WM_GETDLGCODE = 0x87,
WM_GETFONT = 0x31,
WM_GETHOTKEY = 0x33,
WM_GETICON = 0x7F
//...太长了不发了
}

C#和Window.h没有任何牵扯了
它可以用相对简单的方式调用WindowsAPI
请参照:
http://msdn.microsoft.com/zh-cn/library/26thfadc.aspx
比如: MessageBox这个API就可以这样声明下:
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr MessageBox(int hWnd, String text,
String caption, uint type);

然后就可以按照普通的C#函数来调用了(摘选自: http://msdn.microsoft.com/zh-cn/library/42b9ea93.aspx)

把c++的文件编译成标准备动态链接库,然后用c#去调这个链接库就行了。
直接不可以引用。

  • 濡備綍鍦–#涓皟鐢–/C++ DLL涓殑鏂规硶
    绛旓細// 澹版槑鍛藉悕绌洪棿锛岄潪蹇呴』int _tmain(int argc, _TCHAR* argv[]){ printf("hello world"); ClassLibrary1::Class1 ^c = gcnew ClassLibrary1::Class1(); //娉ㄦ剰涓瀹氳鐢 ^ , 涓瀹氳鐢╣cnew c->Name = "\nxignxianghong"; printf("%s\n", c->Name); c->helloW...
  • c璇█濡備綍鍦涓涓嚱鏁颁腑鍘昏幏鍙栧彟涓涓嚱鏁扮殑鍙橀噺
    绛旓細鏂规硶1.鍋氭垚鍏ㄥ眬閲 鏂规硶2.浣跨敤浼犲潃鐨勬柟寮忥紝灏&c浣滀负鍙傛暟浼犻掔粰鍑芥暟a 涓嶈繃绗2绉嶆柟娉曢渶瑕佹敞鎰忎竴涓媍鐨勭敓鍛芥湡锛屼笉瑕佸湪鍑芥暟涓殑c宸茬粡閲婃斁浜嗭紝鍦╝涓繕浣跨敤锛岃繖鏍蜂細閫犳垚寮傚父
  • 璇烽棶鍦╟璇█涓濡備綍杈撳嚭鐧惧垎鏁?
    绛旓細鍙鍦ㄦ牸寮忔帶鍒剁閲岃緭鍏2涓 %% 灏卞彲浠ヤ簡锛屼緥濡傦細include <stdio.h> int main(){ int a=90;printf("%d%%\n",a);return 0;} 杩欐牱灏变細鍦ㄥ睆骞曚笂寰楀埌 90
  • 鍦–璇█涓濡備綍杈撳嚭绌烘牸?
    绛旓細绌烘牸鍙互鐩存帴杈撳叆锛屼緥濡係ystem.out.println(" ");鑰屽鏋滅敤String琛ㄧず閭d簺绗﹀彿鐨勮瘽锛岀┖鏍肩洿鎺ュ氨鏄痋t灏辫銆俓\ 鍙嶆枩鏉燶' 鍗曞紩鍙'\" 鍙屽紩鍙"\uxxxx 浠ュ崄鍏繘鍒舵寚瀹歎nicode瀛楃杈 \dxxx 浠ュ叓杩涘埗鎸囧畾Unicode瀛楃杈撳嚭 \b 鍊掗涓涓瓧绗 \f 鎹㈤〉 \n 鎹㈣ \r 鍏夋爣绉昏嚦琛岄 \t 璺虫牸锛堜竴涓猅AB閿級...
  • 璇烽棶鍦╟璇█涓濡備綍杈撳嚭鐧惧垎鏁?
    绛旓細鎶婇渶瑕佽緭鍑虹殑鏁板瓧涔樹互100鍐嶈緭鍑轰竴涓櫨鍒嗗彿 姣斿锛歞ouble a=0.5555555;printf("杈撳嚭涓涓櫨鍒嗘暟%f%%\n",a*100);娉ㄦ剰锛氬湪printf閲岀櫨鍒嗗彿涔熻浣跨敤%%杞箟銆俰nclude <stdio.h> int main (void) { float r=0.1523;printf ("%.2f%%\n",r*100);getch ();return 0;} ...
  • 鍦–璇█涓濡備綍浣跨敤bool绫诲瀷
    绛旓細1.娣诲姞澶存枃浠#include "stdio.h"鍜#include "windows.h"銆2.鍦ㄤ富鍑芥暟閲屽畾涔変竴涓竷灏旂被鍨嬪彉閲忥紝鍐檅ool judge = false;3.鎹㈣鍐檖rintf("%d\n",judge);璇ヨ鍙ワ紝琛ㄧず杈撳嚭甯冨皵鍙橀噺(C璇█閲屼笉鑳界洿鎺ヨ緭鍑哄竷灏斿肩殑false鍜宼rue锛屽彧鑳界敤鏁存暟0鍜1浠f浛)銆4.鐐瑰嚮鍙瑰彿杩愯銆備唬鐮佹竻鍗曪細include "stdafx.h"#...
  • 鍦╟璇█涓濡備綍瀹炵幇鍑芥暟妯℃澘
    绛旓細閭d箞,灏辨槸璇村彲浠ュ埄鐢╲oid *. void *鎰忔寚鏈寚瀹氱被鍨嬶紝涔熷彲浠ョ悊瑙d负浠绘剰绫诲瀷銆傚叾浠栫被鍨嬬殑鎸囬拡鍙互鐩存帴璧嬪肩粰void *鍙橀噺锛屼絾鏄痸oid *鍙橀噺闇瑕佸己鍒剁被鍨嬭浆鎹负鍏跺畠鎸囬拡绫诲瀷銆傝繖涓浉淇″ぇ瀹堕兘鐭ラ亾銆傞偅涔堜笅闈互涓涓畝鍗曠殑棰樼洰涓轰緥锛屾潵鎺㈣濡備綍鍦–璇█涓疄鐜版ā鏉垮嚱鏁般 鏂规硶1锛氬埄鐢╲oid *. 鍦ㄧ湅涓嬮潰鐨勬簮绋...
  • c璇█涓,濡備綍鍦鑷繁杈撳叆涓涓换鎰忔暟涔嬪悗,浠庤緭鍏ユ暟瀛楁渶鍚庝竴浣嶅紑濮,_鐧 ...
    绛旓細浣犵殑杩欎釜闂闅剧偣鍦ㄤ簬鍒ゆ柇杈撳叆鐨勬暟鏄灏戜綅鐨勩傛垜杩欓噷杩愮敤浜嗕竴涓皢鏁拌浆鎹㈡垚瀛楃鏁扮粍锛坰printf鍑芥暟锛夛紝鐒跺悗鐢╯trlen鍑芥暟绠楀嚭杩欎釜int鍨嬬殑鏁版湁澶氬皯浣嶃傚悗闈㈠啀鍒╃敤涓涓瓧绗︽暟缁勬潵鎺ユ敹淇敼鍚庣殑鏁帮紝鍐嶇敱瀛楃涓茶浆鎴愭暟瀛楀氨濂姐傚叿浣撹浠g爜銆備唬鐮佸湪linux绯荤粺涓 gcc缂栬瘧鍣ㄤ笅杩愯閫氳繃锛岀粨鏋滃涓嬨傚湪vs涓嬪悓鏍峰彲浠ラ氳繃 ...
  • 鍦╟璇█涓 瀛楃涓濡備綍鍘诲畾涔?鏈夊嚑绉嶅畾涔夋柟娉
    绛旓細闇瑕佸噯澶囩殑鏉愭枡鍒嗗埆鏈夛細鐢佃剳銆C璇█缂栬瘧鍣ㄣ1銆侀鍏堬紝鎵撳紑C璇█缂栬瘧鍣紝鏂板缓涓涓垵濮.cpp鏂囦欢锛屼緥濡傦細test.cpp銆2銆佸湪test.cpp鏂囦欢涓紝杈撳叆C璇█浠g爜锛歝har a[10] = "hello";char b[] = "hello";char *c = "hello";printf("%s%s%s", a, b, c);3銆佺紪璇戝櫒杩愯test.cpp鏂囦欢锛屾鏃堕氳繃...
  • C璇█,濡備綍鍦瀛愬嚱鏁颁腑鍐欎竴涓3*3浜岀淮鏁扮粍,缁欎富鍑芥暟璋冪敤!!
    绛旓細鍦ㄥ瓙鍑芥暟鐢宠浜岀淮鏁扮粍锛屼富鍑芥暟浣跨敤锛屽彲浠ョ敤鍔ㄦ佺敵璇枫傛柟娉曚笉姝竴绉嶏紝鎴戣繖閲岀敤鎸囬拡鐨勬寚閽堝疄鐜颁簩缁存暟缁勩備簩缁存暟缁勯櫎浜嗚鍒楋紝鏈韩鍦板潃涔熸槸杩炵画鐨勶紝浠庣涓琛岀涓鍒楃殑鍏冪礌鍦板潃++锛屽彲浠ュ彇鍑烘墍鏈夊厓绱犮傛墍浠ユ垜杩欓噷鍏堢敵璇蜂簡瀹屾暣鐨勮繛缁湴鍧銆俰nclude<stdio.h>#include<malloc.h>int ** sr(void){ int i,j; ...
  • 扩展阅读:c++编程 ... c c++ c#的异同 ... c++中<< ... c#菜鸟教程 ... python和c++学哪个好 ... c# c c++ ... c++教程 ... c和c#和c++的区别 ... c#难还是c++难 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网