这真的是获取实例函数的正确地址的唯一方法:
typedef CBitmap * (CDC::* SelectObjectBitmap)(CBitmap*);
SelectObjectBitmap pmf = (SelectObjectBitmap)&CDC::SelectObject;
Run Code Online (Sandbox Code Playgroud)
首先,必须创建一个typedef,然后必须使用它来强制编译器在获取其地址时选择正确的重载方法?
是否没有更自然,更自包含的语法,例如:
SelecdtObjectBitmap pmf = &CDC::SelectObject(CBitmap*);
Run Code Online (Sandbox Code Playgroud)
我经常在我的代码中使用ScopeGuard.一个显而易见的用途是确保首先将任何临时CDC对象选入给定DC,然后在范围退出时删除,即使在特殊情况下也使我的代码无泄漏 - 同时清理写入的代码(愚蠢的多个退出路径并尝试/ catch等尝试处理从给定CDC中删除任何选定对象).
因此,我目前被迫做的更完整的示例如下:
// get our client rect
CRect rcClient;
GetClientRect(rcClient);
// get the real DC we're drawing on
PAINTSTRUCT ps;
CDC * pDrawContext = BeginPaint(&ps);
// create a drawing buffer
CBitmap canvas;
canvas.CreateCompatibleBitmap(pDrawContext, rcClient.Width(), rcClient.Height());
CDC memdc;
memdc.CreateCompatibleDC(pDrawContext);
//*** HERE'S THE LINE THAT REALLY USES THE TYPEDEF WHICH i WISH TO ELIMINATE ***//
ScopeGuard guard_canvas = MakeObjGuard(memdc, (SelectObjectBitmap)&CDC::SelectObject, memdc.SelectObject(&canvas)); …Run Code Online (Sandbox Code Playgroud) 可能重复:
"int i"和"int i" 之间有什么区别 ?
const int*,const int*const,int const*之间的区别是什么?
有什么区别
char* getInput();
Run Code Online (Sandbox Code Playgroud)
和
char *getInput();
Run Code Online (Sandbox Code Playgroud) 一些数据库应用程序开发人员更喜欢在主表单之前通过编辑项目源文件来创建数据模块
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TDM, DM);
Application.CreateForm(TMainForm, MainForm);
{...}
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
问题是 - 为什么?什么是利弊?
我正在研究实现基于整数的幂函数pow(int,int)的最有效方法.
这是他们得到的答案.
我试图让它适用于C#,但我正在将int与bool和所有其他东西进行比较...而且我无法弄清楚他们为什么要比较而且1这不是那个意思和真实吗?有什么意义呢.它看起来效率不高.
int ipow(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
Run Code Online (Sandbox Code Playgroud)
}
我在比较中做exp ==但是1仍然在那里,我不知道我是否需要它.
有人知道"if(exp&1)"中的1是什么吗?或者如果我需要它?我看不出用途.
我有这些实体
class Foo{
Set<Bar> bars;
}
class Bar{
Foo parent;
String localIdentifier;
}
Run Code Online (Sandbox Code Playgroud)
有了这个映射(对不起,没有注释,我很老式):
<class name="Foo">
...
<set name="bars" cascade="all-delete-orphan" lazy="false" inverse="true">
<key>...</key>
<one-to-many class="Bar"/>
</set>
</class>
<class name="Bar">
...
<property name="localIdentifier" column="local_identifier"/>
<many-to-one name="parent" column="parent_id" />
</class>
Run Code Online (Sandbox Code Playgroud)
我对2列也有一个唯一约束:local_identifier和parent_id(不是每个列上的唯一约束,但是包含两者的单个唯一约束,例如,不允许具有相同父和相同localIdentifier的2行)
alter table bar add constraint unique_bar unique (parent_id, local_identifier)
Run Code Online (Sandbox Code Playgroud)
这个代码使用它们:
//foo is persistent, foo id = 1
Bars bars = foo.getBars();
bars.clear(); // bars contained 1 item [parent_id = 1, local_identifier = "a"]
Bar newBar = new …Run Code Online (Sandbox Code Playgroud) 我有一个很漂亮的问题!
我创建了一个带有updatepanel和该updatepanel上的触发器的ASP.NET页。触发器每30秒更新一次面板。
问题在于,当触发器更新面板时,IE8会从我正在使用的任何其他程序中获取焦点。有人对此有解决方案吗?
这发生在IE8中;在Firefox中,我对此没有任何问题。
这是带有updatepanel的计时器:
<asp:Timer ID="Timer1" runat="server" Interval="30000" ontick="Timer1_Tick">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
<asp:AsyncPostBackTrigger ControlID="ButtonSubmit" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
Loading....
</ProgressTemplate>
</asp:UpdateProgress>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder><br />
<div class="clear"></div>
<asp:Label ID="Label4" runat="server" Text="Grid not refreshed yet.">
</asp:Label><br />
<asp:Label ID="Label5" runat="server" Text="(Grid Will Referesh after Every 30 Sec)" Font-Bold="true"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
在计时器刻度上,我仅执行以下操作:
protected void Timer1_Tick(object sender, EventArgs e)
{
Label4.Text = "Grid Refreshed at: " + DateTime.Now.ToLongTimeString();
}
Run Code Online (Sandbox Code Playgroud)
提前致谢。 …
我试图抓住手机已知行号前面的任何数字,如果它们存在(在Perl中).没有破折号,只有数字.
例如,假设我知道行号将始终为8675309. 8675309可能有也可能没有前导数字,如果是,我想捕获它们.前导数字的数量并没有真正的限制.
$input $digits $number
'8675309' '' '8675309'
'8008675309' '800' '8675309'
'18888675309' '1888' '8675309'
'18675309' '1' '8675309'
'86753091' not a match
Run Code Online (Sandbox Code Playgroud)
/8675309$/ 这将匹配如何捕获一个正则表达式中的前数字?
也许我正在以错误的方式接近这个并且应该在动作过滤器中做所有事情,在这种情况下,请指出我正确的方向!
我正在设置我的ASP.NET MVC应用程序,以便一个HomeController Index操作提供两种不同类型的内容,如下所示:
if(Request.IsAuthenticated)
return View("IndexRegistered");
else
return View("IndexGuest");
Run Code Online (Sandbox Code Playgroud)
这很好,但是我想把它分成三个,所以管理员会得到他们自己的页面......
if(Request.IsAuthenticated)
{
if( /* user is a member of administrators */)
return View("IndexAdministrator");
else
return View("IndexCustomer");
}
else
return View("IndexGuest");
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这个谜题的遗失吗?
algorithm ×1
asp.net ×1
asp.net-ajax ×1
asp.net-mvc ×1
c ×1
c# ×1
c++ ×1
datamodule ×1
delphi ×1
hibernate ×1
java ×1
math ×1
maven ×1
maven-2 ×1
mfc ×1
mysql ×1
perl ×1
phone-number ×1
php ×1
pointers ×1
regex ×1
templates ×1
usergroups ×1
winapi ×1